Variable scheint sich immer wieder von neu zu setzen
-
Schönen sonnigen Samstag.
Ich wollte mal einen Taschenrechner programmieren der nach jeder Eingabe die Zeile löscht. Eben wie die alten Rechner von damals.Nun soll das ganze in einer Endlos Schleife laufen. Doch leider setzt sich die Variable "a" nach einem Durchlauf wieder zurück und es lässt sich nicht mit dem vorherigen Wert weiterrechnen.
Habe ich nun etwas übersehen was bei der Programmiersprache C üblich ist? Oder woran könnte es liegen?
Über jede Hilfe bin ich sehr dankbar. Danke#include<stdio.h> #include<stdlib.h> #include<conio.h> int a, b; char x = 0; //char wert. hier soll + , -, *, / eingegeben werden int rechner(){ do{ scanf("%d", &a); fflush(stdin); system("cls"); if(x != 0){ /*x wurde noch nicht zugewiesen, deswegen beim ersten Durchlauf überspringen*/ if(x == 43){ a = a + b; } if(x == 42){ a = a * b; } if(x == 45){ a = a - b; } if(x == 47){ a = a / b; } printf("%d", a); } x = getch(); //hier wird x als +, -, * oder / eingegeben fflush(stdin); system("cls"); scanf("%d", &b); fflush(stdin); system("cls"); if(x == 43){ //prüfe welchen Wert x angenommen hat a = a + b; } if(x == 42){ a = a * b; } if(x == 45){ a = a - b; } if(x == 47){ a = a / b; } printf("%d", a); x = getch(); fflush(stdin); system("cls"); }while(1); //1 = true weil endlos } int main(){ rechner(); return 0; }
-
Du liest ja auch jedesmal a neu ein.
Möglicherweise beginnt deine Schleife ja an der falschen Stelle.Noch was:
verzichte auf Magic Numbers wie 42 oder 45 oder ... sonder schreibe direkt hin, welches Zeichen gemeint ist.
Also '*' oder '-' oder ...fflush(stdin);
ist vom Standard her nicht vorgesehen: https://www.c-plusplus.net/forum/viewtopic.php?t=39349Ist
system("cls")
wirklich nötig?Verbessere deinen Einrückungsstil. (Wo ist die Schließende Kalmmer zu
if(x != 0)
?)