/* File: mattrian.c */ /* Time-stamp: "2002-05-14 12:40:43 calvanes" */ /* Scopo: uso di array multidimensionali */ /* Legge una matrice quadrata e verifica se e' triangolare superiore (tutti gli elementi al di sotto della diagonale principale sono pari a zero). */ #include <stdio.h> #define DIM 3 void leggiMatrice(int m[DIM][DIM]) { int i, j; printf("Inserire gli elementi di una matrice di interi %dx%d\n", DIM, DIM); for (i = 0; i < DIM; i++) for (j = 0; j < DIM; j++) scanf("%d", &m[i][j]); } void stampaMatrice(int m[DIM][DIM]) { int i, j; for (i = 0; i < DIM; i++) { for (j = 0; j < DIM; j++) printf("%5d", m[i][j]); printf("\n"); } } int triangolareSuperiore(int m[DIM][DIM]) { int i, j; int triang; /* booleana: indica se la matrice e` triangolare superiore */ triang = 1; /* assumiamo che sia triangolare superiore */ for (i = 1; i < DIM; i++) for (j = 0; j < i; j++) if (m[i][j] != 0) /* ho trovato un elemento diverso da 0 */ triang = 0; /* sotto alla diagonale */ /* NON ci deve essere il ramo else */ return triang; /* Per anticipare l'uscita dai cicli durante la verifica si puo` modificare il codice di sopra come segue: triang = 1; for (i = 1; triang && i < DIM; i++) for (j = 0; triang && j < i; j++) if (m[i][j] != 0) triang = 0; Oppure usando l'istruzione break: triang = 1; for (i = 1; triang && i < DIM; i++) for (j = 0; j < i; j++) if (m[i][j] != 0) { triang = 0; break; } */ } int main(void) { int mat[DIM][DIM]; leggiMatrice(mat); printf("La matrice\n"); stampaMatrice(mat); if (triangolareSuperiore(mat)) printf("e` triangolare superiore!\n"); else printf("non e` triangolare superiore!\n"); return 0; }