Accedi

Due matrici di interi NxN

PROBLEMA

Scrivere un programma in “c” che lette da tastiera due matrici nxn di interi, le cui dimensioni sono fornite dall’utente:

  1. stampa a video le due matrici;
  2. verifica se la somma degli elementi della diagonale principale della prima matrice e uguale alla somma degli elementi della diagonale principale della seconda matrice;
  3. verifica se il prodotto degli elementi della diagonale principale della prima matrice e uguale al prodotto degli elementi della diagonale principale della seconda matrice
  4. ordina le righe delle due matrici con il bubble sort e stampa a video la matrice;
  5. ordina le colonne delle due matrici con il selection sort e stampa a video

CODICE SORGENTE

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
 int n, temp;
 int i, j, k;
 int somma_diagonale_1=0, somma_diagonale_2=0;
 int prodotto_diagonale_1=0, prodotto_diagonale_2=0;
 printf("Dimensione n:\n>");
 scanf("%i", &n);
 int a[n][n];
 int b[n][n];
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf("Elemento vettore a (%i,%i)", i+1, j+1);
   scanf("%i", &a[i][j]);
  }
 }
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf("Elemento vettore b (%i,%i)", i+1, j+1);
   scanf("%i", &b[i][j]);
  }
 }
 printf("\nVettore a\n");
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf(" %i ", a[i][j]);
  }
  printf("\n");
 }
 printf("\nVettore b\n");
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf(" %i ", b[i][j]);
  }
  printf("\n");
 }
 printf(">Diangonale principale della matrice a\n");
 for (i=0;i<n;i++){
  for (j=0;j<n;j++){
   if (i==j)
    printf(" %i ", a[i][j]);
   else
    printf("   ");
  }
  printf("\n");
 }
 printf(">Diangonale principale della matrice b\n");
 for (i=0;i<n;i++){
  for (j=0;j<n;j++){
   if (i==j)
    printf(" %i ", b[i][j]);
   else
    printf("   ");
  }
  printf("\n");
 }
 for (i=0;i<n;i++){
  for (j=0;j<n;j++){
   if (i==j)
    somma_diagonale_1=somma_diagonale_1+a[i][j];
  }
 }
 for (i=0;i<n;i++){
  for (j=0;j<n;j++){
   if (i==j)
    somma_diagonale_2=somma_diagonale_2+b[i][j];
  }
 }
 if (somma_diagonale_1==somma_diagonale_2)
  printf("La somma delle due diagonali principali e' uguale\n");
 else
  printf("La somma delle due diagonali principali e' uguale\n");
 for (i=0;i<n;i++){
  for (j=0;j<n;j++){
   if (i==j)
    prodotto_diagonale_1=prodotto_diagonale_1*a[i][j];
  }
 }
 for (i=0;i<n;i++){
  for (j=0;j<n;j++){
   if (i==j)
    prodotto_diagonale_2=prodotto_diagonale_2*b[i][j];
  }
 }
 if (prodotto_diagonale_1==prodotto_diagonale_2)
  printf("Il prodotto delle due diagonali principali e' uguale\n");
 else
  printf("Il prodotto delle due diagonali principali e' uguale\n");
 for(k=0;k<n;k++){
  for (i=1; i<n; i++){
   for (j=0; j<n-i; j++){
    if (a[k][j]>a[k][j+1]){
     temp=a[k][j];
     a[k][j]=a[k][j+1];
     a[k][j+1]=temp;
    }
   }
  }
 }
 for(k=0;k<n;k++){
  for (i=1; i<n; i++){
   for (j=0; j<n-i; j++){
    if (b[k][j]>b[k][j+1]){
     temp=b[k][j];
     b[k][j]=b[k][j+1];
     b[k][j+1]=temp;
    }
   }
  }
 }
 printf("\na - Riordinato Righe\n");
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf(" %i ", a[i][j]);
  }
  printf("\n");
 }
 printf("\nb - Riordinato Righe\n");
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf(" %i ", b[i][j]);
  }
  printf("\n");
 }
 for(k=0;k<n;k++){
  for (i=1; i<n; i++){
   for (j=0; j<n-i; j++){
    if (a[j][k]>a[j+1][k]){
     temp=a[j][k];
     a[j][k]=a[j+1][k];
     a[j+1][k]=temp;
    }
   }
  }
 }
 for(k=0;k<n;k++){
  for (i=1; i<n; i++){
   for (j=0; j<n-i; j++){
    if (b[j][k]>b[j+1][k]){
     temp=b[j][k];
     b[j][k]=b[j+1][k];
     b[j+1][k]=temp;
    }
   }
  }
 }
 printf("\na - Riordinato Colonne\n");
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf(" %i ", a[i][j]);
  }
  printf("\n");
 }
 printf("\nb - Riordinato Colonne\n");
 for(i=0;i<n;i++){
  for(j=0;j<n;j++){
   printf(" %i ", b[i][j]);
  }
  printf("\n");
 }
 system("PAUSE");
 return 0;
}