/*
** 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(1);
}