Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] BubbleSort per Matrici

    Salve a tutti!!
    Avendo una matrice come questa:

    3 5 1
    7 3 0
    9 5 1

    vorrei ordinarla per colonne, per ottenere questa:

    3 3 0
    7 5 1
    9 5 1


    Potete aiutarmi? Non so da dove cominciareee!! Grazie a tutti^^

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Comincia con il dimensionare la matrice, riempirla con valori di prova e studiare il metodo che hai citato, per una singola colonna

    http://it.wikipedia.org/wiki/Bubble_sort

    Forza ... un po' di impegno ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    odio quando la gente mi dice di mettermi di impegno.

    Se chiedo aiuto è perchè, evidentemente, non ci arrivo e ci ho già provato 100 volte!!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da SergiusXP
    odio quando la gente mi dice di mettermi di impegno.
    Beh ... potrei dirti che odio chi chiede aiuto senza mostrare una linea di codice che "dimostri" quell'impegno ...

    Se chiedo aiuto è perchè, evidentemente, non ci arrivo e ci ho già provato 100 volte!!
    E facci vedere 1 di quelle 100 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    prova questo...

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #define DIM_R 3 //numero righe
    #define DIM_C 3 //numero colonne
    
    int * bubble(int a[], int n); //bubble_sort generico
    void copy_new(int a[][DIM_C], int app[], int column); //copia un vettore nel colonna column della matrice a
    
    int main(void){
    	srand(time(NULL));
    	int matrix[DIM_R][DIM_C];
    	int i, j, z;
    	int *app;
    
    	app=calloc(DIM_R, sizeof(int));
    	
    	/*INIZIALIZZO LA MATRICE CON NUMERI A CASO E LA STAMPO*/
    	for(i=0;i<DIM_R;i++)
            for(j=0;j<DIM_C;j++)
                matrix[i][j]=rand()%DIM_R+1;
    
     		for(i=0;i<DIM_R;i++){
    			printf("\n");
     			for(j=0;j<DIM_C;j++)printf("%d ", matrix[i][j]);		 					   
    		}printf("\n\n");
    	 /*------------------------------------------*/
    			
    	for(j=0;j<DIM_C;j++){			   
    	for(i=0;i<DIM_R;i++){app[i]=matrix[i][j];} //carico in un vettore temporaneo una colonna
      	     app=bubble(app, DIM_R); //ordino il vettore appena ottenuto
    	     copy_new(matrix, app, j); //e lo copio nella colonna j della matrice
    	}
    		
            /*STAMPO LA MATRICE ORDINATA*/
      	for(z=0;z<DIM_R;z++){
    		printf("\n");
    	   	for(j=0;j<DIM_C;j++)printf("%d ", matrix[z][j]);		 					   
    	 }printf("\n\n");
    	 /*--------------------------------*/
    					   
    	free(app);
    	printf("\n");	
    	system("pause");
    	return 0;
    	}
    
    void copy_new(int a[][DIM_C], int app[], int column){
    	 int i;
    	 for(i=0;i<DIM_R;i++){
    	     a[i][column]=app[i];
    	 }
    }
    
    int * bubble(int a[], int n){
        int i, j, tmp;
        
        for(i=1;i<n;i++){
        for(j=1;j<n-i+1;j++){
                         if(a[j-1]>a[j]){
                                      tmp=a[j-1];
                                      a[j-1]=a[j];
                                      a[j]=tmp;
                                      }
                         }
        }
        return a;
    }
    cambia le 2 define se vuoi matrici piu grandi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.