Ok, ich versuch erstmal die Fehler im Code anzumerken:
Code:
#include <iostream.h> // besser: #include <iostream>
// hier fehlt eigentlich ein using namespace std;
int a = 0;
int b = 0;
char c = 0; // ist ein character, besser mit 'N' initialisieren
// warum machst hier ne globale initialisierung? Die Variablen lieber mit in die main packen
void main(void) // besser: int main (void)
{
cout << "Ein kleines Zahlenvergleichsprogramm." << endl;
cout << " " << endl;
cout << "Bitte geben sie jetzt die erste Zahl an: " << endl;
cin >> a;
cout << "Bitte geben sie jetzt die zweite Zahl an: " << endl;
cin >> b;
cout << "Die erste Zahl lautet: " << a << endl;
cout << "Die zweite Zahl lautet: " << b << endl;
cout << "Sind diese Eingaben korrekt?" << endl;
cout << "Geben sie 'J' für Ja ein und 'N' fuer Nein." <<endl;
cin >> c;
if (c==J) // Charaktervergleich!! J wird hier als undeklarierte Variable gesehen (da meckert der compiler), richtig waere: if (c=='J')
{
if (a>b) // hier ist a>b => korrekt
{
cout << a;
cout << " ist groesser als ";
cout << b;
}
else // hier ist a<b ODER a=b
{
cout << a; // erstmal a < b ausgeben???? hoeh???
cout << " ist kleiner als ";
cout << b;
if (a==b) // und danach testen, ob nicht doch a=b??
{
cout << a;
cout << ist genau so gross wie "; // hier fehlen die Anfuehrungszeichen "
cout << b;
} // if(a=b) ende
} // else ende
// hier fehlt das if (c==J) ende }
else
{
cout << "Ein kleines Zahlenvergleichsprogramm." << endl;
cout << " " << endl;
cout << "Bitte geben sie jetzt die erste Zahl an: " << endl;
cin >> a;
cout << "Bitte geben sie jetzt die zweite Zahl an: "; << endl; // erst ein ; und dann noch << endl; ?
cin >> b;
cout << "Die erste Zahl lautet: " << a << endl;
cout << "Die zweite Zahl lautet: " << b << endl;
cout << "Sind diese Eingaben korrekt?" << endl;
cout << "Geben sie 'J' für Ja ein und 'N' fuer Nein." <<endl;
cin >> c;
if (c==J) // hier muss J wieder ein character sein: 'J'
{
if (a>b) // hier ist a > b
{
cout << a;
cout << " ist groesser als ";
cout << b;
}
else // hier ist a < b oder a = b
{
cout << a; // erstmal ausgeben, das a < b ?????
cout << " ist kleiner als ";
cout << b;
if (a==b) // und dann nochmal testen, ob a = b?????
{
cout << a;
cout << ist genau so gross wie "; // Anfuehrugsstriche net immer vergesen!
cout << b;
}
}
}
} // hier ist irgendeine der klammern zuviel (die vom if oben?)
}
/// hier sollte stehen: return 0;
}
Das Problem an dem Code ist auch, das das Programm nach der 2. falschen Eingabe nochmal nachfragt, ob die Eingaben nun richtig sind oder nicht, und bei N einfach abbricht.
Hier solltest besser mit ner Schleife arbeiten, am besten ne do{ }while(); schleife.
also etwa so:
Code:
int main()
{
variablen initialisieren;
do{
nach Zahlen fragen;
nach Korrektheit fragen;
}while(nicht korrekt);
Ergebnis ausgeben;
return 0;
}
oder als Code:
Code:
#include <iostream>
using namespace std;
int main(void)
{
int a = 0; //erste zahl
int b = 0; //zweite zahl
char c = 'N'; //Abfrageergebnis
/////////////////////// EINGABE der Daten
do{
cout << "Ein kleines Zahlenvergleichsprogramm." << endl;
cout << " " << endl;
cout << "Bitte geben sie jetzt die erste Zahl an: " << endl;
cin >> a; // eingabe der ersten Zahl
cout << "Bitte geben sie jetzt die zweite Zahl an: " << endl;
cin >> b; // eingabe der zweiten Zahl
cout << "Die erste Zahl lautet: " << a << endl;
cout << "Die zweite Zahl lautet: " << b << endl;
cout << "Sind diese Eingaben korrekt?" << endl;
cout << "Geben sie 'J' für Ja ein und 'N' fuer Nein." <<endl;
cin >> c; // abfrage auf korrektheit
}while ( c == 'N'); // solange Daten nicht korrekt, erneut fragen
//////Jetzt ist sicher, das die Zahlen stimmen - AUSGABE
if (a > b) // teste auf a > b
{
cout << a << " ist groesser als " << b;
}
else if (a < b) // teste auf a < b
{
cout << a << " ist kleiner als " << b;
}
else // es muss a = b sein
{
cout << a << " ist genau so gross wie " << b;
}
cout << " " << endl; // damits am ende schoen aussieht
return 0;
}
Ein paar kleine Tips noch: Gewoehn Dir an, Kommentare in den Text zu schreiben. also z.B. welche Klammer welches if oder else beendet. Das hilft ungemein bei der Fehlersuche.
Dann: Versuch, auf die Fehlermeldungen des Compilers zu reagieren. also wenn er sich beschwert, das 'ist' keine Variable ist und noch Zeile 35 dazu angibt ("c.cpp:35: error: `ist' undeclared (first use this function)") , solltest dir die Zeile 35 und eventuell die drueber nochmal genauer angucken. Genauso die Sache mit dem J. J an sich wird als Variable gesehen, wogegen 'J' ein Character ist und "J" ein String. (zumindest in C
)
Dann nochwas: Hast Du nen Editor mit Syntax-Highlighting und automatischer Einrueckung? Das hilft auch ungemein.
Gruesse, kerri