Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it L'avatar di tridi9
    Registrato dal
    Apr 2002
    Messaggi
    346

    Problemi ordinamento. [ c ]

    codice:
    do{
    	 non_scambio =  true;
    for (i = 0; i < k; i++)
    	{
    	 if (articoli_letti[i].prezzo > articoli_letti[i+1]prezzo)
    		{
    		 non_scambio = false;
    		 temp= articoli_letti[i];
    		 articoli_letti[i] = articoli_letti[i+1];
    		 articoli_letti[i]=temp;
    		}
    	 }
    
    }while (! non_scambio );
    Ciao ragazzi.Sto impazzendo a fare sto esercizio.
    Non capisco, ma perchè mi cicla all'infinito ?
    Devo ordinare il mio array che è composto da una

    struct libro{
    int cod;
    float prezzo;
    char titolo[20];
    char autore[20];
    };


    Uso lo stesso codice per ordinare ma in usando il campo cod.
    Uno è un int e funziona l'altro è un float e non funziona.
    Ho provato a fare un cambio di tipo ma niente.:master:
    Avete qualche idea ?

    ........‘’’........
    .......(o o).......
    ----ooO-(_)-Ooo----

  2. #2
    prova
    do{
    non_scambio = true;
    for (i = 0; i < k; i++)
    {
    if (articoli_letti[i].prezzo > articoli_letti[i+1].prezzo)
    {
    non_scambio = false;
    temp= articoli_letti[i];
    articoli_letti[i] = articoli_letti[i+1];
    articoli_letti[i+1]=temp;
    }
    }

    }
    while (! non_scambio );
    ...Ignorance is bliss...

  3. #3
    Utente di HTML.it L'avatar di tridi9
    Registrato dal
    Apr 2002
    Messaggi
    346
    Grazie ma nulla da fare.

    ........‘’’........
    .......(o o).......
    ----ooO-(_)-Ooo----

  4. #4
    fai così, prendi un foglio di carta, simula il programma e vedi xkè looppa..
    ...Ignorance is bliss...

  5. #5
    codice:
    for (i = 0; i < k; i++)
    Posto che k sia la lunghezza dell`array, devi arrivare a k-2, non a k-1, altrimenti con i+1 oltrepassi i limiti, prendendo in considerazione dei valori misteriosi. Quindi:

    codice:
    for (i = 0; i < k - 1; i++)
    Tentar non nuoce. :bubu:

  6. #6
    Utente di HTML.it L'avatar di tridi9
    Registrato dal
    Apr 2002
    Messaggi
    346
    Caspita ero quasi convinto che andasse.
    Mi sembra davvero inspiegabile.
    Dal debug mi sembra che è la condizione del while che non viene soddisfatta, il che mi lascai davvero davvero sbogottito :master:

    ........‘’’........
    .......(o o).......
    ----ooO-(_)-Ooo----

  7. #7
    do{
    non_scambio = true;
    for (i = 0; i < k; i++)
    {
    if (articoli_letti[i].prezzo > articoli_letti[i+1]prezzo)
    {
    non_scambio = false;
    temp= articoli_letti[i];
    articoli_letti[i] = articoli_letti[i+1];
    articoli_letti[i]=temp;
    }
    }

    }while (!false );

    prova così
    http://www.navimel.com

    La disumanità del computer sta nel fatto che, una volta programmato(da me) e messo in funzione, FA QUEL CAZZO CHE VUOLE!!!

  8. #8
    Utente di HTML.it L'avatar di tridi9
    Registrato dal
    Apr 2002
    Messaggi
    346
    OK ora ci provo

    ........‘’’........
    .......(o o).......
    ----ooO-(_)-Ooo----

  9. #9
    }while (!false );

  10. #10
    correggo:

    codice:
    do{ 
    non_scambio = true; 
    for (i = 0; i < k; i++) 
    { 
    if (articoli_letti[i].prezzo > articoli_letti[i+1]prezzo) 
    { 
    non_scambio = false; 
    temp= articoli_letti[i]; 
    articoli_letti[i] = articoli_letti[i+1]; 
    articoli_letti[i]=temp; 
    } 
    } 
    
    }while (non_scambio != false )


    r0x la prossima volta invece di piangere, correggi, mi avresti risparmiato un post......

    http://www.navimel.com

    La disumanità del computer sta nel fatto che, una volta programmato(da me) e messo in funzione, FA QUEL CAZZO CHE VUOLE!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.