23/02/08 18:00
NicobhC
Ciao a tutti, sono uno studente novello di informatica.
Sto scrivendo un programma in C++ che simuli il gioco di battaglia navale, usando una matrice 2D. Carico la matrice 8 x 8 di zeri. Poi alcune celle scelte a caso le inizializzo a 1, 2 e 3. L'utente per colpire inserisce il numero di riga e di colonna della cella scelta. E qua sta il problema: l'utente inserisce il numero di riga r...fin qui tutto ok. poi inserisce quello di colonna c. Ora accade un fatto strano. Mentre il numero di colonna rimane quello che l'utente ha inserito, il numero di riga, quale che sia, si trasforma magicamente in 0, senza operazioni di assegnamento... perché??
Vi includo il pezzo di codice dove avviene il fattaccio:
Grazie a chi mi aiuterà... Ciao
Sto scrivendo un programma in C++ che simuli il gioco di battaglia navale, usando una matrice 2D. Carico la matrice 8 x 8 di zeri. Poi alcune celle scelte a caso le inizializzo a 1, 2 e 3. L'utente per colpire inserisce il numero di riga e di colonna della cella scelta. E qua sta il problema: l'utente inserisce il numero di riga r...fin qui tutto ok. poi inserisce quello di colonna c. Ora accade un fatto strano. Mentre il numero di colonna rimane quello che l'utente ha inserito, il numero di riga, quale che sia, si trasforma magicamente in 0, senza operazioni di assegnamento... perché??
Vi includo il pezzo di codice dove avviene il fattaccio:
case 'c': //colpire { //inserisco coordinate della cella bersaglio r=c=0; do { puts("\nInserisci n* riga della cella da colpire..."); printf("-- Il valore dev'essere compreso in [1, 8]... "); scanf ("%d", &r); } while (r<1 || r>D); r-=1; do { puts("\nInserisci n* colonna della cella da colpire..."); printf("-- Il valore dev'essere compreso in [1, 8]... "); scanf ("%d", &c); } while (c<1 || c>D); c=c-1; //controllo se ho colpito... if (matr[r][c]==0) puts("Bersaglio Mancato|"); else if (matr[r][c]==1) { puts("Colpito e Affondato"); matr[r][c]-=1; } else { puts("Bersaglio Colpito"); matr[r][c]-=1; } //verifico se sono ancora presenti "navi" vinto=true; for (r=0; r<D; r++) for (c=0; c<D; c++) if (matr[r][c]!=0) vinto=false; if (vinto==true) puts("Hai affondato tutte le navi\n\t**Hai vinto!!!**"); break; }
Grazie a chi mi aiuterà... Ciao
aaa