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

    Ordinamento matrice !!

    Buonasera a tutti !! Ho letto e riletto altri post ma non ho trovato nulla, nel senso che non ci sono soluzioni.
    Semplicemente mi serve capire come ordinare una matrice in c++.
    Ad esempio ho:

    3 1 8
    4 9 2
    5 1 7

    e devo trasformarla in :

    1 3 8
    2 4 9
    1 5 7

    ..come faccio ? se volete possiamo anche arrivarci insieme !

  2. #2
    Ad esempio possiamo cominciare così:

    codice:
    #include <iostream>
    #define max 100
    
    using namespace std;
    
    int main(int argc, char** argv)
    {
    	int i,j,n,m;
    	int a[max][max];
    	
    	//leggi_mat a
    	cout<<"Inserire la dimensione della matrice."<<endl;
    	cout<<"Inserire la dimensione di n: ";
    	cin>>n;
    	cout<<"Inserire la dimensione di m: ";
    	cin>>m;
    	cout<<"Inserire la prima matrice."<<endl;
    	for (i=0;i<n;i++)
    	{
    		for (j=0;j<m;j++)
    		{
    			cout<<"Inserire l'elemento ["<<i<<"]["<<j<<"]: ";
    			cin>>a[i][j];
    		}
    	}
    	
    	cout<<"La matrice inserita è: "<<endl;
    	for(i=0;i<n;i++)
    	{
    		for (j=0;j<m;j++)
    		{
    			cout<<a[i][j]<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Devi solo ordinare ogni riga della matrice se non ho capito male. Per fare questo ci sono diversi algoritmi: il più facile è il bubble sort, il più comodo è il qsort (è già implementato nella libreria standard, algorithm.h se non sbaglio).

    Fai una ricerca sul forum, sicuramente si è già parlato di ordinare un vettore.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Ippo343
    il più comodo è il qsort (è già implementato nella libreria standard, algorithm.h se non sbaglio).
    È in stdlib.h mi pare :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Ho controllato e hai ragione.

    Il che apre un nuovo mistero: ricordo di aver fatto un programma in cui usavo qsort, e ricordo che ho dovuto includere algorithm.h... perchè diamine l'avrò fatto!?
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  6. #6
    Questo è per quanto riguarda un array monodimensionale (funziona correttamente):

    codice:
    	int app;
    	int scambio=1;
    	while (i<n-1 && scambio)
    	{
    	       {
    			scambio = 0;
    			for (j=0; j<n-(i+1);j++)
    				{
    					if (a[j]>a[j+1])
    					{
    					app=a[j];
    					a[j]=a[j+1];
    					a[j+1]=app;
    					scambio=1;
    					}
    				}
    			i++;
    		}
    	}
    Perchè non funziona questo per la matrice bidimensionale?

    codice:
    	int app;
    	int scambio=1;
    	while (i<n-1 && scambio)
    	{
    		for (i=0;i<n;i++)
    		{
    			scambio = 0;
    			for (j=0; j<m-(i+1);j++)
    				{
    					if (a[i][j]>a[i][j+1])
    					{
    					app=a[i][j];
    					a[i][j]=a[i][j+1];
    					a[i][j+1]=app;
    					scambio=1;
    					}
    				}
    			i++;
    		}
    	}

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Sinceramente non ho capito benissimo la modifica che hai fatto, e non ho molto tempo, quindi considera che questo codice che hai postato implementa il bubble sort.

    Perciò, puoi incapsularlo in una funzione:
    codice:
    void bubble_sort(int v[], int n);
    e usarlo su ogni vettore della matrice:

    codice:
    for (i = 0; i < DIM; i++)
    {
        bubble_sort(matrice[i], num);   //num è il numero di elementi di ogni riga
    }
    A questo punto, ti conviene cmq usare il qsort della libreria standard.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

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.