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

    [C] incremento di variabile

    Ciao ragazzi, dopo aver fatto funzionare la funzione per attraversare il dannato labirinto, stavo smanettando un po su quest ultima e ho visto una cosa:

    Con il codice seguente il programma non funziona:

    void scopriuscita(char matrice[12][12], int x,int y)
    {


    stampa(matrice);

    wait (0.1);
    matrice[x][y]='x';
    if(x==0)
    {
    system("pause");
    return;
    }
    /* dx */
    else
    {
    if(matrice[x][y+1]=='.')
    {
    y++;
    scopriuscita(matrice,x,y);
    }
    // down
    if(matrice[x+1][y]=='.')
    {
    x++;
    scopriuscita(matrice,x,y);
    }
    // left
    if(matrice[x][y-1]=='.')
    {
    y--;
    scopriuscita(matrice,x,y);
    }
    // up

    if(matrice[x-1][y]=='.')
    {
    x--;
    scopriuscita(matrice,x,y);
    }
    matrice[x][y]='.';

    }

    }

    mentre con questo codice funziona:
    void scopriuscita(char matrice[12][12], int x,int y)
    {


    stampa(matrice);

    wait (0.1);
    matrice[x][y]='x';
    if(x==0)
    {
    system("pause");
    return;
    }
    /* dx */
    else
    {
    if(matrice[x][y+1]=='.')
    {
    scopriuscita(matrice,x,y+1);
    }
    // down
    if(matrice[x+1][y]=='.')
    {
    scopriuscita(matrice,x+1,y);
    }
    // left
    if(matrice[x][y-1]=='.')
    {
    scopriuscita(matrice,x,y-1);
    }
    // up

    if(matrice[x-1][y]=='.')
    {

    scopriuscita(matrice,x-1,y);
    }
    matrice[x][y]='.';

    }

    Ora mi chiedo: perche nel primo caso, quando faccio incrementare o decrementare le variabili prima di chiamare la funzione il programma non funziona mentre nel secondo caso quando incremento e decremento direttamente nella chiamata tutto funziona?

    :master: :master: :master: :master: :master: :master:

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] incremento di variabile

    Originariamente inviato da UltraBeginner
    Ora mi chiedo: perche nel primo caso, quando faccio incrementare o decrementare le variabili prima di chiamare la funzione il programma non funziona mentre nel secondo caso quando incremento e decremento direttamente nella chiamata tutto funziona?
    Premetto che non so come deve comportarsi, in generale, il tuo software ma vedo che fai 4 test distinti per up/down/left/right. Per distinti intendo dire che sono (dovrebbero essere) indipendenti, cioè il verificarsi di una delle 4 situazioni non dovrebbe influenzare gli altri test.
    Però quando fai x++ o y++, ecc... tu in realtà influenzi gli altri test!!! Perché hai cambiato il valore di x/y. Quando invece passi x+1, y-1, ecc... alla funzione, non alteri il valore x/y ma passi solo un nuovo valore modificato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa giusto!!!! Non avevo pensato a questa sottigliezza!!!!!!!!!!!!!!!!!!!

    Cmq in generale il mio software (al 90% per ora) e di tipo "didattico", per la precisione sono esercizi del libro "Corso completo di programmazione" di Deitel&Deitel

    Grazie ancora per la dritta!!!!!!!!!!!1

    Saluti!

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.