kleiner Taschenrechner der nicht macht was er soll
-
Sehe gerade, war ein wenig nachlässig - aber das solltest du auch hinbekommen
-
ahhh ok danke...nich nur verbesserungen sondern gleich noch was gelernt
hatte buchstaben bei char sonst immer in " " gepackt statt in ' '...kein wunder dasses nicht funktioniert hat
ich werds nochma durchgehenmal ne andere frage...umlaute kann ich ja per zb \x81 machen. jetzt hab ich aber das problem das er mir sagt das der hex wert zu lang is - meine schlussfolgerung der buchstabe danach wird zum hexwert mitgezählt -> nach hexwert neue zeile mit printf(). gibts da auch einen anderen weg?
soo jetz ma aktuelle version(allerdings noch ohne buchstaben):
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int ro, r, summand1, summand2, minuend, subtrahend, faktor1, faktor2, wert; double dividend, divisor, w, p, g, b, n; do { printf ("Geben Sie den Buchstaben der gew\x81nschten Operation ein und \n"); printf ("best\x84tigen sie mit <Enter>:\n"); printf ("Addition = 1\n"); printf ("Subtraktion = 2\n"); printf ("Multiplikation = 3\n"); printf ("Division = 4\n"); printf ("Prozentrechnung = 5\n"); printf ("Potenzierung = 6\n"); printf ("Operation: "); scanf ("%d", &ro); do { do { switch (ro) { case 1: system("cls"); printf ("Geben Sie den ersten Summanden ein: "); scanf ("%d", &summand1); printf ("Geben sie den zweiten Summanden ein: "); scanf ("%d", &summand2); printf ("Das Ergebnis ist: %d \a\n\n\n", summand1 + summand2); break; case 2: system("cls"); printf ("Geben Sie den Minuenden ein: "); scanf ("%d", &minuend); printf ("Geben sie den Subtrahenden ein: "); scanf ("%d", &subtrahend); printf ("Das Ergebnis ist: %d \a\n\n\n", minuend - subtrahend); break; case 3: system("cls"); printf ("Geben Sie den ersten Faktor ein: "); scanf ("%d", &faktor1); printf ("Geben sie den zweiten Faktor ein: "); scanf ("%d", &faktor2); printf ("Das Ergebnis ist: %d \a\n\n\n", faktor1 * faktor2); break; case 4: system("cls"); printf ("Geben Sie den Dividenden ein: "); scanf ("%lf", ÷nd); printf ("Geben sie den Divisor ein: "); scanf ("%lf", &divisor); printf ("Das Ergebnis ist: %.1f \a\n\n\n", dividend/divisor); break; case 5: do { system("cls"); printf ("----Taschenrechner zur Prozentrechnung----\n"); printf (" Was m\x94"); printf ("chten Sie Berechnen? \n"); printf (" Grundwert [G] = 1 \n"); printf (" Prozentwert [W] = 2 \n"); printf (" Prozentsatz [p] = 3 \n\n"); printf ("Zu berechnender Wert: "); scanf ("%d", &wert); do { switch (wert) { case 1: system("cls"); printf ("\nGeben Sie den Prozentwert (W) ein: "); scanf ("%lf", &w); printf ("Geben Sie den Prozentsatz (p) ein: "); scanf ("%lf", &p); printf (" Der Grundwert (G) der eingegebenen Daten ist: %.2f\n", (w / p)*100); break; case 2: system("cls"); printf ("\nGeben Sie den Grundwert (G) ein: "); scanf ("%lf", &g); printf ("Geben Sie den Prozentsatz(p) ein: "); scanf ("%lf", &p); printf ("Der Prozentwert (W) der eingegebenen Daten ist: %.2f\n", (g * p) / 100); break; case 3: system("cls"); printf ("\nGeben Sie den Grundwert (G) ein: "); scanf ("%lf", &g); printf ("Geben Sie den Prozentwert (W) ein: "); scanf ("%lf", &w); printf ("Der Prozentsatz (p) der eingegebenen Daten ist: %.2f%%\n", (w / g)*100); break; default: printf ("\nERROR\n"); printf ("Bitte geben Sie die Zahl des zuberechnenden Wertes an: "); scanf ("%d", &wert); } } while (wert < 1 || wert > 3); printf ("F\x81"); printf ("r eine weitere Rechnung dr\x81"); printf ("cken Sie <1>, zum Beenden <0> : "); scanf ("%d", &r); break; } while (r != 0); case 6: system("cls"); printf ("Geben Sie die Basis ein: "); scanf ("%lf", &b); printf ("Geben Sie den Exponenten an: "); scanf ("%lf", &n); double result = pow(b, n); printf ("Das Ergebnis der Potenzierung ist %.2lf.\n", result); break; default: printf ("\nERROR\n"); printf ("Bitte geben Sie einen Wert von 1-6 ein, der der gew\x81"); printf ("nschten \n"); printf ("Operation entspricht: "); scanf ("%d", &ro); } } while (ro < 1 || ro > 6); } while (ro > 0 && ro < 7); printf ("F\x81"); printf ("r eine weitere Rechnung dr\x81"); printf ("cken Sie <1>, sonst dr\x81"); printf ("cken Sie <0>: "); scanf ("%d", &r); system("cls"); } while (r!= 0); return 0; }
ein problem ist noch, das wenn ich ne %-rechnung mache und danach sage (k)eine weitere rechnung er sofort zur potenzeirung springt
entdeckt noch jemand sonstige fehler die ich übersehn hab?
-
Umlaute machen bei Programmieren oft Ärger und sind auch teilweise nur regional bekannt.
Deswegen bevorzuge ich statt ä -> ae u.s.w.
Prüfe bei deinem Quelltext zu welchem case welches break gehört.
Schau mal ob dein Editor oder deine IDE eine Funktion zum automatischen Quelltextformatieren hat. Code::Blocks hat so etwas, es sollte aber noch weitere geben.
MfG f.-th.
-
Nimm statt Hex-Werten Oktalwerte, dann hast du
das Problem mit zu langen Hex-werten nicht wenn ein a-f
folgt, da die Oktalwerte immer drei Ziffern haben.
-
was sind denn die oktalwerte für ä,ö,ü?
-
-
cool danke
...ich werd dann wenn ich wieder zuhause bin ma die aktuelle version reinstelln
-
gibt nen kleinen workaround, den ich selber verwende :
( der tipp mit den Oktalwerten war mir auch neu)
nach dem
"\x84"
ein Leerzeichen einfügen, und sofort mit /b wieder löschen.
also
"\x84 \bhier weiterer text"
ich weiß, sieht im quelltext unschön aus...
-
Keithy schrieb:
nach dem
"\x84"
ein Leerzeichen einfügen, und sofort mit /b wieder löschen.
Und was machst du, wenn das Ausgabegerät das nicht versteht?
-
so wiegesagt jetzt mal die aktuelle version...
was bis jetzt noch nicht funktioniert ist wiegesagt das programm nach einer prozentrechnung zu beenden und das ergebnis einer rechnung wird nur n bruchteil einer sekunde angezeigt aber ich kann mich eig nich drann erinnern iwas großartig geändert zu haben...nja....ich arbeite dran#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int ro = 0, r, summand1, summand2, minuend, subtrahend, faktor1, faktor2, wert; double dividend, divisor, w, p, g, b, n; char c; do { printf ("Geben Sie den Buchstaben der gew\x81nschten Operation ein und \n"); printf ("best\x84tigen sie mit <Enter>:\n"); printf ("Addition = 1\n"); printf ("Subtraktion = 2\n"); printf ("Multiplikation = 3\n"); printf ("Division = 4\n"); printf ("Prozentrechnung = 5\n"); printf ("Potenzierung = 6\n"); printf ("Operation: "); scanf ("%d", &ro); while ((c = getchar()) != EOF && c != '\n'); do { do { switch (ro) { case 1: system("cls"); printf ("Geben Sie den ersten Summanden ein: "); scanf ("%d", &summand1); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben sie den zweiten Summanden ein: "); scanf ("%d", &summand2); while ((c = getchar()) != EOF && c != '\n'); printf ("Das Ergebnis ist: %d \n\n\n", summand1 + summand2); break; case 2: system("cls"); printf ("Geben Sie den Minuenden ein: "); scanf ("%d", &minuend); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben sie den Subtrahenden ein: "); scanf ("%d", &subtrahend); while ((c = getchar()) != EOF && c != '\n'); printf ("Das Ergebnis ist: %d \n\n\n", minuend - subtrahend); break; case 3: system("cls"); printf ("Geben Sie den ersten Faktor ein: "); scanf ("%d", &faktor1); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben sie den zweiten Faktor ein: "); scanf ("%d", &faktor2); while ((c = getchar()) != EOF && c != '\n'); printf ("Das Ergebnis ist: %d \n\n\n", faktor1 * faktor2); break; case 4: system("cls"); printf ("Geben Sie den Dividenden ein: "); scanf ("%lf", ÷nd); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben sie den Divisor ein: "); scanf ("%lf", &divisor); while ((c = getchar()) != EOF && c != '\n'); printf ("Das Ergebnis ist: %.1f \n\n\n", dividend/divisor); break; case 5: do { system("cls"); printf ("----Taschenrechner zur Prozentrechnung----\n"); printf (" Was m\x94 \bchten Sie Berechnen? \n"); printf (" Grundwert [G] = 1 \n"); printf (" Prozentwert [W] = 2 \n"); printf (" Prozentsatz [p] = 3 \n\n"); printf ("Zu berechnender Wert: "); scanf ("%d", &wert); while ((c = getchar()) != EOF && c != '\n'); do { switch (wert) { case 1: system("cls"); printf ("\nGeben Sie den Prozentwert (W) ein: "); scanf ("%lf", &w); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben Sie den Prozentsatz (p) ein: "); scanf ("%lf", &p); while ((c = getchar()) != EOF && c != '\n'); printf (" Der Grundwert (G) der eingegebenen Daten ist: %.2f\n", (w / p)*100); break; case 2: system("cls"); printf ("\nGeben Sie den Grundwert (G) ein: "); scanf ("%lf", &g); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben Sie den Prozentsatz(p) ein: "); scanf ("%lf", &p); while ((c = getchar()) != EOF && c != '\n'); printf ("Der Prozentwert (W) der eingegebenen Daten ist: %.2f\n", (g * p) / 100); break; case 3: system("cls"); printf ("\nGeben Sie den Grundwert (G) ein: "); scanf ("%lf", &g); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben Sie den Prozentwert (W) ein: "); scanf ("%lf", &w); while ((c = getchar()) != EOF && c != '\n'); printf ("Der Prozentsatz (p) der eingegebenen Daten ist: %.2f%%\n", (w / g)*100); break; default: printf ("\nERROR\n"); printf ("Bitte geben Sie die Zahl des zuberechnenden Wertes an: "); scanf ("%d", &wert); while ((c = getchar()) != EOF && c != '\n'); } } while (wert < 1 || wert > 3); printf ("F\x81r eine weitere Rechnung dr\x81 \bcken Sie <1>, zum Beenden <0> : "); scanf ("%d", &r); while ((c = getchar()) != EOF && c != '\n'); } while (r != 0); break; case 6: system("cls"); printf ("Geben Sie die Basis ein: "); scanf ("%lf", &b); while ((c = getchar()) != EOF && c != '\n'); printf ("Geben Sie den Exponenten an: "); scanf ("%lf", &n); while ((c = getchar()) != EOF && c != '\n'); double result = pow(b, n); printf ("Das Ergebnis der Potenzierung ist %.2lf.\n", result+result-result); break; default: printf ("\nERROR\n"); printf ("Bitte geben Sie einen Wert von 1-6 ein, der der gew\x81nschten \n"); printf ("Operation entspricht: "); scanf ("%d", &ro); while ((c = getchar()) != EOF && c != '\n'); } } while (ro < 1 || ro > 6); } while (ro > 0 && ro < 7); printf ("F\x81r eine weitere Rechnung dr\x81 \bcken Sie <1>, sonst dr\x81"); printf ("cken Sie <0>: "); scanf ("%d", &r); while ((c = getchar()) != EOF && c != '\n'); system("cls"); } while (r!= 0); return 0; }