Else/If Else
-
Hi,
Ich muss ein Programm schreiben in dem zwei Zahlen entweder addiert, multipliziert, subtrahiert, oder dividiert werden können.
Das ganze soll mit if ...else if... gemacht werden.
Ich konnte bis gestern noch garnicht programmieren, also seit bitte rücksichtsvoll^^ Das ist mein Ansatz:#include <stdio.h>
#include <math.h>int main ()
{
float Zahl1, Zahl2, Zahl3;printf("Geben sie Zahl1 ein: ");
scanf("%f", &Zahl1);
printf("Geben Sie Zahl2 ein: ");
scanf("%f", &Zahl2);if (Zahl1 + Zahl2)
Zahl1 + Zahl2;
printf("Das Ergebnis ist %f\n", Zahl1 + Zahl2);
else if (Zahl1 - Zahl2)
Zahl1 - Zahl2;
printf("Das Ergebnis ist %f\n", Zahl1 - Zahl2);
else if (Zahl1 * Zahl2)
Zahl1 * Zahl2;
printf("Das Ergebnis ist %f\n", Zahl1 * Zahl2);
else if (Zahl1 / Zahl2)
Zahl1 / Zahl2;
printf("Das Ergebnis ist %f\n", Zahl1 / Zahl2);return 0;
}Das funktioniert leider nicht. Und wenn ich die ,,else" überall weglasse wird zwar alles angezeigt, aber ich möchte ja dass der Benutzer aussuchen kann was das Programm ausrechnen soll.
-
Ich456789 schrieb:
Das funktioniert leider nicht. Und wenn ich die ,,else" überall weglasse wird zwar alles angezeigt, aber ich möchte ja dass der Benutzer aussuchen kann was das Programm ausrechnen soll.
Dann lass ihn das doch aussuchen.
EDIT: Lass ihn eine Nummer eingeben (ein
int
mit%d
) und rechne in Abhängigkeit von dieser Nummer.
-
Wir haben wir Code Tags, das macht den Code schön bunt:
Ich456789 schrieb:
#include <stdio.h> #include <math.h> int main () { float Zahl1, Zahl2, Zahl3; printf("Geben sie Zahl1 ein: "); scanf("%f", &Zahl1); printf("Geben Sie Zahl2 ein: "); scanf("%f", &Zahl2); // Bis hier sieht alles ganz gut aus. (Außer dass der Rückgabewert von scanf() nicht kontrolliert wird, aber das lassen wir mal aus.) if (Zahl1 + Zahl2) // Das ist natürlich Quatsch. Das was in den Klammern steht, wird zu 0 oder nicht 0 ausgewertet. Inwiefern soll die Abfrage irgendwie sinnvoll sein? Zahl1 + Zahl2; // Hier addierst du zwei Zahlen und verwirfst das Ergebnis. printf("Das Ergebnis ist %f\n", Zahl1 + Zahl2); else if (Zahl1 - Zahl2) // .. Zahl1 - Zahl2; // .. printf("Das Ergebnis ist %f\n", Zahl1 - Zahl2); else if (Zahl1 * Zahl2) // .. Zahl1 * Zahl2; // .. printf("Das Ergebnis ist %f\n", Zahl1 * Zahl2); else if (Zahl1 / Zahl2) // .. Zahl1 / Zahl2; // .. printf("Das Ergebnis ist %f\n", Zahl1 / Zahl2); return 0; }
Wie wäre es, wenn du den Benutzer einfach fragst, was er machen soll? (z.B. 1 für Addieren, 2 für Subtrahieren, etc.)
Wie du Werte einliest weißt du ja schon.
Du machst dir also eine Variable "int choice" und prüfst dann gegen 1, 2, 3, 4 und fürhst die entsprechenden Befehle aus.Wenn du hinter einem if() mehr als einen Befehl stehen hast, dann musst du Geschweifte Klammern nutzen:
if (0) printf("Hallo\n"); // Wird nicht ausgeführt. printf("Welt.\n"); // Wird ausgeführt. if (0) { printf("Hallo\n"); // Wird nicht ausgeführt. printf("Welt.\n"); // Wird nicht ausgeführt. }
-
Die Klammer hinter if () verlangt einen logischen Wert der in C üblicherweise durch einen logischen operator geliefert wird (==,<=,>=,!=,!).
Dein if(Zahl1+Zahl2) liefert keinen logischen Wert, sondern müsste anders aussehen z.B.
if( Zahl==1 )
Sollen mehrere Anweisungen zusammen ausgeführt werden, also für den Fall dass if wahr/falsch liefert, sollten sie in einem Codeblock (compound statement) {} zusammengefasst werden, alsoif( Zahl==1 ) { tuewaswennzahlgleich1_1; tuewaswennzahlgleich1_2; ... } else if( Zahl==2 ) { tuewaswennzahlgleich2_1; tuewaswennzahlgleich2_2; ... } else { tuewaswennzahlweder1noch2_1; tuewaswennzahlweder1noch2_2; ... }
-
Danke für die vielen hilfreichen antworten.
Der Ansatz mit dem int choice wäre wohl eine gute Lösung, aber die Aufgabe soll nur mit if() gelöst werden.Wenn man bei if nur einen Operator wählen kann, habe ich mir gedacht dass man auch +,-,*,/ am Anfang vom Nutzer eingeben lassen kann wie die Zahlen, sodass man anschließend Befehle wie if(Eingabe==+), else if(Eingabe==-),... erstellen kann.
Würde das wohl funktionieren? Ich wüsste nämlich nicht mit welchem Befehl man diese Zeichen eintippen könnte (%...), bzw. ob es in diesem Fall überhaupt möglich wäre.
-
Ich456789 schrieb:
Ich wüsste nämlich nicht mit welchem Befehl man diese Zeichen eintippen könnte (%...), bzw. ob es in diesem Fall überhaupt möglich wäre.
Darum sollst du es ja erstmal mit 1, 2, 3 oder 4 machen.
Dann kannst du an die Zeichen gehen.
Zeichen werden übrigens zwischen einfache Hochkamma gesteckt: '+'
-
Aha, jetzt verstehe ich. Super, ich glaub ich habe den Ansatz jetzt. Falls es nicht klappen sollte melde ich mich nochmal.
Danke
-
So, hat geklappt. Tausend dank, ich freue mich grad ungemein