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:
- stampa a video le due matrici;
- verifica se la somma degli elementi della diagonale principale della prima matrice e uguale alla somma degli elementi della diagonale principale della seconda matrice;
- verifica se il prodotto degli elementi della diagonale principale della prima matrice e uguale al prodotto degli elementi della diagonale principale della seconda matrice
- ordina le righe delle due matrici con il bubble sort e stampa a video la matrice;
- 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;
}