Gli esercizi
Testi e soluzioni di alcuni esercizi
Terne consecutive
Genera in modo casuale una matrice di numeri interi minori di 10. Stampa le colonne che contengono tre elementi consecutivi che abbiano valori successivi.
/* ** terne.c ** ** Genera in modo casuale una matrice di numeri interi minori di 10. ** Stampa le colonne che contengono tre elementi consecutivi che ** abbiano valori successivi. ** ** Marco Liverani (liverani@mat.uniroma3.it) - Marzo 2001 */ #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX 100 /* * Generazione casuale di una matrice */ void genera_matrice(int x[MAX][MAX], int n, int m) { int i, j; srand((unsigned)time(NULL)); for (i=0; i<n; i++) for (j=0; j<m; j++) x[i][j] = rand()%10; return; } /* * Verifica la proprieta' sulla colonna di indice 'c' della matrice. * Restituisce 1 se la proprieta' e' verificata, 0 altrimenti. */ int verifica(int x[MAX][MAX], int c, int n) { int i, r=0; for (i=0; i<=n-3 && r==0; i++) { if (x[i][c] == x[i+1][c]-1 && x[i+1][c] == x[i+2][c]-1) r = 1; } return(r); } /* * funzione per la stampa della colonna di indice 'c' della matrice. */ void stampa_colonna(int x[MAX][MAX], int c, int n) { int i; for (i=0; i<n; i++) printf("%d ", x[i][c]); printf("\n"); return; } /* * Funzione per la stampa della matrice. */ void stampa_matrice(int x[MAX][MAX], int n, int m) { int i, j; for (i=0; i<n; i++) { for (j=0; j<m; j++) printf("%4d ", x[i][j]); printf("\n"); } return; } /* * funzione principale (main) */ int main(void) { int i, n, m, mat[MAX][MAX]; printf("Numero di righe e di colonne: "); scanf("%d %d", &n, &m); genera_matrice(mat, n, m); stampa_matrice(mat, n, m); for (i=0; i<m; i++) { if (verifica(mat, i, n)) stampa_colonna(mat, i, n); } return(0); }