Corso di Informatica 1 (IN1 - Fondamenti)

Testi e soluzioni di 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(1);
}

Per informazioni e commenti: liverani@mat.uniroma3.it - Torna alla Home page - Ultima modifica: 17 Settembre 2001