2016-08-08 19 views
-5

Mein Programm schließt sofort, wenn ich einen Brief eingib. Es zeigt den Rest des Codes, aber ich kann die anderen Teile nicht eingeben. Das Programm schließt sofort bei der Eingabe von Buchstaben, bleibt aber bei der Eingabe von Zahlen erhalten, bis zu dem Teil, in dem das Programm die kopierten Informationen anzeigen soll. Ich habe versucht, getchar(); nach jedem cin<<a; setzen, aber es überspringt Linien und ich kann nur wenige Informationen eingeben. Hier ist mein Code: * Ich bin ein extremer Neuling, das ist bei weitem der längste Code, an dem ich jemals gearbeitet habe.Dev C++ - Programm schließt sofort bei der Eingabe von Briefen

#include <iostream> 
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string> 

using namespace std; 

int main() 

{ 

string a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,y,z; 

cout<<"Enter Your Name:"; 
cin>>a; 


cout<<"Enter Your Gender:"; 
cin>>z; 

cout<<"Enter Your Age:"; 
cin>>b; 

cout<<"Enter Your Address:"; 
cin>>c; 

cout<<"Enter Your School:"; 
cin>>d; 

cout<<"Enter Your Nickname:"; 
cin>>e; 

cout<<"Enter Highest Educational Attainment:"; 
cin>>f; 

cout<<"What are your skills?:"; 
cin>>g; 

cout<<"How many years experience do you have in this field?:"; 
cin>>h; 

cout<<"What kind of people would you like to have in the workplace?:"; 
cin>>i; 

cout<<"What good values do you have?:"; 
cin>>j; 

cout<<"What bad values do you have?:"; 
cin>>k; 

cout<<"When is your birthday?:"; 
cin>>l; 

cout<<"What is your Father's name?:"; 
cin>>m; 

cout<<"What is your Mother's name?:"; 
cin>>n; 

cout<<"Do you have any children?:"; 
cin>>o; 

cout<<"What is your eye color?:"; 
cin>>y; 

cout<<"What do you dislike?:"; 
cin>>p; 

cout<<"How many are you in the family?:"; 
cin>>q; 

cout<<"What is your favorite food?:"; 
cin>>r; 

cout<<"Your name is:"<<a<<endl; 
cout<<"You are a:"<<z<<endl; 



cout<<"You are"<<b<<cout<<"years old."<<endl; 
cout<<"You live in:"<<c<<endl; 
cout<<"You studied in:"<<d<<endl; 
cout<<"Your nickname is:"<<e<<endl; 
cout<<"Your highest educational attainment is:"<<f<<endl; 
cout<<"Your skills are:"<<g<<endl; 
cout<<"You have"<<h<<cout<<"years of experience in this field."<<endl; 
cout<<"You would like to have"<<i<<cout<<"in the workplace."<<endl; 
cout<<"The good thing is, you are:"<<j<<endl; 
cout<<"The bad thing is, you are also:"<<k<<endl; 
cout<<"Your birthday is in:"<<l<<endl; 
cout<<"Your father is:"<<m<<endl; 
cout<<"Your mother is:"<<n<<endl; 
cout<<"You have"<<o<<cout<<"children."<<endl; 
cout<<"You have"<<y<<"eyes."<<endl; 
cout<<"You dislike:"<<p<<endl; 
cout<<"You are"<<q<<cout<<"in the family"<<endl; 
cout<<"Your favorite food is:"<<r<<endl; 



return 0; 

system ("pause"); 


} 

* Edit: Ersetzte float mit string und hinzugefügt #include <string> am Anfang des Codes. Das einzige Problem ist jetzt, dass das Programm schließt, wenn es die Ausgabe anzeigen soll und wenn ein Leerzeichen in der Eingabe eingegeben wird, sind die nächsten Fragen in einer Zeile.

+1

Sie lesen Gleitkommazahlen, keine Zeichen. Um Zeichen zu lesen, ändern Sie 'float' in' string' und fügen '#include ' am Anfang hinzu –

+2

Wenn Sie Buchstaben eingeben möchten, warum ziehen Sie Werte in 'float's? –

+4

nur für die Zukunft: Verwenden Sie expliziteren Namen für Variablen – Garf365

Antwort

0

wenn x ein Schwimmer-Typ oder ein Integer-Typ ist

std::cin >> x; 

liest keinen Brief von std :: cin wenn std :: cin mit einem Zeichen beginnt, die nicht ein Präfix für einen Schwimmer oder einen Integer-Typen sein .

Also x bleibt auf 0 und Ihr Eingangsstrom bleibt unverändert.

Für die nächsten

std::cin >> y; 

mit y vom Typ float oder integer, das gleiche Verhalten tritt auf: y bleibt auf 0 und Ihr Eingangsstrom std :: cin beginnt noch mit einem Zeichen, das nicht durch eine gelesen werden kann float oder ein Integer-Typ.

Dieses Verhalten wird bis zum Ende Ihres Programms fortgesetzt.

0

float a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,y,z;

Variable a und andere vom Typ float. Das bedeutet, dass sie Werte wie 1,10.0,12.3546 e.t.c. speichern können. Sobald Sie ein ungültiges Zeichen für dieses data type eingeben, wird dieses Programm beendet.

Wenn Sie Ihr Programm ausführen möchten, versuchen Sie, alle Variablen wie std::string zu deklarieren und nehmen Sie die Eingabe über getline wie diese getline(std::cin,var).

S.S: Ich habe hier angenommen, dass var vom Typ string ist.

+0

Ich habe 'float' in' string' geändert und '#include ' am Anfang des Codes platziert, aber es schließt direkt bevor es die Ausgabe des Programms zeigt, die es zeigen soll. – Oblivionchain

Verwandte Themen