Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve, sto facendo un giochino dove bisogna indovinare un numero.
Quanto questo finisce chiedo all'utente se vuole giocare ancora..
Se preme n va tutto correttamente, se preme s invece il ciclo ricomincia ma mi chiede immediatamente se voglio giocare ancora..premendo ancora s si esce.
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nRand, nTent=1, nUser, nMax=1000, nMaxcp, nMin=0, nMincp, flag=0;
do
{
system("clear");
srand(time(0));
nRand =rand()%(nMax-nMin+1);
printf("Ho generato un numero random, indovinalo!\n");
nMaxcp = nMax;
nMincp = nMin;
while(flag == 0 && nTent <= 10)
{
printf("\nTentativo %d di 10.", nTent);
printf("\nInserisci un numero fra %d e %d: ", nMin, nMax);
scanf("%d", &nUser);
if(nUser == nRand)
{
printf("\nHai indovinato il numero!\n");
printf("Hai impiegato %d tentativi.\n\n", nTent);
flag =1;
}
else
{
if(nTent == 10)
{
printf("\nNon hai indovinato.\n");
printf("Hai terminato i tentativi!\n");
printf("Il numero era %d.\n\n", nRand);
}
else
{
printf("\nNon hai indovinato. Ritenta.\n");
if(nUser > nRand)
{
if(nUser > nMax)
{
nMax = nMaxcp;
}
else
{
nMax = nUser;
nMaxcp = nMax;
}
}
if(nUser<nRand)
{
if(nUser < nMin)
{
nMin = nMincp;
}
else
{
nMin = nUser;
nMincp = nMin;
}
}
}
nTent++;
}
}
printf("\nVuoi giocare ancora? (S/N): ");// Il problema è qui.
getchar();
}while(getchar()=='s'||getchar()=='S');
system("clear");
return0;
}
Perchè??
Ultima modifica effettuata da Luk3 il 14/11/2010 alle 23:06
dovresti provare e risettare le variabili al loro valore di default quando selezioni la prima S.......in modo da "ripercorrere" le istruzioni del ciclo nelle stesse "condizioni" della prima volta.
poi dovresti svuotare il buffer del canale di input. Quando inserisci un char, quello rimane nel buffer fino a quando non lo svuoti. Quando tu inserisci la seconda S, questa si va ad accostare alla prima e quindi il ciclo finisce in ogni caso perchè avresti ss.....capito?