PDA

View Full Version : [C] Problema di logica?


-Ivan-
10-10-2005, 22:37
do
{
contari=0;
contaf1=0;
contaf2=0;
contato=0;
contasc=0;
contaav=0;
contain=0;

for(index=2;index<=26;index++)
{
var= rand() % 8;
VettoreGioco[index]=var;
}
for(index=1;index<=26;index++)
{
if(VettoreGioco[index]==1)contari++;
if(VettoreGioco[index]==2)contaf1++;
if(VettoreGioco[index]==3)contaf2++;
if(VettoreGioco[index]==4)contato++;
if(VettoreGioco[index]==5)contasc++;
if(VettoreGioco[index]==6)contaav++;
if(VettoreGioco[index]==7)contain++;
}
}



In teoria secondo il mio perverso ragionamento questo codice dovrebbe venire eseguito fino a che VettoreGioco non è riempito con almeno quattro uni, due due, un tre, quattro quattro, due cinque, due sei e 2 sette.
Non è così?

In realtà non è così, lo so perchè poi ho scritto la parte di codice (sono certo che non ha errori) che mi disegna sullo schermo un numero delle immagini che dovrebbero essere in un numero almeno uguale alle corrispondenze che hanno con i numeri sopra.
Mi sono espresso forse un po' male ma non fa niente, lasciate stare quest'ultima parte se non si capisce e rispondete se potete alla prima domanda.

Gica78R
10-10-2005, 23:37
Allora, partendo dalla domanda piu' facile... per indentare devi usare i tag 'CODE' e non 'QUOTE' :)
Poi ci sono due cosette:
l'indice dell'array parte da 1 e va fino a 26; lo hai dichiarato come array di 27 elementi? senno' c'e' un overflow; inoltre, se la condizione di uscita dal do ... while non e' soddisfatta, prima di ripetere il ciclo non dovresti riazzerare i contatori?

-Ivan-
10-10-2005, 23:43
Ho editato, le dimensioni dle vettore vanno bene, l'indice parte da 2 adesso perchè le prime due caselle devono contenere 0 (che ho messo nella dichiarazione del vettore) perchè sono come caselle di una scacchiera e su quelle non ci deve essere disegnato niente.
Il codice l'ho aggiornato e comunque non mi parte, mi sembra un po' strano a dire la verità.

Ho controllato diverse volte, il ragionamento mi sembra che fili, mi sarei aspettato piuttosto che il programma si bloccasse perchè è difficile che si verifichi la condizione per uscire dal while invece funziona tutto solo che VettoreGioco viene riempito con un nuemero di numeri diversi (scusate il gioco di parole) da quelli che soddisfano la condizione.

Gica78R
10-10-2005, 23:46
Ho editato, le dimensioni dle vettore vanno bene, l'indice parte da 2 adesso perchè le prime due caselle devono contenere 0 (che ho messo nella dichiarazione del vettore) perchè sono come caselle di una scacchiera e su quelle non ci deve essere disegnato niente.
Il codice l'ho aggiornato e comunque non mi parte, mi sembra un po' strano a dire la verità.
EDIT

-Ivan-
11-10-2005, 20:26
up