Help! Schleifen ....
-
Hi!
Irgendwie bekomme ich es nicht gebacken es so zu programmieren, das
nach der Eingabe einer null eine Fehlermeldung erscheint und die Eingabe der zahl noch mal wiederholt wird.
Ich habs so weit geschafft:... ... else if(wahl == 5) { colcout.setcolor (BG_WHITE); std::cout << "\nModulo(&)-Rechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie die erste Zahl ein:" << std::endl; do { std::cin >> dzahl1; if(dzahl1 <= 0) std::cout << "\nUng"<<(char)129<<"ltige Eingabe! " << std::endl; } while (dzahl1 <= 0); std::cout << "\nBitte geben sie die zweite zahl ein:" << std::endl; std::cin >> dzahl2; dErgebnis = dzahl1%dzahl2; colcout.setcolor (BG_WHITE); std::cout << "\n" << "Das Ergebnis lautet:" "\t"<< dzahl1 << "%" << dzahl2 << "=" << dErgebnis << std::endl; } .... ....
Doch leider wird die Eingabe von dzahl1 nicht wiederholt !
Kann mir einer helfen !?THX für alle antworten!
-
Funktioniert doch, du solltest nur die Aufforderung die erste Zahl einzugeben mit in den Schleifenkörper schreiben:
do { std::cout << "\nBitte geben sie die erste Zahl ein:" << std::endl; std::cin >> dzahl1; if(dzahl1 <= 0) std::cout << "\nUng"<<(char)129<<"ltige Eingabe! " << std::endl; } while (dzahl1 <= 0); std::cout << "\nBitte geben sie die zweite zahl ein:" << std::endl; std::cin >> dzahl2; dErgebnis = dzahl1%dzahl2; colcout.setcolor (BG_WHITE); std::cout << "\n" << "Das Ergebnis lautet:" "\t"<< dzahl1 << "%" << dzahl2 << "=" << dErgebnis << std::endl; }
Warum muß die erste Zahl überhaupt größer Null sein? Es ist wohl eher die zweite Zahl die größer Null, oder noch besser größer Eins sein sollte.
Gruß
Entyl Sa
-
oh man ...danke! hab voll einen denkfehler gehabt
aber irgenwie kommen jetzt trotzdem 3 neue Fehlermeldungen ....
scheinen aber nichts mehr mit diesem prob zu tun haben !Ich poste mal meinen gesamten code: (verbesserungs tips sind gerne erwünscht!)
// XP Rechner Version 1.0.1 // Copyright by DaRkWolF // Datum:09.03.2004 // main.cpp #include <iostream.h> #include <math.h> #include <conio.h> #include <col_iostream.h> #include <colorconsole.h> #include <time.h> #include "function.h" using namespace std; Temperatur::Temperatur() { } Temperatur::~Temperatur(){ } template <typename T> void eingabe( T& x ) { cout << "Input: "; cin >> x; } template <typename T> void ausgabe ( const T x ) { cout << "Output: "; cout << x; } int main(int argc, char *argv[ ]) { // Variablen Deklarationen float fzahl1,fzahl2,wzahl,pzahl; int dzahl1,dzahl2,ijahr,wahl; double dErgebnis; char buffer[10]; long double grad, bogenmass, x; // Constanten initialisierung const long double PI = 3.1415926535897932384626433832795; const DWORD FG_WHITE ( FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY ); const DWORD BG_WHITE ( BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY ); const DWORD FG_RED ( FOREGROUND_RED ); const DWORD FG_BLUE ( FOREGROUND_BLUE | FOREGROUND_INTENSITY ); colcout.setcolor (BG_WHITE); std::cout << "\n\t\b" << "XP Rechner" << std::endl; std::cout << "\n" << std::endl; colcout.setcolor (FG_WHITE); _strdate(buffer); std::cout << "\nDatum: "<<buffer << std::endl; _strtime(buffer); std::cout <<"Uhrzeit: "<< buffer; std::cout << "\n" << std::endl; Sleep(1900); colcout.setcolor (FG_BLUE); std::cout << "\n########################################################" << std::endl; colcout.setcolor (BG_WHITE); std::cout << "\n-FUNKTIONEN:" << std::endl; std::cout << "\n" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "(1)-Addition" << std::endl; std::cout << "(2)-Subtraktion" << std::endl; std::cout << "(3)-Multiplikation" << std::endl; std::cout << "(4)-Division" << std::endl; std::cout << "(5)-Modulo-Rechnung" << std::endl; std::cout << "(6)-Wurzelberechnung" << std::endl; std::cout << "(7)-Potenzberechnung" << std::endl; std::cout << "(8)-Schaltjahr" << std::endl; std::cout << "(9)-Temperatur-Berechnung" << std::endl; std::cout << "(10)-Sinus/Cosinus/Tangens" << std::endl; colcout.setcolor (FG_BLUE); std::cout << "\n########################################################" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben Sie nun ihre Wahl ein: " << std::endl; std::cin >> wahl; // If-Anweisung/ Konstruktion für das Menü if(wahl == 1){ colcout.setcolor (BG_WHITE); std::cout << "\nAddition:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie eine Zahl ein:" << std::endl; std::cin >> fzahl1; std::cout << "\nBitte geben sie eine zweite Zahl ein:" << std::endl; std::cin >> fzahl2; dErgebnis = fzahl1+fzahl2; colcout.setcolor (BG_WHITE); std::cout << "\n\t" << "Das Ergebnis lautet:" "\t"<< fzahl1 << "+" << fzahl2 << "=" << dErgebnis << std::endl; } else if(wahl == 2) { colcout.setcolor (BG_WHITE); std::cout << "\nSubtraktion:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie eine Zahl ein" << std::endl; std::cin >> fzahl1; std::cout << "\nBitte geben sie eine zweite Zahl ein" << std::endl; std::cin >> fzahl2; dErgebnis = fzahl1-fzahl2; colcout.setcolor (BG_WHITE); std::cout << "\n\t" << "Das Ergebnis lautet:" "\t"<< fzahl1 << "-" << fzahl2 << "=" << dErgebnis << std::endl; } else if(wahl == 3) { colcout.setcolor (BG_WHITE); std::cout << "\nMultiplikation:" << std::endl; colcout.setcolor (FG_WHITE); std:: cout << "\nBitte geben sie eine Zahl ein" << std::endl; std::cin >> fzahl1; std::cout << "\nBitte geben sie eine zweite Zahl ein:" << std::endl; std::cin >> fzahl2; dErgebnis = fzahl1*fzahl2; colcout.setcolor (BG_WHITE); std::cout << "\n\t" << "Das Ergebnis lautet:" "\t"<< fzahl1 << "*" << fzahl2 << "=" << dErgebnis << std::endl; } else if(wahl == 4) { colcout.setcolor (BG_WHITE); std::cout << "\nDivision:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie eine Zahl ein:" << std::endl; std::cin >> fzahl1; std::cout << "\nBitte geben sie eine zweite Zahl ein:" << std::endl; std::cin >> fzahl2; dErgebnis = fzahl1/fzahl2; colcout.setcolor (BG_WHITE); std::cout << "\n\t" << "Das Ergebnis lautet:" "\t"<< fzahl1 << "/" << fzahl2 << "=" << dErgebnis << std::endl; std::cout << "\n" << std::endl; } else if(wahl == 5) { colcout.setcolor (BG_WHITE); std::cout << "\nModulo(&)-Rechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie die erste Zahl ein:" << std::endl; std::cin >> dzahl1; do { std::cout << "\nBitte geben sie die zweite zahl ein:" << std::endl; std::cin >> dzahl2; if(dzahl2 <= 0){ std::cout << "\nUng"<<(char)129<<"ltige Eingabe! " << std::endl; } while (dzahl2 <= 0); dErgebnis = dzahl1%dzahl2; colcout.setcolor (BG_WHITE); std::cout << "\n" << "Das Ergebnis lautet:" "\t"<< dzahl1 << "%" << dzahl2 << "=" << dErgebnis << std::endl; } else if (wahl == 6) { colcout.setcolor (BG_WHITE); std::cout << "\nWurzelberechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie eine Zahl ein, aus der die Wurzel gezogen werden soll:" << std::endl; do { std::cin >> wzahl; if(wzahl <= 0) std::cout << "\nFalsche Eingabe,aus einer negativen Zahl kann keine Wurzel gezogen werden!" << std::endl; } while (wzahl <= 0); dErgebnis = sqrt( wzahl ); std::cout << "Die Wurzel aus " << wzahl << std::endl; std::cout << " ist " << std::endl; colcout.setcolor (BG_WHITE); std::cout << dErgebnis << std::flush << std::endl; } else if (wahl == 7) { colcout.setcolor (BG_WHITE); std::cout << "\nPotenzberechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie eine Zahl ein:" << std::endl; std::cin >> pzahl; dErgebnis = pow (pzahl,2); colcout.setcolor (BG_WHITE); std::cout << "\n" << pzahl << " hoch 2=" << dErgebnis << std::endl; std::cout <<"\n" << std::endl; } else if (wahl == 8) { colcout.setcolor (BG_WHITE); std::cout << "\nSchaltjahr-berechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\n(1= Schaltjahr; 0= Kein Schaltjahr)" << std::endl; std::cout << "\nBitte geben sie das Jahr ein:" << std::endl; std::cin >> ijahr; std::cout << isSchaltjahr(ijahr) << std::endl; std::cout << "\n" << std::endl; } else if (wahl == 9) { colcout.setcolor (BG_WHITE); std::cout << "\nTemperatur-Berechnung:"<< std::endl; colcout.setcolor (FG_WHITE); Temperatur temp1; temp1.speicherC(); std::cout <<"\nWert in Celsius :" << temp1.leseC() << std::endl; std::cout <<"\nWert in Fahrenheit :" << temp1.leseF() << std::endl; } else if (wahl == 10) { colcout.setcolor (BG_WHITE); std::cout << "\nSinus/Cosinus/Tangens - Berechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte w"<<(char)132<<"hlen sie eine Option:" << std::endl; std::cout << "\n(1)-Sinus" << std::endl; std::cout << "\n(2)-Cosinus" << std::endl; std::cout << "\n(3)-Tangens" << std::endl; std::cout << "\n" << std::endl; std::cout << "\nBitte geben Sie nun ihre Wahl ein: " << std::endl; std::cin >> wahl; if (wahl == 1) { colcout.setcolor (BG_WHITE); std::cout << "\nSinus-Berechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nGeben sie bitte den Winkel in Grad ein: " << std::endl; std::cin >> grad; bogenmass = (PI * grad) / 180; x = sin( bogenmass ); colcout.setcolor (BG_WHITE); std::cout << "\n" << std::endl; std::cout << "Bogenmass: " << bogenmass/PI << "* PI" << std::endl; std::cout << "Sinus: " << x << std::endl; } else if (wahl == 2) { colcout.setcolor (BG_WHITE); std::cout << "\nCosinus-Berechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie den Winkel in Grad ein:" << std::endl; std::cin >> grad; bogenmass = (PI * grad) / 180; x = cos( bogenmass ); double cosinus = cos(grad); colcout.setcolor (BG_WHITE); std::cout << "\n"; std::cout << "Bogenmass: " << bogenmass/PI << "* PI" << std::endl; std::cout << "Cosinus: " << cosinus << std::endl; } else if (wahl == 3) { colcout.setcolor (BG_WHITE); std::cout << "\nTangens-Berechnung:" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\nBitte geben sie den Winkel ein:" << std::endl; std::cin >> grad; bogenmass = (PI * grad) / 180; x = tan( bogenmass ); double tangens = tan(grad); colcout.setcolor (BG_WHITE); std::cout << "\n"; std::cout << "Bogenmass: " << bogenmass/PI << "* PI" << std::endl; std::cout << "Tangens: " << tangens << std::endl; } } else { std::cout << wahl << " ist keine g"<<(char)129<<"ltige Eingabe!" << std::endl; std::cout << "\nDas Programm wird nun beendet." << std::endl; std::cout << "\n" << std::endl; } // Ende der if-Anweisung/ ende des Menüs colcout.setcolor (FG_RED); std::cout << "\n" << std::endl; std::cout << "\n########################################################" << std::endl; colcout.setcolor (FG_WHITE); std::cout << "\n" << std::endl; std::cout << "\n\tVielen Dank," << std::endl; std::cout << "\n F"<<(char)129<<"r" << " die benutzung meines Programms." << std::endl; std::cout <<"\n" << std::endl; Sleep(1800); std::cout <<"\n<Copyright by DaRkWolF>" << std::endl; std::cout <<"\n" << std::endl; getchar(); wait(); return 0; } }
Und hier was der Compiler sagt ;):
**
--------------------Configuration: übung7 - Win32 Debug--------------------
Compiling...
main.cpp
I:\Programme\Microsoft Visual Studio\MyProjects\Taschenrechner2\main.cpp(163) : error C2059: syntax error : 'else'
I:\Programme\Microsoft Visual Studio\MyProjects\Taschenrechner2\main.cpp(164) : error C2143: syntax error : missing ';' before '{'
I:\Programme\Microsoft Visual Studio\MyProjects\Taschenrechner2\main.cpp(183) : error C2181: illegal else without matching if
I:\Programme\Microsoft Visual Studio\MyProjects\Taschenrechner2\main.cpp(305) : fatal error C1004: unexpected end of file found
Error executing cl.exe.main.obj - 4 error(s), 0 warning(s)
**Ich blick da irgenwie nicht durch
HELP!@Entyl-SA:
Warum sollte größer als 1 noch besser sein als größer 0 ... bei der Modulo-Berechnung?THX für alle antworten!
-
PrOjEcT101 schrieb:
@Entyl-SA:
Warum sollte größer als 1 noch besser sein als größer 0 ... bei der Modulo-Berechnung?Weil das Ergebnis einer Modulo 1 Rechnung konstant 0 ist.
-
Hi
@Entyl_Sa : aha ... verstehe ... alles klar!
Kann mir denn einer noch bei den anderen error probs helfen ?
Bitte!!! komme nicht dahinter woran es liegen könnte ...THX für alle antworten!
-
boah, du solltest deinen Code mal vernünfitger einrücken.
meine empfehlung:void bla() { } class bla() { }; if (...) { do something... } else if (...) { do something different ... } while (...) { case ...: break; }
Dann kann man } / { Fehler auch leichter finden.
Nun zu deinem Code:
Ich hab jetz mal hier nen Fehler gefunden:
[cpp]
do {
cout << "\nBitte geben sie die zweite zahl ein:" << endl;
cin >> dzahl2;if (dzahl2 <= 0) {
cout << "\nUng"<<(char)129<<"ltige Eingabe! " << endl;
}
} while (dzahl2 <= 0);
[/cpp]Da fehlt dir bei dem if eine }-Klammer.
Weiter hab ichs bisher noch nich durchgesehn, mach mas am besten erstmal schritt für schrittbtw. bei deinem Code hier würde sich ein "using namespace std;" oder "using std::cout" bzw. cin / endl, rentieren.
Spart schreibarbeit ^^
-
so wie ich das sehe, hast du ne } falsch gesetzt.
schau dir mal deinen quellcode an, und überprüfe mal ganz genau, ob jedes if sein {} hat.ps: benutze statt elseif ne switch struktur
-
Hi!
Vielen Dank für eure hilfe ... ich werd das mal alles in ruhe durchgehen ...
Ich bin mir auch ziemlich sicher das ich irgendwo bei einer if-Anweisung
eine Klammer vergessen hab. joa stimmt .... die switch struktur währ in diesem
Fall besser gewesen
naja kann ich ja noch umprogrammierenTHX für die eure antworten !
Nachtrag: JUHU !! Es klappt alles wieder ! Ihr hattet recht ... hat eine Klammer an einer Stelle zu wenig gehabt und am ende eine zu viel
Großes Danke!ciao