Corso IN110 Algoritmi e Strutture Dati

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);
}

Università degli Studi Roma Tre - Dipartimento di Matematica e Fisica - Corso di laurea in Matematica - Corso di Informatica 1 (IN110)

Author: Marco Liverani - Last modified: Saturday July 13, 2019 - URI: http://www.mat.uniroma3.it/users/liverani/IN1/20010914b.shtml