PDA

Visualizza la versione completa : Primi passi C++ mi serve una mano.


turtwig996
15-10-2014, 21:13
Ciao a tutti, sono nuovo del forum e vi ringrazio in anticipo per il contributo che il html.it e questo forum mi danno da molto tempo.
introduco dicendo che da pochissimo ho iniziato ad interessarmi a C++ dopo che un mio amico mi ha prestato un suo vecchio libro delle superiori. Ho iniziato a dare una letta e a provare a fare qualcosina.
Oggi avevo progettato questo piccolissimo programma (1 domanda di vero o falso).
Avevo intenzione di farlo funzionare così :

Mi viene mostrata sulla console una domanda, io digito V o F , premo invio e saprò se ho fatto giusto o meno.

avevo scritto questo codice:



#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;


int main()
{
string Vero;
string Falso;
string Risposta;

Vero="V";
Falso="F";




cout<<"\nDomanda n.1:\nLa cina e' lo stato piu' esteso del mondo."<<endl;

scanf("%1s",&Risposta);

if (Risposta == Falso){



cout<<"Risposta Esatta"<<endl;
}

else if (Risposta == Vero){


cout<<"Risposta Errata"<<endl;
}
else {


cout << "Risposta non Valida!"<<endl;
}


}


Eseguo il file, digito Falso ma il compilatore mi scrive "Risposta non valida!" ovvero quello che volevo fosse mostrato se il valore assegnato a Risposta non fosse V o F.
è molto probabile sia una stupidaggine data la mia ignoranza in materia.
vi prego di aiutarmi a capire dove sbaglio
Grazie in anticipo a tutti :ciauz::ciauz:

MItaly
15-10-2014, 21:16
Non puoi usare le std::string con scanf, o usi un array di char o usi gli stream C++. In ogni caso, è tutto sicuramente spiegato nei capitoli successivi del tuo libro di C++.

turtwig996
15-10-2014, 21:31
Veramente grazie per le dritte.:love: Sono andato più avanti sfogliando un poco e ho trovato tutto il necessario ho scritto il codice in questo modo:



#include <iostream>
#include <cstdio>


using namespace std;








int main()
{
char Vero = 'V';
char Falso= 'F';

char Risposta;






cout<<"\nDomanda n.1:\nLa cina e' lo stato piu' esteso del mondo."<<endl;

scanf("%1c",&Risposta);

if (Risposta == Falso){



cout<<"Risposta Esatta"<<endl;
}

else if (Risposta == Vero){


cout<<"Risposta Errata"<<endl;
}
else {


cout << "Risposta non Valida!"<<endl;
}




}


Ora funziona... se ci sono altre cose che volete consigliarmi ve ne sarò grato :)

oregon
16-10-2014, 09:33
se ci sono altre cose che volete consigliarmi ve ne sarò grato :)



Tieni presente che non necessariamente si risponde con F ... è possibile anche che l'utente usi la f minuscola ...

turtwig996
17-10-2014, 23:15
Tieni presente che non necessariamente si risponde con F ... è possibile anche che l'utente usi la f minuscola ...

ho risolto con...



if (Risposta=='F' || Risposta == 'f') {

....
}

grazie :)

MItaly
17-10-2014, 23:30
Lo stesso vale per 'v', ma invece di fare il doppio caso per tutti, limitati a rendere la lettera minuscola prima dei test usando la funzione tolower().

Loading