Handlungen in C++ unbegrenzt durchführen können

Ich hab zwar schon ewig nix mehr in C(++) gemacht, aber ich bin mir ziemlich sicher, dass Whitespace vor dem Klammeroperator nicht stört.

Wenn ich nach einem Fehler in dem Code suche muss ich aber feststellen, dass du völlig recht hast. Wenn er die Fehlermeldungen des Compilers gelesen hätte, dann hätte er schon längst den fehlenden Strichpunkt ergänzt statt sich hier ... naja, lassen wir das.

Für alle die zu faul sind selbst den Compiler anzuwerfen:
Code:
$ g++ -Wall -Werror -o test test.cpp
test.cpp: In function »int main()«:
test.cpp:15: Fehler: expected `;' before »if«


P.S. verwende bitte die

[noparse]
Code:
#include<iostream>
// ...
[/noparse]

und verwende Whitespace an den richtigen bzw. wichtigen Stellen, z.B. so:
Code:
#include<iostream>
using namespace std;

int main() {
	cout << " Willkommen" << endl;
	cin.get();
	
	cout << " Erste Frage" << endl;
	cout << "Das Ergebnis von 1 + 1?" << endl;
	int a;
	cin >> a;
	
	if (a == 2) {
		cout << "Stimmt" << endl;
	}
}
 
ja das haben wir vor einer viertelstunde auch schon festgestellt...
das allerdings: test.cpp:15: Fehler: expected `;' before »if«
find ich nen oberhammer...
 
Ich schaffe es nicht eine Frage zustellen.

Beispiel. Wie heisse ich.

Und dann kann man auswaehlen .

Wie geht das :huh:
 
hmm, also bei Namen & Co musst du dich entscheiden ob du mit Strings (string) oder C-Strings (char*) arbeiten willst

hier mal die erste Variante bezogen auf das vorherige Codebeispiel:
Code:
#include<iostream>
#include<string>
using namespace std;

int main() {
	cout << " Willkommen" << endl;
	cin.get();
	
	cout << " Erste Frage" << endl;
	cout << "Wie heiße ich?" << endl;
	string a;
	cin >> a;
	
	if (a == "Anti_Held") {
		cout << "Stimmt" << endl;
	}
}
 
  • Like
Reaktionen: Anti_Held
#include<iostream>
using namespace std;

int main()
{
cout<<" Willkommen\n";
cin.get ();


cout<<" Erste Frage\n";
cout<<"Das Ergebnis von 1+1 ?\n";
int a;
cin>>a

;if(a==2)
{
cout << "Wie heiße ich?" << endl;
string b;
cin>>b;
}






{cout << "Wie viele Kontienete gibt es ? " << endl;
cout << "A) 1 B) 1000 C) 6 D) 0 " << endl;
string c;
cin >> c;



;if(a!=2)
{
cout<<"Falsch\n";

}

if (c == "A") {
cout << "Stimmt" << endl;
}

if (c != "A") {
{
cout << "Falsch" << endl;}



}

if (b == "Anti_Held") {
cout << "Stimmt" << endl;
}

if (b != "Anti_Held") {

cout << "Falsch" << endl;}



}













cin.get () ;
cin.get () ;

}

}
}

Wo ist der Fehler ?
Ich finde nix
 
da stimmt so einiges nicht ... erstmal fehlt ein
Code:
#include<string>
sonst kannst du strings gar nicht benutzen

dann: was sollen die Semikolons vor den ifs?

die Klammern solltest du dir auch noch mal anschauen, da sind einige falsch gesetzt und/oder zuviel

achso es heißt übrigens "Kontinente" und davon gibts nicht 1, nicht 1000, nicht 6, nicht 0 sondern genau 7

das wars erstmal auf den ersten Blick (von Formsachen wie "else" & Co mal abgesehen)

edit:
oh okay mein Schulwissen ist wohl doch etwas umstritten, aber Antwort A (1 Kontinent) ist wohl immer falsch ;)
 
Zuletzt bearbeitet:
Kannst du mir mal eine cleana Varinante des Codes schreiben ?
dazu müssten wir erstmal dein Klammer-Chaos bzw. die generelle Code-Reihenfolge lösen ... soll eine Folgefrage nur kommen wenn die vorherige richtig war oder sollen alle Fragen unabhängig davon nacheinander kommen? wenn ja soll die Antwort sofort erfolgen oder erst für alle Fragen am Ende zusammen?
 
nach jeder Frage eine Antwort

in dem Fall so:
Code:
#include<iostream>
#include<string>
using namespace std;

int main()
{
   cout<<" Willkommen\n";
   cin.get();

   cout<<"Das Ergebnis von 1+1 ?\n";
   int a;
   cin>>a;

   if(a==2){
      cout << "Stimmt" << endl;
   } else {
      cout << "Falsch" << endl;
   }
            
   cout << "Wie heiße ich?" << endl;
   string b;
   cin>>b;
   
   if (b == "Anti_Held") {
      cout << "Stimmt" << endl;
   } else {
      cout << "Falsch" << endl;
   }
   
   cout << "Wieviele Kontinente gibt es ? " << endl;
   cout << "A) 1 B) 1000 C) 6 D) 0 " << endl;
   string c;
   cin >> c;

   if (c == "A" ) {
      cout << "Stimmt" << endl;
   } else {
      cout << "Falsch" << endl;
   }

   cin.get();
   cin.get();
}

oder in etwas verkürzter Form:
Code:
#include<iostream>
#include<string>
using namespace std;

int main()
{
   cout<<" Willkommen\n";
   cin.get();

   cout<<"Das Ergebnis von 1+1 ?\n";
   cout << (cin.get() == '2' ? "Stimmt" : "Falsch" ) << endl;

   cout << "Wie heiße ich?" << endl;
   string name;
   cin>>name;
   cout << (name == "Anti_Held" ? "Stimmt" : "Falsch" ) << endl;
   
   cout << "Wieviele Kontinente gibt es ? " << endl;
   cout << "A) 1 B) 1000 C) 6 D) 0 " << endl;
   cout << (cin.get() == 'A' ? "Stimmt" : "Falsch" ) << endl;

   cin.get();
   cin.get();
}

kannst du dann noch erweitern, z.B. bei Frage 3 könnte ja auch ein kleiner Buchstabe eingegeben werden, eine Variante sähe beispielsweise so aus:
Code:
if (c == "A" || c== "a")

Viel Spass ncoh weiter damit
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Anti_Held
Code:
cin.get();
return 0;
in die entsprechende if/else-Klausel schreiben.

Übrigens: Ich weiß ja nicht, welchen Compiler du nutzst, aber ich bin mir ziemlich sicher, dass bei Fehlern beim Builden des Codes eine Fehlermeldung mit Zeilenangabe und Fehlerbeschreibung ausgegeben wird... Wenn man die ließt, etwas im Internet recherchiert und erst dann fragt, lernt man mehr als andersherum.
 
  • Like
Reaktionen: r4yn und johannes89
Hmm, ich hab jetzt auch noch ne Frage:

Ich hab nen Programm geschrieben das die Eingaben in einer Textdatei speichern soll, funktioniert auch alles, nur muss ich jedesmal .txt an den Dateinamen hängen, da es sonst einfach nur als "Datei" gespeichert wird.
Ich denke mal man kann hier:
Code:
ofstream File(FileName, ios::out);
irgendwie festlegen, dass hinter dem char "FileName" noch .txt anghaengt wird, nur weiß ich nicht wie..

t4H im Vorraus :)
 
versteh irgendwie die Frage nicht ganz, aber du meinst das wahrscheinlich so:

Code:
ofstream File("FileName.txt");

das "ios::eek:ut" kannst du weglassen, wenn du "ofstream" benutzt ... brauchst du nur bei "fstream"
 
Hmm, okay, ich hab das wohl etwas doof formuliert. Ich poste einfach mal schnell ein Beispiel Quellcode, damit du weißt was ich meine:
Code:
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

int main() {
    char content[30], FileName[20];
    
    cout << "Inhalt?" << endl;
    cin>>content;
    
    cout << "Datei Name?" << endl;
    cin>>FileName;
    
    ofstream File(FileName, ios::out);
    
    File << content << endl;
    
    return 0;
    
}
Ich möchte halt, das automatisch an meine Eingabe für "FileName" .txt angehängt wird. :lol:
 
du meinst so? (siehe Code)
Code:
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

int main() {
    char content[30], FileName[20];
    
    cout << "Inhalt?" << endl;
    cin>>content;
    
    cout << "Datei Name?" << endl;
    cin>>FileName;
    
    ofstream File(FileName + ".txt", ios::out);
    
    File << content << endl;
    
    return 0;
    
}
 
Vom Prinzip her mein ich das, ja, aber die Methode funktioniert nicht, hatte ich auch schon ausprobiert.
Fehlermeldung:
16 C:\Users\shadow\Desktop\c++\test.cpp invalid operands of types `char[20]' and `const char[5]' to binary `operator+'

Ohne dem + gehts auch nicht.
Noch nen anderen Lösungvorschlag? :)
 
oh seh jetzt grad erst, dass du C-Strings benutzt ... da geht das natürlich nicht - müsstest das erst mit strcat zusammenbauen ... einfacher ist es natürlich gleich Strings zu benutzen (die Bibliothek dafür hast du ja schon included)

also wahrscheinlich so:
Code:
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

int main() {
    string content, FileName;
    
    cout << "Inhalt?" << endl;
    cin>>content;
    
    cout << "Datei Name?" << endl;
    cin>>FileName;
    
    ofstream File(FileName + ".txt", ios::out);
    
    File << content << endl;
    
    return 0;
    
}
 
  • Like
Reaktionen: r4yn