Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    67

    ordinare matrici linguaggio c

    Salve sto provando a scrivere un programma ke mi permetta di ordinare in ordine crescente una matrice. Vi faccio un esempio:
    ho la matrice 5 2 3
    4 8 9
    1 10 6



    e devo ottenere 1 2 3
    4 5 6
    8 9 10

    Uso il linguaggio c con qualche istruzione del c++(cin cout)
    Questo è ciò che ho scritto fino ad ora per la funzione ordina


    void ordina(int m[100][100], int c,int r)
    {int v[100000],i,j,temp;
    for(i=0;i<r;i++)
    {for(j=0;j<c;j++)
    v[j]=m[i][j];

    cout<<v[i]<<"\t";

    }


    }

    In pratica sto cercando di copiare tutti gli elementi della matrice in un vettore per poi ordinarlo con il metodo bubble sort...aspetto un vostro aiuto grazie

  2. #2
    Quello che chiedi non ha senso ...
    In ogni caso la matrice può essere vista come un vettore.
    Quindi:
    codice:
    	int matrice[DIM_MAX][DIM_MAX];
    	int i, j, temp;
    	int *ptr;
    
    	for (i = 0; i < DIM_MAX; i++)
    		for (j = 0; j < DIM_MAX; j++)
    			{
    			printf ("Inserire l'elemento %d - %d: ", i, j);
    			scanf ("%d%*c", &(matrice[i][j]));
    			}
    	
    	ptr = & (matrice[0][0]);
    	
    	for (i = 0; i < DIM_MAX*3; i++)
    		for (j = i+1; j < DIM_MAX*3; j++)
    			if (ptr[i] > ptr[j])
    				{
    				temp = ptr[i];
    				ptr[i] = ptr[j];
    				ptr[j] = temp;
    				}
    	
    	for (i = 0; i < DIM_MAX; i++)
    		{
    		for (j = 0; j < DIM_MAX; j++)
    			printf ("%d ", matrice[i][j]);
    		printf ("\n");
    		}
    Provare per credere
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    67
    e se invece vorrei ordinare secondo il valore delle colonne?
    esempio:
    2 1 3
    8 9 10
    4 5 6
    diventa:
    1 2 3
    9 8 10
    5 4 6
    come faccio? Premetto che ho gia scritto la procedura leggi_mat che legge gli elementi della matrice da tastiera...e preferisco usare cin e cout...grazie!!!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Originariamente inviato da c_nicola
    e se invece volessi ordinare secondo il valore delle colonne?
    Se ho capito dall'esempio che hai mostrato, devi ordinare ogni riga.

    Quindi, prendi tutti gli elementi di ogni riga e li ordini come se fossero tanti vettori distinti ...

    Prova ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Originariamente inviato da Xaratroom
    Quello che chiedi non ha senso ...
    In ogni caso la matrice può essere vista come un vettore.
    Quindi:
    codice:
    	int matrice[DIM_MAX][DIM_MAX];
    	int i, j, temp;
    	int *ptr;
    
    	for (i = 0; i < DIM_MAX; i++)
    		for (j = 0; j < DIM_MAX; j++)
    			{
    			printf ("Inserire l'elemento %d - %d: ", i, j);
    			scanf ("%d%*c", &(matrice[i][j]));
    			}
    	
    	ptr = & (matrice[0][0]);
    	
    	for (i = 0; i < DIM_MAX*3; i++)
    		for (j = i+1; j < DIM_MAX*3; j++)
    			if (ptr[i] > ptr[j])
    				{
    				temp = ptr[i];
    				ptr[i] = ptr[j];
    				ptr[j] = temp;
    				}
    	
    	for (i = 0; i < DIM_MAX; i++)
    		{
    		for (j = 0; j < DIM_MAX; j++)
    			printf ("%d ", matrice[i][j]);
    		printf ("\n");
    		}
    Provare per credere
    Attenzione...se DIM_MAX è diverso da 3, questa parte di codice non va più bene:
    codice:
    for (i = 0; i < DIM_MAX*3; i++)
    	for (j = i+1; j < DIM_MAX*3; j++)
    Forse volevi dire:
    codice:
    for (i = 0; i < DIM_MAX*DIM_MAX; i++)
    	for (j = i+1; j < DIM_MAX*DIM_MAX; j++)
    Crestron Control Systems and AMX Control Systems Programmer

  6. #6
    Originariamente inviato da sotoli
    Forse volevi dire:
    codice:
    for (i = 0; i < DIM_MAX*DIM_MAX; i++)
    	for (j = i+1; j < DIM_MAX*DIM_MAX; j++)
    si
    Experience is what you get when you don’t get what you want

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.