Gli esercizi
Testi e soluzioni di alcuni esercizi
Matrici quadrate
/*
** quadrate.c
**
** Costruire in modo casuale una matrice M di numeri interi
** con n righe ed m colonne (n ed m forniti in input
** dall'utente). Stampare tutte le matrici quadrate contenute
** in M.
**
** Marco Liverani (liverani@mat.uniroma3.it) - Settembre 2001
*/
#include <stdlib.h>
#include <stdio.h>
#define MAX 100
void genera_matrice(int M[MAX][MAX], int n, int m) {
int i, j;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
M[i][j] = rand() % 10;
return;
}
void stampa_matrice(int M[MAX][MAX], int n, int m) {
int i, j;
for (i=0; i<n; i++) {
for (j=0; j<m; j++)
printf("%2d ", M[i][j]);
printf("\n");
}
return;
}
void stampa_quadrate(int M[MAX][MAX], int n, int m) {
int i, j, h, k, dim, massimo, cont=0;
if (n<m)
massimo = n;
else
massimo = m;
for (dim = 2; dim<=massimo; dim++) {
printf("\nMatrici di ordine %d:\n\n", dim);
for (h=0; h<=n-dim; h++) {
for (k=0; k<=m-dim; k++) {
cont++;
printf("Matrice n.%d:\n", cont);
for (i=h; i<h+dim; i++) {
for (j=k; j<k+dim; j++)
printf("%2d ", M[i][j]);
printf("\n");
}
}
}
}
return;
}
int main(void) {
int n, m, mat[MAX][MAX];
printf("Numero di righe: ");
scanf("%d", &n);
printf("Numero di colonne: ");
scanf("%d", &m);
genera_matrice(mat, n, m);
stampa_matrice(mat, n, m);
stampa_quadrate(mat, n, m);
return(0);
}