#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
#define size 2
// matriz exemplo para comparaçao
void exemplo(int a, int b, int c[a][b]){
int i,j;
for(i=0;i<a;i++){
for(j=0;j<b;j++){
c[i][j] = 0;
}
}
for(i=0;i<a;i++){
c[i][i] = 1;
}
}
// funçao mostrar matriz
void mostra(int a, int b, int vetor[a][b]){
int i, j;
printf("\n\n Matriz quadrada ");
for(i=0;i<a;i++){
for(j=0;j<b;j++){
if(j==0){
printf("\n");
}
printf(" %d", vetor[i][j]);
}
}
printf("\n\n");
}
// randomizar matriz
void randomizar(int a, int b, int Arr[a][b]){
int j, i;
srand(time(NULL)); // randomize seed
for(i=0;i<a;i++){
for(j=0; j<b;j++){
Arr[i][j] = rand()%size;
}
}
}
int main (void){
int i = 0,j = 0;
int a = 0, b = 0;
FILE *arg;
// a = coluna b = linha
// atribuindo linha e colunas
while(a!=b || (a==0 && b==0)){
//se nao for quadrada
if(a!=b){
printf("\n\nMatriz nao quadrada\n ");
printf("\n\nDigite novamente\n\n ");
}
printf("\nDigite uma Matriz quadrada\n\n");
printf("Digite o numero de Colunas...\n");
scanf("%d", &a);
printf("Digite o numero de Linhas...\n");
scanf("%d", &b);
}
// matriz randomizada
int vetor[a][b];
// matriz exemplo
int c[a][b];
// declarando a matrizes
randomizar(a,b,vetor);
exemplo(a,b,c);
// abrindo arquivo e escrevendo as informaçoes
arg = fopen("arg.txt", "w");
if(arg == NULL){ //testando se o arquivo foi realmente criado
printf("Erro na abertura do arquivo!");
return 1;
}
fprintf(arg, "MATRIZ ALEATORIA\n\n");
for(i=0;i<a;i++){
for(j=0;j<b;j++){
if(j==0){
fprintf(arg, "\n");
}
fprintf(arg, " %d", vetor[i][j]);
}
}
printf("\n\nDados gravados com sucesso!\n\n");
//mostrando matrizes
printf("\n\n******************************************************************");
printf("\n\n\n\nEXEMPLO");
mostra(a,b,c);
printf("\n\n\n\nRANDOMIZADA");
mostra(a,b,vetor);
// Fazer verificaçao se a matriz esta correta e Corrigindo e escrever no .txt se estiver incorreta
int verf=0;
int verf2=0;
for(i=0;i<a;i++){
for(j=0;j<b;j++){
if(vetor[i][j] == c[i][j]){ // verificar igualdade entre as matrizes e adicionar pontos a uma variavel
verf++;
}
}
}
verf = a*b;
printf("\n\n");
if(verf==verf2){
printf("Matriz esta correta. \n\n");
}else{
printf("Matriz esta incorreta, corrigindo... \n\n");
for(i=0;i<a;i++){
for(j=0;j<b;j++){
if(vetor[i][j] != c[i][j]){ // se o valor do local na matriz estiver diverente igualar o valor
vetor[i][j] = c[i][j];
}
}
}
fprintf(arg, "\n");
fprintf(arg, "\n\nMATRIZ ATUALIZADA\n\n");
for(i=0;i<a;i++){
for(j=0;j<b;j++){
if(j==0){
fprintf(arg, "\n");
}
fprintf(arg, " %d", vetor[i][j]);
}
}
printf("\n\nDados gravados com sucesso!\n\n");
}
//mostrando matrizes
printf("\n\n******************************************************************");
printf("\n\n\n\nMATRIZ CORRIGIDA");
mostra(a,b,vetor);
printf("\n\n******************************************************************");
// mostrando oq esta dentro do arquivo
char texto_str[20]; // criando buf
fclose(arg);
arg = fopen("arg.txt", "r");
char arq_most;
fflush(stdin);
printf("\n\nDeseja ver o arquivo gravado? Y or N\n");
scanf("%c", &arq_most);
if(arq_most=='y'){
while(fgets(texto_str, 20, arg) != NULL)
printf("%s", texto_str);
}
fclose(arg);
getch();
}
esse foi o programa que eu fiz em c a um tempo, pode conter coisas que ajudem a fazer algo que deseja fazer.