Zum Inhalt springen

Problem beim Einlesen aus einer Datei


Empfohlene Beiträge

Geschrieben

Hi

also ich da ein Problem und hoffedas mir irgendwer hier (möglichst schnell) helfen kann:

Ich möchte ein Quiz programmieren (C++), dass Fragen aus der Datei questions.txt ausliest, und dann die Antworten in einer anderen Datei speichert (das hab ich schon hingekriegt), nur mit dem Fragenteil hab ich probleme,im wesentlichen 2:

1. Wie kann ich einen ganzen Satz aus der Datei lesen,nicht nur das erste Wort?

2. Wie bring ich das Prog dazu die zweite Frage aus der 2. Zeile der Datei zu lesenund die dritte aus der dritten zeile usw.?

Hier mal mein total chaotischer Code

#include <fstream>

#include <iostream>

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

char frage[1024];

char antwort[30];

int zaehler;

char afilename[20], qfilename[20];

cout << "Enter File: ";

cin >> qfilename;

cout << "Gruppennummer";

cin >> afilename;

for (zaehler=1; zaehler<=2; zaehler++)

{

ifstream questions(qfilename);

questions.open(qfilename, ios::in);

questions.getline(frage, 1024);

questions.close;

cout << frage; //da gibt erirgendwie nix aus, obwohl ich doch

//eigentlich vorher mit getline frage geholt hab, oder?

:confused:

cin >> antwort; //hier gibt der nutzer die antwort ein

ofstream answers(afilename, ios::app);

answers << antwort << '\n'; //diese wird in einer datei gespeichert

//dabei bekommt jede Antwort eine neue

//Zeile

}

return 0;

}

Plz help anyone!

:confused:

Danke

Geschrieben

Hallo,

beim Einlesen vielleicht den Satzzeiger mal auf Anfang stellen.


questions.ssekg(0L, ios::beg);
[/code] Die zweite Frage versteh ich nicht. Warum baust Du kein while eof anstatt einer for Schleife ein.
[code]
while (!questions.eof())
{
....
}

Frank

Geschrieben

Danke erstmal, aber ich mein das noch ien bisschen anders:

Bsp:

Die Datei questions.txt enthält folgendes

Das ist die erste Frage?

Und hier kommt die zweite Frage?

Dann soll mein Prog zwei Dinge tun:

1. Die erste Frage komplett, also den ganzen Satz anzeigen (derzeit zeigt es gar nichts an, davor hat es nur das erste Wort,hier :"Das" angezeigt, soll aber "Das ist die erste Frage?" anzeigen!

2. Wenn der User diese beantwortet hat soll das Program die zweite Frage aus der datei questions.txt einlesen und (ebenfalls den kompletten Satz) anzeigen, damit der User zur Beantwortung schreitenkann.

Bitte helft mir!

Ich hab nicht mehr viel Zeit.

Danke im voraus

Warden

Geschrieben

Warum machst Du des nicht so wie ich es geschrieben habe?


char frage[1024];
char antwort[30];
int zaehler;
char afilename[20], qfilename[20];

cout << "Enter File: ";
cin >> qfilename;
cout << "Gruppennummer";
cin >> afilename;

ifstream questions;
ofstream answers;

questions.open(qfilename, ios_base::in);
answers.open("answer.txt", ios_base::app);
while (!questions.eof())
{
questions.getline(frage, 1024);
cout << frage << endl;

fflush(stdin);
cin.getline(antwort, 1024);
answers << antwort << endl;;
}
questions.close();
answers.close();
[/code]

Frank

Geschrieben

Estmal wieder t immerhin schon (hab ein bisschen was geändert, weil sonst 26 fehler kamen)

Hier der Aktuelle Code:

#include <fstream.h>

#include <iostream.h>

#include <string.h>

int main()

{

char frage[1024];

char antwort[30];

int zaehler;

char afilename[20], qfilename[20];

cout << "Enter File: ";

cin >> qfilename;

cout << "Gruppennummer";

cin >> afilename;

ifstream questions;

ofstream answers;

questions.open(qfilename, ios::in);

answers.open(afilename, ios::app);

while (!questions.eof())

{

questions.getline(frage, 1024);

cout << frage << endl;

//fflush(stdin);

//den befehl hab ich ausgeklammert, denn er laeuft irgendwie nicht

cin.getline(antwort, 1024);

answers << antwort << '\n' << endl;;

}

questions.close();

answers.close();

return 0;

}

Ein Problem hab ich allerdings noch immer:

Wenn man das Programm ausführt, dann zeigt es nach den Eingaben die ersten beiden Fragen auf einmal an und erst dann geht es regelmäßi, also ausgabe frage 3, eingabe antwort3, ausgabe frage4, eingabe antwort 4usw.

Abermals Danke im voraus

Geschrieben

Hm, das hab ich schon kapiert, wegen fflush(stdin): ich hatte nur

#include <stdio.h> vergessen ... :hells:

Und ich hab wieder eine Frage:

Wie muss ich den Code ändern, damit er statt 1 Zeile 5 Zeilen anzeigt?

Ich meine das etwa so:

-------------------------------------------------------------------

Ausgabe:

1.Who is Condoleezza Rice?

a) Financial Advisor

B) Secretary of State

c) First Lady

d) Chairman of the FBI

Eingabe Antwort 1

Ausgabe:

2. Frage?

a) Antwortmöglichkeit

B) Antwortmöglichkeit

c) Antwortmöglichkeit

d) Antwortmöglichkeit

Eingabe Antwort 2

...usw...

------------------------------------------------------------------

Bitte wieder so schnell wie möglich helfenund ebenfalls wieder vielen Dank im voraus!

Geschrieben

Noch ein Problem:

Ich möchte die Antworten ja überprüfen, also kann mir jemand den code so ändern, dass er die eingegebenen antworten mit den richtigen die in einer datei(z.B correct.txt) stehen vergleicht, wenn richtig die variable (int punkte) um eins erhöht(das schaff ich selber) und am Ende statt die antworten in eine datei zu speichern, die erreichte punktzahl(=anzahl der richtigen) in die antwortsdatei schreibt?

Das Problem was ich hierbei nicht verstehe its, wie man zwei dateien gleichzeitig öffnet (z.B. questions.txt um die fragen anzuzeigen und correct.txt um die antworten vergleichen zu können)

Danke

Geschrieben
Ich möchte die Antworten ja überprüfen, also kann mir jemand den code so ändern, dass er die eingegebenen antworten mit den richtigen die in einer datei(z.B correct.txt) stehen vergleicht, wenn richtig die variable (int punkte) um eins erhöht(das schaff ich selber) und am Ende statt die antworten in eine datei zu speichern, die erreichte punktzahl(=anzahl der richtigen) in die antwortsdatei schreibt?

Das Problem was ich hierbei nicht verstehe its, wie man zwei dateien gleichzeitig öffnet (z.B. questions.txt um die fragen anzuzeigen und correct.txt um die antworten vergleichen zu können)

Du hast doch schon zwei Dateien offen. Questions und Answers. Das ist doch immer das gleiche Prinzip.

Wir sprechen hier von einfachsten Algorythmen in C bzw. C++.

Hier wird dir bestimmt keiner den Code vorbeten. Bei konkreten Problem wird geholfen aber keiner schreibt dir hier dein Programm fertig.

Frank

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...