Ciao ragazzi, come da titolo di seguito trovi l’algoritmo per verificare se una matrice quadrata è diagonale.
Testo dell’esercizio:
Data in input una matrice quadrata, con elementi interi compresi tra 0 e 9, stabilisca se essa è diagonale.
Soluzione dell’esercizio sia l’input che l’output sono fatti mediante file
[c]
#include <stdio.h>
#include <stdlib.h>
void crea_file(void);
int read_matrice(void);
int main(){
crea_file();
int diag;
diag=read_matrice();
FILE *ou;
ou=fopen("output.txt","w");
if (!diag){
fprintf(ou,"La matrice non è diagonale.");
}else{
fprintf(ou,"La matrice è diagonale.");
}
return 0;
}
int read_matrice(){
int dim;
FILE *fp;
fp=fopen("input.txt","r");
if (fp){
fscanf(fp,"%d",&dim);
int matrice[dim][dim],i,j;
for (i=0;i<dim;i++){
for (j=0;j<dim;j++){
fscanf(fp,"%d",&matrice[i][j]);
printf("%d ",matrice[i][j]);
if (i==j){
if (matrice[i][j]==0){
fclose(fp);
return 0; //matrice non diagonale. in quanto un valore della diagonale principale è nullo
}
}else{
if (matrice[i][j]!=0){
fclose(fp);
return 0; //un valore al di fuori della diagonale è diverso da 0
}
}
}
printf("\n");
}
return 1;
}else{
printf("Impossibile leggere il file\n");
}
fclose(fp);
}
void crea_file(){
FILE *p;
p=fopen("input.txt","w");
if (!p){
printf("Impossibile aprire il file");
}else{
fprintf(p,"4\n");
fprintf(p,"5 0 0 0\n");
fprintf(p,"0 8 1 0\n");
fprintf(p,"0 0 2 0\n");
fprintf(p,"0 0 3 1\n");
}
fclose(p);
}
[/c]

Mi piace..
però in questa maniera ti crea sempre una matrice fissa..!!..
xd
dovresti secondo me far inserire la matrice all’utente..
ed eventualmente memorizzarla in un file..