Ordinamento di una matrice..?

di il
4 risposte

Ordinamento di una matrice..?

Qualcuno possibilmente mi spiega come si ordina una matrice?
L'algoritmo che usate è indifferente!

Grazie per la disponibilità

4 Risposte

  • Re: Ordinamento di una matrice..?

    Si più specifico nella domanda, che intendi per 'ordinare' una matrice?
  • Re: Ordinamento di una matrice..?

    E' un esercizio inventato da un amico così, giusto per farmi esercitare...
    Praticamente mi chideva di creare una matrice... Inserire i valori.. Stamparla...
    void main ()
    {  
     int r, c;
            
            printf("Definire riga e colonna\n");
            
            do {
            scanf("%d",&r);
            scanf("%d",&c);
            } while ((r<=0)||(c<=0));
    
            printf ("Inserisci elementi\n");
            
            for (i=0;i<a;i++) {
            for(j=0;j<b;j++) {
    
                scanf("%d",&c[i][j]);
                }
            }
    
            for (i=0;i<a;i++){
            for(j=0;j<b;j++){
    
            printf("%d\t", c[i][j]);
    
                }
                printf("\n");
            }
    
    Poi ordinarla tipo cosi:
    1 2 3 4
    5 6 7 7
    8 8 9 9
    con qualsiasi algoritmo, insertion-sort, selection-sort.. Solo che io non ho mai ordinato una matrice, ho ordinato array, ma ieri non mi voleva proprio funzionare...
  • Re: Ordinamento di una matrice..?

    L'ordinamento della matrice è uguale all'ordinamento dell'array. Questo perché sono la stessa cosa, solo che la dichiariamo diversamente... per comodità.
    
    int array[]={10,20,30,40,50,60,70,80,90};
    int matrice[][3]={{10,20,30},{40,50,60},{70,80,90}};
    
    Sia array che matrice utilizzano la stessa memoria. La prima viene indirizzata direttamente la seconda con un calcolo.
    
    // Entrambi stampano il 4^ Elemento
    printf ("%d\n",matrice[1][1]);
    printf ("%d\n",*(&matrice[0][0]+4));
    
    Ti lascio un ulteriore esempio:
    
    #include <stdio.h>
    #define SIZE 10
    int main ()
    {
    	int x,y,m[SIZE][SIZE];
    	int *ptr=&m[0][0];
    	
    	for (x=0;x<SIZE;x++)
    		for (y=0;y<SIZE;y++)
    				m[x][y]=x*SIZE+y;
    			
    	for (x=0;x<SIZE*SIZE;x++)
    		printf ("m[%d]=%d ",x,*ptr++);
    	
    	printf ("\n");
    	
    	return 0;
    	
    }
    
  • Re: Ordinamento di una matrice..?

    Quindi adoperando qualsiasi tipo di algoritmo di ordinamento che usavo con l'array, per la matrice dovrebbe farlo uguale! Ti ringrazio per il chiarimento =D
Devi accedere o registrarti per scrivere nel forum
4 risposte