C-Kurs/Taschenrechner/Musterlösung: Unterschied zwischen den Versionen
Mario (Diskussion | Beiträge) K (GEHEIM!) |
PaulG (Diskussion | Beiträge) K (verschob „Ckurs/Taschenrechner/Musterlösung“ nach „C-Kurs/Taschenrechner/Musterlösung“) |
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |
(kein Unterschied)
|
Aktuelle Version vom 5. März 2013, 17:37 Uhr
Musterlösung
Diese Aufgabe konnte mittels printf und scanf gelöst werden. Es wurde die switch/case Anweisung zur Unterscheidung für die einzelnen Operationen benutzt. Dabei wurde beachtet, dass nur ganzzahlige Werte für Operationen übergeben werden dürfen. Zum Glück sind char-Typen auch ganzzahlige Werte.
Was noch zu tun wäre, um diesen Code zu verbessern: Einbauen von Überprüfungen, ob die Eingabe überhaupt was sinnvolles enthielt. Sonst ist es möglich, dass ein Benutzer evtl. Beliebiegen Code ausführen kann und so euren Computer übernehmen kann. Bitte frage den Tutor neben dir, um weitere Informationen zu erhalten.
/** * Übungsaufgabe für den C-Kurs der Freitagsrunde * * Aufgabe: Schreibe einen einfachen Taschenrechner * * Kompilieren mit "gcc -o Taschenrechner Taschenrechner.c" */
// benutze printf/scanf #include <stdio.h>
// Startpunkt der Anwendung int main(int argc, char** argv) { // Erzeuge Variablen für die Ein- und Ausgabe int ersteZahl = 0.0; char operation = 0; int zweiteZahl = 0.0; int ergebnis = 0.0; // Frage nach den Zahlen printf("Wie lautet die erste Zahl? "); scanf("%d\n",&ersteZahl); printf("Welche Operation wird gewünscht? "); scanf("%c",&operation); printf("Wie lautet die andere Zahl? "); scanf("%d",&zweiteZahl); // berechne das Ergebnis (suche passende operation) switch( operation ) { case '+': ergebnis=ersteZahl+zweiteZahl; break; case '-': ergebnis=ersteZahl-zweiteZahl; break; case '*': ergebnis=ersteZahl*zweiteZahl; break; case '/': ergebnis=ersteZahl/zweiteZahl; break; case '%': ergebnis=ersteZahl%zweiteZahl; break; case '|': ergebnis=ersteZahl|zweiteZahl; break; case '&': ergebnis=ersteZahl&zweiteZahl; break; case '^': ergebnis=ersteZahl^zweiteZahl; break; default: fprintf(stderr, "Konnte Operation (\'%c\') nicht auswerten...\n"); return -1; } printf("----------------------------------------\n"); printf("Ergebnis für %d%c%d %d\n", ersteZahl, operation, zweiteZahl, ergebnis); return 0; }
Kommentare
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)