Accedi

Selection sort v2

PROBLEMA

Scrivere un programma che letta da tastiera una matrice bidimensionale di interi le cui dimensioni sono fornite dall’utente:

  1. stampare a video la matrice inserita dall’utente;
  2. ordinare le righe della matrice(selection sort);
  3. stampare la matrice;
  4. ordinare le colonne della matrice(selection sort);
  5. stampare la matrice.

CODICE SORGENTE

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

int main(int argc, char *argv[]){
 
 int i, j, k;
 int temp;
 int righe, colonne;
 
 printf("Inserire il numero di righe\n>");
 scanf("%i", &righe);
 printf("Inserire il numero di colonne\n>");
 scanf("%i", &colonne);
 
 int a[righe+1][colonne+1];
 
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf("Inserire valore Riga %i colonna %i\n>", i+1, j+1);
   scanf("%i", &a[i][j]);
  }
 }
 system("cls");
 printf("\nPrimo punto\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf("[%i]\t", a[i][j]);
  }
  printf("\n");
 }
 system("PAUSE");
 for(k=0;k<righe;k++){
  for(i=0;i<colonne-1;i++){
   for(j=i+1;j<colonne;j++){
    if(a[k][j]<a[k][i]){
     temp=a[k][i];
     a[k][i]=a[k][j];
     a[k][j]=temp;
    }
   }
  }
 }
 printf("\nTerzo punto\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf("[%i]\t", a[i][j]);
  }
  printf("\n");
 }
 system("PAUSE");
 for(k=0;k<colonne;k++){
  for(i=0;i<righe-1;i++){
   for(j=i+1;j<righe;j++){
    if(a[j][k]<a[i][k]){
     temp=a[i][k];
     a[i][k]=a[j][k];
     a[j][k]=temp;
    }
   }
  }
 }
 printf("\nQuinto punto\n");
 for(i=0;i<righe;i++){
  for(j=0;j<colonne;j++){
   printf("[%i]\t", a[i][j]);
  }
  printf("\n");
 }
 system("PAUSE");
 return 0;
}