Einige {,} Klammerfehler, wie finden?
-
Nabend,
habe ein kleines Rechenprogramm geschrieben, nur funktioniert es leider nicht so, wie es soll, sprich es ist nicht "mehr" kompilierbar - ich hatte dazwischen noch einige Sachen hinzugefügt und hab Klammer Probleme -> Solche Hier: { und }. Wie finde ich die Fehler am besten? Wie geht ihr vor?
Hier wäre sonst noch der Code:
#include <stdio.h> #include <math.h> int Zohl; int Zahl1; int Zahl2; int Zahl3; double Zahl1DIV; double Zahl2DIV; double Zahl3DIV; double ResultatDIV; int Resultat; int Auswahl; char Auswahl2 = ' '; char Schlusswahl = ' '; int main() { printf("\n --------------------------------------------------------------"); printf("\n\t Dies ist ein Rechenprogramm!"); printf("\n --------------------------------------------------------------\n\n"); sleep(2000); do { printf("\nFuer Addition: -1- eingeben\n"); printf("Fuer Subtraktion: -2- eingeben\n"); printf("Fuer Multiplikation: -3- eingeben\n"); printf("Fuer Division: -4- eingeben\n"); sleep(1000); printf("\nIhre Auswahl(1-4): "); scanf("%d", &Auswahl); fflush(stdin); if (Auswahl == 1) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%d", &Zahl1); fflush(stdin); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%d", &Zahl2); fflush(stdin); printf("\nMoechten Sie eine weitere (letzte) Zahl eingeben? J/N: "); scanf("%c", &Auswahl2); if (Auswahl2 == 'J' || Auswahl2 == 'j') { printf("\nBitte geben Sie nun ihre dritte und letzte Zahl ein: "); scanf("%d", &Zahl3); Resultat = (Zahl1 + Zahl2 + Zahl3); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); sleep(1000); printf("\n\t -------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen? J/N: "); scanf("%s", &Schlusswahl); } else if (Auswahl2 == 'N' ||Auswahl2 == 'n') { Resultat = (Zahl1 + Zahl2); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); sleep(1000); printf("\n\t --------------------------------------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen?\n\t J/N: "); scanf("%c", &Schlusswahl); } } else if (Auswahl == 2) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%d", &Zahl1); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%d", &Zahl2); Resultat = (Zahl1 - Zahl2); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); printf("\n\t --------------------------------------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen?\n\t J/N: "); scanf("%s", &Schlusswahl); } else if (Auswahl == 3) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%d", &Zahl1); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%d", &Zahl2); printf("\nMoechten Sie eine weitere (letzte) Zahl eingeben? J/N: "); scanf("%s", &Auswahl2); } if (Auswahl2 == 'J' || Auswahl2 == 'j') { printf("\nBitte geben Sie nun ihre dritte und letzte Zahl ein: "); scanf("%d", &Zahl3); Resultat = (Zahl1 * Zahl2 * Zahl3); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); } else if (Auswahl2 == 'N' || Auswahl2 == 'n') { Resultat = (Zahl1 * Zahl2); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); } printf("\n\t -------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen? J/N: "); scanf("%s", &Schlusswahl); else if (Auswahl == 4) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%lf", &Zahl1DIV); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%lf", &Zahl2DIV); ResultatDIV = (Zahl1DIV / Zahl2DIV); printf("\n\nDies ist ihr Resultat: %lf!\n\n", ResultatDIV); printf("\n\t -------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen? J/N: "); scanf("%s", &Schlusswahl); } else if (Auswahl != 1 || Auswahl != 2 || Auswahl != 3 || Auswahl != 4) { printf("\nGeben Sie Bitte eine Zahl im Bereich von 1-4 ein\n\n"); } while(Schlusswahl == 'J' || Schlusswahl == 'j' || Auswahl != 1 || Auswahl != 2 || Auswahl != 3 || Auswahl != 4); system("PAUSE"); return 0; }
MfG eMi
-
Ich dr[cke Strg+A und dann Alt+F8. (MSVC.)
-
Danke für die Antwort!
Ich hab die Kombination versucht, leider passiert bei mir nichts.
Ich benutze DEV C++
MfG eMi
-
eMaNu3L schrieb:
Ich benutze DEV C++
Kannst Du das ändern?
Zum Beispiel Code::Blocks und Microsoft Visual Studio Express sind kostenlos und taugen viel viel mehr.
-
Den Quellcode vernünftig einrücken, dann beheben sich Klammerfehler so gut wie von selbst.
-
volkard schrieb:
eMaNu3L schrieb:
Ich benutze DEV C++
Kannst Du das ändern?
Zum Beispiel Code::Blocks und Microsoft Visual Studio Express sind kostenlos und taugen viel viel mehr.Bin Schüler und lerne in der Schule Programmieren, dort ist es uns vorgegeben DEV C++ zu benutzen, deshalb benutze ich es auch zu Hause..
Bin relativ neu im Programmieren und weiss auch nicht WANN un WO die einte Klammer die andere schliessen muss, aber einrücken wäre natürlich gut
-
eMaNu3L schrieb:
Bin Schüler und lerne in der Schule Programmieren, dort ist es uns vorgegeben DEV C++ zu benutzen, deshalb benutze ich es auch zu Hause..
Kein Argument.
Aber wenn Du keinen Bot benutzen willst, der Dir die Einrückung automatisch machst, mach es eben per Hand. hihi.
-
eMaNu3L schrieb:
volkard schrieb:
eMaNu3L schrieb:
Ich benutze DEV C++
Kannst Du das ändern?
Zum Beispiel Code::Blocks und Microsoft Visual Studio Express sind kostenlos und taugen viel viel mehr.Bin Schüler und lerne in der Schule Programmieren, dort ist es uns vorgegeben DEV C++ zu benutzen, deshalb benutze ich es auch zu Hause...
Frag dein Lehrer, ob der Umgang mit Dev-C++ ein Lernziel oder Lerninhalt ist
-
volkard schrieb:
eMaNu3L schrieb:
Bin Schüler und lerne in der Schule Programmieren, dort ist es uns vorgegeben DEV C++ zu benutzen, deshalb benutze ich es auch zu Hause..
Kein Argument.
Aber wenn Du keinen Bot benutzen willst, der Dir die Einrückung automatisch machst, mach es eben per Hand. hihi.Also empfiehlste mir Code Blocks, bzw. Visual Studio Express??
@ Zeus
kann ich machen, nützen wirds wohl nich..
-
Ich hab's mal durch den Einrücker von Code::Blocks geschickt.
#include <stdio.h> #include <math.h> int Zohl; int Zahl1; int Zahl2; int Zahl3; double Zahl1DIV; double Zahl2DIV; double Zahl3DIV; double ResultatDIV; int Resultat; int Auswahl; char Auswahl2 = ' '; char Schlusswahl = ' '; int main() { printf("\n --------------------------------------------------------------"); printf("\n\t Dies ist ein Rechenprogramm!"); printf("\n --------------------------------------------------------------\n\n"); sleep(2000); do { printf("\nFuer Addition: -1- eingeben\n"); printf("Fuer Subtraktion: -2- eingeben\n"); printf("Fuer Multiplikation: -3- eingeben\n"); printf("Fuer Division: -4- eingeben\n"); sleep(1000); printf("\nIhre Auswahl(1-4): "); scanf("%d", &Auswahl); fflush(stdin); if (Auswahl == 1) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%d", &Zahl1); fflush(stdin); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%d", &Zahl2); fflush(stdin); printf("\nMoechten Sie eine weitere (letzte) Zahl eingeben? J/N: "); scanf("%c", &Auswahl2); if (Auswahl2 == 'J' || Auswahl2 == 'j') { printf("\nBitte geben Sie nun ihre dritte und letzte Zahl ein: "); scanf("%d", &Zahl3); Resultat = (Zahl1 + Zahl2 + Zahl3); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); sleep(1000); printf("\n\t -------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen? J/N: "); scanf("%s", &Schlusswahl); } else if (Auswahl2 == 'N' ||Auswahl2 == 'n') { Resultat = (Zahl1 + Zahl2); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); sleep(1000); printf("\n\t --------------------------------------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen?\n\t J/N: "); scanf("%c", &Schlusswahl); } } else if (Auswahl == 2) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%d", &Zahl1); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%d", &Zahl2); Resultat = (Zahl1 - Zahl2); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); printf("\n\t --------------------------------------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen?\n\t J/N: "); scanf("%s", &Schlusswahl); } else if (Auswahl == 3) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%d", &Zahl1); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%d", &Zahl2); printf("\nMoechten Sie eine weitere (letzte) Zahl eingeben? J/N: "); scanf("%s", &Auswahl2); } if (Auswahl2 == 'J' || Auswahl2 == 'j') { printf("\nBitte geben Sie nun ihre dritte und letzte Zahl ein: "); scanf("%d", &Zahl3); Resultat = (Zahl1 * Zahl2 * Zahl3); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); } else if (Auswahl2 == 'N' || Auswahl2 == 'n') { Resultat = (Zahl1 * Zahl2); printf("\n\nDies ist ihr Resultat: %d!\n\n", Resultat); } printf("\n\t -------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen? J/N: "); scanf("%s", &Schlusswahl); else if (Auswahl == 4) { printf("\n\nBitte geben Sie nun ihre erste Zahl ein: "); scanf("%lf", &Zahl1DIV); printf("\nBitte geben Sie nun ihre zweite Zahl ein: "); scanf("%lf", &Zahl2DIV); ResultatDIV = (Zahl1DIV / Zahl2DIV); printf("\n\nDies ist ihr Resultat: %lf!\n\n", ResultatDIV); printf("\n\t -------------"); printf("\n\t Moechten Sie weitere Aufgaben loesen? J/N: "); scanf("%s", &Schlusswahl); } else if (Auswahl != 1 || Auswahl != 2 || Auswahl != 3 || Auswahl != 4) { printf("\nGeben Sie Bitte eine Zahl im Bereich von 1-4 ein\n\n"); } while(Schlusswahl == 'J' || Schlusswahl == 'j' || Auswahl != 1 || Auswahl != 2 || Auswahl != 3 || Auswahl != 4); system("PAUSE"); return 0; }
-
Danke, dass du dir Zeit genommen hast dies zu machen!
Sieht auf jedenfall übersichtlicher aus..
Nur versteh ich nich, wieso auf einmal: sleep(2000);
als undeclared angezeigt wird..Aber eben, durch welchen Bot haste es den geschickt? Irgendwelche Empfehlungen?
-
Zeus schrieb:
Frag dein Lehrer, ob der Umgang mit Dev-C++ ein Lernziel oder Lerninhalt ist
Besser nicht. SOLCHE Lehrer (also welche, die zum Beispiel sowas schrottiges einsetzen) sind meist ganz empfindlich gegenüber Neuerungen.
Wenn das Reichssoftwareentwicklungsgesetz es nicht verbieten würde, könnte er ja einfach auf einem rechner Dev-C++ für die Haupt-Arbeit und MSVC für Debugger-Läufe und Code::Blocks zum Drucken und Einrücken benutzen. So, wie man für Suppe einen Löffel und für's Brot ein Messer benutzen könnte, ohne die ganzen furchtbaren Details gleich seinem Stäbchenlehrer erzählen zu müssen.
-
eMaNu3L schrieb:
Nur versteh ich nich, wieso auf einmal: sleep(2000);
Sleep
-
Soo, hab dieses CODE:Blocks mal geladen, meinen Code hinzugefügt und alles mal zurecht gelegt, scheinbar wirds funzen, wenn's NOCH kompilierbar wäre und zwar ist "Sleep(2000);" undeclared, egal ob ich s gross oder klein schreibe,... Man, aber vorher gings ja noch lol
-
Sleep groß geht, wenn die <windows.h> noch inkludiert wird.
-
jop, kompoilierbar is es nun, leider macht das Programm das meiste falsch (Klammerfehler), naja ich werd mal gucken ob ich die Fehler ausmerzen kann.
Danke für eure Hilfen
MfG eMi
-
Sollen bei der Division nur ganze Zahlen als Ergebnis?
int Resultat;
MfG f.-th.
-
Guck Dir mal die Zeile 113 an,
dort ist ein else ohne passenden if !!!HTH,
martin