Hilfe bei einem (sehr) simplen Programm
-
Hallo zusammen,
mal vorneweg: Ich bin völliger Anfänger, was Programmieren betrifft, deshalb ist dieses Programm auch völlig simpel. Für Experten jedenfalls.
Hier erst einmal der vorhandene Quellcode, soweit ich ihn geschrieben habe:
#include <stdio.h> int main() { char a, j, k, l; printf("Taschenrechner\n"); printf("Rechentyp [+ oder - oder * oder /] "); a = getchar(); j = getchar(); k = getchar(); l = getchar(); {float a='+', b, c, d, e, f, g, h, i, j='-', k='*', l='/'; if(a == '+') { printf("\nErsten Summand eingeben:\n"); scanf("%f", &b); printf("\nZweiten Summand eingeben:\n"); scanf("%f", &c); printf("\nErgebnis: '%f' \n", b+c); }else { if(j == '-') { printf("\nMinuend eingeben:\n"); scanf("%f", &d); printf("\nSubtrahend eingeben:\n"); scanf("%f", &e); printf("\nErgebnis: '%f' \n", d-e); }else { if(k == '*') { printf("\nErsten Faktor eingeben:\n"); scanf("%f", &f); printf("\nZweiten Faktor eingeben:\n"); scanf("%f", &g); printf("\nErgebnis: '%f' \n", f*g); }else { if(l == '/') { printf("\nDividend:\n"); scanf("%f", &h); printf("\nDivisor:\n"); scanf("%f", &i); printf("\Ergebnis: '%f' \n", h/g); }else { printf("\nUngültige Eingabe! Bitte geben Sie ein gültiges Zeichen ein. \n"); } } } } return 0; } }
Das Programm soll als Taschenrechner dienen, in allen vier Grundrechenarten.
Beim kompilieren gibt's soweit keine Probleme, wenn ich allerdings das Programm ausführe, kann ich (egal welche Rechenart ich eingebe) nur addieren. Es zeigt immer nur den Teil an, der für die Addition vorgesehen ist.Meine Frage an euch:
Wie schreibe ich das Programm so um, dass ich alle vier Rechenarten benutzen kann?Danke schonmal:)
Airmonkey
-
Frage dich mal, warum du vier verschiedene Variablen für den Operator benutzt?
Und warum du die Variable 'a' zweimal deklariert hast (einmal als char und einmal als float)?Welche Entwicklungsumgebung (IDE) benutzt du denn? Hast du einen Debugger dabei? Damit kannst du dann dein Programm Zeile für Zeile durchlaufen lassen und dir die einzelnen Variablenwerte anschauen...
PS: Wenn du 'spoilern' willst: es gibt hier im C-Forum schon einige "Taschenrechner"-Programme - such einfach mal danach...
-
Die Addition wird immer ausgeführt weil a in dem scope immer '+' und damit true ist.
Wobei mich wundert, daß float a = '+' überhaupt akzeptiert wird.
-
Formatiere deinen code nach dem Schema
blah() { ... }
Um die abschließende Klammer von
{float a='+', b, c,...
zu finden, brauche ich eigentlich einen Editor, der zusammengehörige Klammern markiert.
-
EOP schrieb:
Wobei mich wundert, daß float a = '+' überhaupt akzeptiert wird.
Bei float a = 43 hättest du dich nicht gewundert - aber wo ist der Unterschied?
-
Ich benutze Dev-Cpp, da ist soweit ich weiß ein Debugger dabei.
Bei dem Programm wird auch markiert, welche Klammer zu welcher gehört.
a hab ich zweimal deklariert, weil in dem Programm zuerst die Rechenart angegeben werden soll, und dann, jenachdem, welche Rechenart, der gewünschte Text ausgegeben wird.
Zuerst war a für alle Rechenarten da, dann hat's aber beim kompilieren einen Fehler gegeben ...Ich werd mal ein paar andere Taschenrechnerprogramme anschauen
Danke für die Antworten!