C++ Problem

Cheris

Erfahrenes Mitglied
Hallo, ich bin ein Änfanger in C++ und hab mir ein kleines Programm geschrieben, wollte es ausführen und bekamm die Meldung das es 12 Fehler hätte. Ich suche nun schon seit Stunden und finde keinen Fehler. Ich bitte euch das mal durch zu schauen und bitte zu korrigieren.

Hier das Programm:


/* quiz.cpp - Quiz-Programm*/
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std ;

int main()
{
ifstream dat_ein ;
string dateiname = ("daten.txt") ;
dat_ein.open(dateiname.c_str(). ios_base::in) ;

if(!dat_ein)
{
count << " DAtei konnte nicht geoeffnet werden!" ;
count << endl ;
return -1 ;
}

int anzahl ;

int datensatz ;

string land, stadt ;

int loop ;

string antwort ;

dat_ein >> anzahl ;

srand( (unsigned)time( NULL ) ) ;
datensatz = rand() % anzahl + 1 ;

loop = 2 * datensatz ;
while(loop >=2)
{
dat_ein >> land >> stadt ;
loop -= 2 ;
}

count << " Wie heisst die Hauptstadt von/der "
<< land << "?" <<endl ;
cin >> antwort ;

if (antwort == stadt)
{
count << endl << "Richtig!" << endl ;
}
else
{
count << endl << " FAlsch!" << endl ;
count << " Die richtige Antwort ist: " << stadt
<< endl ;
}


return 0 ;
}
 
Wäre hilfreich wie die fehlermeldung lautet, aber du hast ihn der Zeile
count << " Die richtige Antwort ist: " << stadt

das ;
vergessen und der Befehl für die Ausgabe heißt cout und nicht count.
 
Danke soweit jetzt hab ich nur noch 3 Fehler, nämlich:



C:\Programme\Microsoft Visual Studio\MyProjects\Trumpf Quiz\Trumpf.cpp(13) : error C2228: Der linke Teil von '.ios_base' muss eine Klasse/Struktur/Union sein

C:\Programme\Microsoft Visual Studio\MyProjects\Trumpf Quiz\Trumpf.cpp(13) : error C2653: 'ios_base' : Keine Klasse oder Namespace

C:\Programme\Microsoft Visual Studio\MyProjects\Trumpf Quiz\Trumpf.cpp(56) : error C2143: Syntaxfehler : Fehlendes ';' vor '<<'
Fehler beim Ausführen von cl.exe.
 
Zwischen dateiname.c_str(). ios_base::in gehört ein Komma, kein Punkt, also:

dateiname.c_str(), ios_base::in

Das löst die ersten beiden Fehler. Der letzte Fehler muss beim Umbauen neu dazugekommen sein, der originale Code hat an der Stelle keinen Fehler. Vermutlich hast du dich in der Zeile irgendwo vertippt. Der Fehler bedeutet, dass an der Stelle vor einem << etwas steht, was er nicht erkennt.

Ah! Ich seh grade, der Hinweis von Sinac mit dem ; nach stadt war im Prinzip richtig, er hat nur übersehen, dass danach die Befehlszeile noch weitergeht ( << endl; ). Also an der Stelle das ; wieder rausnehmen.
 
Code:
/* quiz.cpp - Quiz-Programm*/

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;



int main() { 
	ifstream dat_ein; 
	string dateiname = "daten.txt";
	dat_ein.open(dateiname.c_str(), ios_base::in);
	
	if(!dat_ein) {
		cerr << " Datei konnte nicht geoeffnet werden!" << endl;
		return -1; 
	}
	
	int anzahl, datensatz, loop;
	string land, stadt, antwort;
	
	dat_ein >> anzahl;
	
	srand((unsigned)time(NULL));
	
	datensatz = rand()%anzahl+1;
	loop = 2*datensatz;
	
	while (loop >= 2) {
		dat_ein >> land >> stadt;
		loop -= 2;
	}
	
	cout << " Wie heisst die Hauptstadt von/der " << land << '?' << endl; cin >> antwort;
	
	if (antwort == stadt)
		cout << endl << "Richtig!" << endl;
	else { 
		cout << endl << " Falsch!" << endl;
		cout << " Die richtige Antwort ist: " << stadt << endl;
	}
	
	return 0;
}

Ich glaube ich editiere zu viel :P


Aber ich fände es besser wenn du folgendes:
Code:
	ifstream dat_ein; 
	string dateiname = "daten.txt";
	dat_ein.open(dateiname.c_str(), ios_base::in);
durch nun folgendes:
Code:
	ifstream dat_ein("daten.txt", ios_base::in);
ersetzen würdest.
 
Zuletzt bearbeitet:
Vielen,vielen Dank für eure Hilfe. Jetzt geht alles und ich als C++ Anfänger kann mich endlich freuen etwas hinbekommen zu haben.


Auf euch ist immmer verlass!

:p :p :p
 
So jetzt geht eigendlich alles trotzdem hab ich noch eine Frage. Nämlich folgendes:

Wenn ich nun alles kompiliere, frägt mich das Programm(wenn man es so nennen darf) welche Hauptstadt von welchem Land ist. Aber nach dem ich die Eingabe gemacht hab und entweder es Falsch oder Richtig ist, hört das Programm auch schon wieder auf. Geht es irgendwie das nachdem die erste frage war nach der antwort gleich die nächste kommt, so lange bis alle Hauptstädte von allen Ländern die im Textdokument sind, abgefragt wurdeny?

Wenn ja wie?

Wie gesagt bin eben noch Änfanger und brauch ein bisschen Hilfe.
 
Du musst versuchen zu verstehen, was du da programmiert hast. Wenn du es nicht verstehst, mach erstmal was einfacheres! Ne Schleife realisierst du z.B. mit for, also bsp.:
Code:
for (int i = 0; i < 10; i++)
{
...Code hier....
}
Da wird der Code zwischen den geschweiften Klammern 10 mal ausgeführt.
Du musst das nur auf dein Programm übertragen (und wenn du es nicht schaffst, wie gesagt, dann mach was einfacheres!).
 
Zurück