Problem mit c++

05/26/2011 21:51 Prestino#1
Hey,
ich habe bei meinem Code das Problem, dass sobald ich insgesamt auf alle Eingaben verteilt eine gewisse Anzahl an Zeichen geschrieben habe, er den Rest der cout ausgaben einfach hinschreibt und mich nicht mehr nach Eingaben fragt.
Code:
#include <iostream>
#include <string>
#include <conio.h>

using namespace std;

struct lieferanschrift
{
	string name_first;
	string name_second;
	int plz;
	int hausnummer;
	string strasse;
	string ort;
};

struct kreditkartendaten
{
	int kreditkartennummer;
	int gültigkeitsdatum;
};

struct bestellung
{
	int kundennummer;
	string ware;
	
};

int main()
{
	lieferanschrift adresse;
	kreditkartendaten bank;
	bestellung ware;
	cout << "Bitte geben sie den Namen des Produkts ein, dass sie kaufen möchten: ";
	cin >> ware.ware;
	cout << "Bitte geben sie ihren Vornamen ein: ";
	cin >> adresse.name_first;
	cout << "Bitte geben sie ihren Nachnamen ein: ";
	cin >> adresse.name_second;
	cout << "Bitte geben sie ihren Wohnort ein: ";
	cin >> adresse.ort;
	cout << "Bitte geben sie ihre Postleitzahl ein: ";
	cin >> adresse.plz;
	cout << "Bitte geben sie ihre Strasse ein: ";
	cin >> adresse.strasse;
	cout << "Bitte geben sie ihre Hausnummer ein: ";
	cin >> adresse.hausnummer; 
	cout << "Bitte geben sie ihre Kreditkartennummer ein: ";
	cin >> bank.kreditkartennummer;
	cout << "Bitte geben sie das Gültigkeitsdatum ihrer Kreditkarte ein: ";
	cin >> bank.gültigkeitsdatum;
	cout << "Bitte geben sie ihre Kundennummer ein: ";
	cin >> ware.kundennummer;
	cout << "Zusammenfassung ihrer Daten: " << endl;
	cout << "Name: " << adresse.name_first << " " << adresse.name_second << endl;
	cout << "Adresse: " << endl;
	cout << adresse.strasse << " " << adresse.hausnummer << endl;
	cout << adresse.plz << " " << adresse.ort << endl;
	cout << "Ihre Kreditkartennummer: " << bank.kreditkartennummer << endl;
	cout << "Sie ist gültig bis: " << bank.gültigkeitsdatum << endl;
	cout << "Ihre Kundennummer: " << ware.kundennummer << endl;
	cout << "Die Ware die sie kaufen möchten: " << ware.ware << endl;

	getch();
}
Auf Posts wie "lern erstmal gut coden" oder so kann ich verzichten und ich werde diese reporten, da das mir nicht beim lösen meines Problems hilft.
05/26/2011 22:11 xNopex#2
[Only registered and activated users can see links. Click Here To Register...]
05/27/2011 14:53 Prestino#3
Ich mach mal video von dem Problem, es ist was anderes nämlich.
05/27/2011 16:00 xNopex#4
Nö ist es nicht. Von den vorherigen Eingaben liegt einfach nur noch das 'Newline' Zeichen im Eingabe-Puffer, was cin dazu bewegt anzunehmen, dass du deine Angabe bereits getätigt hast. Mit ignore() ignorierst du tatsächlich den vorhandenen Puffer, wer hätte das gedacht? :)
05/28/2011 12:15 .BritainAndy#5
ich würde dir auch empfehlen deiner mainfunktion den rückgabewert 0 zuzuweisen
05/28/2011 22:23 MoepMeep#6
Quote:
Originally Posted by .BritainAndy View Post
ich würde dir auch empfehlen deiner mainfunktion den rückgabewert 0 zuzuweisen
Und was ist der Vorteil von return 0 im gegensatz zu return 3421 ?
05/28/2011 22:43 Bot_interesierter#7
Quote:
Originally Posted by MoepMeep View Post
Und was ist der Vorteil von return 0 im gegensatz zu return 3421 ?
Der Rückgabewert 0 wird allgemein als Erfolgsmeldung des Programms verstanden, die winerror.h definiert ERROR_SUCCESS zb als 0 und auch bei Unix Programmen ist es üblich bei Erfolg 0 zurückzugeben.