Questo loop `do ... mentre non funziona
-
27-10-2019 - |
Domanda
int sc1,sc2,a=0,b=0;
do
{
printf("Give the scores\n");
scanf("%d %d", &sc1,&sc2);
//===============================================
if (sc1 > sc2)
a+=1;
else if (sc1<sc2)
b+=1;
else if (sc1==sc2)
printf("tie\n");
//===============================================
if (a>b)
printf("team 1 is in the lead\n");
else if (a<b)
printf("team 2 is in the lead\n");
else if (b==a)
printf("tie\n");
}
while((a==3) || (b==3));
//===============================================
if (a==3)
printf("team 1 got the cup");
else
printf("team 2 got the cup");
Penso di aver scritto qualcosa di sbagliato. L'ho cercato molto ma non riesco a trovare ciò che non va.
(Una delle due squadre può vincere la Coppa e quella squadra deve avere 3 vittorie)
*altrimenti se (SC1
*altrimenti se (a> b)
Soluzione
Se sto leggendo correttamente la tua domanda, vorresti che la condizione di risoluzione fosse che una delle squadre "A" o "B" ha un punteggio di 3. Tuttavia, nel tuo codice hai scritto nell'unico modo per Può loop è se una delle squadre ha un punteggio di 3. Vuoi:
while( !( a==3 || b == 3) )
Altri suggerimenti
while((a==3) || (b==3));
si aggirerà solo se a
o b
è tre. Se vuoi aspettare fino a quando uno di questi è tre, usa:
while ((a!=3) && (b!=3));
La tua condizione di loop non è corretta. Si ferma presto perché nessuna delle due squadre ha un punteggio di 3. Loop fino a quando l'uno o l'altro non arriva fino a 3:
while((a < 3) && (b < 3));
Fondamentalmente, lo stai dicendo per loop mentre A o B è ancora uguale 3. Il che non è quello che vuoi. Tu vuoi while((a<3) && (b<3))
Il tuo condizionale:
while((a==3) || (b==3));
Afferma che il ciclo continuerà fino a quando a
o b
sono uguali a 3. Sei sicuro che questo sia quello che volevi?