Accedi

Bubble sort v5

PROBLEMA

Scrivere un programma in "C" che acquisiti in maniera randomica I valori interi(compresi tra 1 e 10) di una matrice bidimensionale, le cui dimensioni fornite dall’utente n e m (n diverso da m) restituisce  a video: 

  1. la stampa della matrice; 
  2. ordina le righe con il bubble sort e stampa a video la matrice; 
  3. ordina le colonne con il bubble sort e stampa a video la matrice.

CODICE SORGENTE

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

int main(int argc, char *argv[]){
 //sezione dichiarativa
 int righe, colonne, temp;
 int i, j, k;
 srand(time(NULL));
 int somma_diagonale_1=0, somma_diagonale_2=0;
 int prodotto_diagonale_1=0, prodotto_diagonale_2=0;
 //sezione di input di righe e colonne
 printf("Dimensione righe:\n>");
 scanf("%i", &righe);
 do{
  printf("[!] Diverso da %i\nDimensione colonne:\n>", righe);
  scanf("%i", &colonne);
 }while(colonne==righe);
 //dichiarazione vettori
 int a[righe][colonne];
 int b[righe][colonne];
 //caricamento vettori in maniera casuale
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   a[i][j]=rand()%10+1;
  }
 }
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   b[i][j]=rand()%10+1;
  }
 }
 //output vettori
 printf("\nVettore a\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf(" %i ", a[i][j]);
  }
  printf("\n");
 }
 printf("\nVettore b\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf(" %i ", b[i][j]);
  }
  printf("\n");
 }
 //ordinamento per righe
 for(k=0;k<righe;k++){
  for (i=1; i<colonne; i++){
   for (j=0; j<colonne-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<colonne;k++){
  for (i=1; i<righe; i++){
   for (j=0; j<righe-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;
    }
   }
  }
 }
 //output righe ordinate
 printf("\na - Riordinato Righe\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf(" %i ", a[i][j]);
  }
  printf("\n");
 }
 printf("\nb - Riordinato Righe\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf(" %i ", b[i][j]);
  }
  printf("\n");
 }
 //ordinamento per colonne
 for(k=0;k<righe;k++){
  for (i=1; i<colonne; i++){
   for (j=0; j<colonne-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<colonne;k++){
  for (i=1; i<righe; i++){
   for (j=0; j<righe-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;
    }
   }
  }
 }
 //output colonne ordinate
 printf("\na - Riordinato Colonne\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf(" %i ", a[i][j]);
  }
  printf("\n");
 }
 printf("\nb - Riordinato Colonne\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf(" %i ", b[i][j]);
  }
  printf("\n");
 }
 system("PAUSE");
 return 0;
}