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

    Ordinare una matrice in ordine decrescente

    Dovrei scrivere una funzione che mi permetta di stampare a video una matrice,ordinando le sue righe in modo decrescente rispetto ai valori delle loro somme.
    Ho provato in questo modo(e ovviamente non funziona xD)

    codice:
     
    // R è il vettore che contiene la somma delle righe
    for(int i=0;i<3;i++)
    {
    	for(int j=0;j<4;j++)
    	{
    		if(R[i]<R[i+1])
    		{   int tmp;
    		    tmp=x[i][j];
    			x[i][j]=x[i+1][j];
    			x[i+1][j]=tmp;	
    		}
    	cout << x[i][j] << " ";}
    e capisco anche qual è il problema(cioè che in questo modo se una riga deve "salire di due o più posti" non può farlo) e ho provato a risolverlo facendo un ciclo while che racchiuda il doppio ciclo for con condizione(R[i]<R[i+1]),ma in questo modo mi stampa matrici all'infinito,come se non fosse mai soddisfatta la condizione...ma non capisco il perchè,visto che dovrebbero bastare due doppi cicli for per ordinarla(la matrice è
    5 6 1 25
    10 22 2 12
    55 11 3 1 )
    P.S. ho già controllato che la somma delle righe sia stata effettuata correttamente

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Come hai dichiarato x? Nel caso sia dichiarato con un'istruzione del genere
    codice:
    num_type x[N][M];
    semplicemente non puoi farlo. Questo è dovuto a come C e C++ implementano gli array multidimensionali.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Le dimensioni della matrice le ho dichiarate con due costanti

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Non cambia assolutamente nulla. Il problema sta in come il C++ implementa gli array multidimensionali! Puoi risolvere copiando gli elementi o utilizzando dei jagged arrays...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.