Frage zu Variablen
-
Hallo ich versuche einen Rechner zu programieren
Die anfänglichen Schritte habe ich schon also das man rechnen kann, aber eben nur mit 2 variablen jetzt will ich das man das letzte Ergebnis z.b. +5 nehmen kann.
{ int a; float b; float c; float d; int x; anfang: scanf("%i",&a); if (a>=5) { } if (a<=0) { } if (a==1) { scanf("%f",&b); scanf("%f",&c); float d=b+c; } if (a==2) { scanf("%f",&b); scanf("%f",&c); float d=b-c; } if (a==3) { scanf("%f",&b); scanf("%f",&c); float d=b*c; } if (a==4) { scanf("%f",& b); scanf("%f",& c); float d=b/c; } feae: scanf("%i",&x); if (x<=0) { goto feae; } if (x>=4) { goto feae; } if (x==3) { } if (x==2) { goto anfang; } if (x==1) { if (a==1) { float d=b+c; } scanf("%i",&a); if (a==1) { scanf("%f",&c); float b=d+c; } if (a==2) { scanf("%f",&c); float b=d-c; } if (a==3) { scanf("%f",&c); float b=d*c; } if (a==4) { scanf("%f",& c); float b=d/c; } } }also so sieht der Grundaufbau aus ist noch nicht ganz fertig und mein Problem ist das er "a" nur am Anfang speichert und bei der 2. Abfrage ist es verschwunden
dieses Problem könte ich umgehen wen ich "d" speichern könte was ebenfals nicht funktioniertwürde mich um Antworten freuen
-
Phu.. Das sieht schreklich aus.

Naja. Ich probiere zu helfen, ohne deinen Code verstehen zu müssen.

Du kannst ja das Resultat der letzen Berechnung irgendwie global speichern. (Das ist das, was ich mal annehme, dass du willst). Und jetzt tust du zusätzlich zum ausgeben des Resultates einfach das Resultat ebenfalls in eine Variable speichern.
-
ja das ist das was ich will mus man auch nicht verstehen
Wie kan ich das Global speichern das hab iahc auch gegoogelt aber leider nichts gefunden.
-
Einfach bevor die Funktionalitär kommt.
z.B richtig global:
float ans; int main () { // mache berechnung // und speichere es in ans }
-
selbst wen ich es speicher ist es irgendwie wieder weg
float c; int main () { float a,b; scanf("%f",&a) scanf("%f",&b) float c=a+b }zumindest wen ich das so richtig hab ^^
-
"Irgendwie wieder weg" ist kein Fehler. Drück dich bitte genauer aus.
-
float c; int main () { printf("Hallo"); { float a,b; scanf("%f",&a); scanf("%f",&b); float c=a+b; } { printf("%f",c); } }hier komt bei der ausgabe von c 0 und ich will das dort a+b erscheint
-
The_T schrieb:
float c; int main () { printf("Hallo"); { float a,b; scanf("%f",&a); scanf("%f",&b); float c=a+b; } { printf("%f",c); } }hier komt bei der ausgabe von c 0 und ich will das dort a+b erscheint
Weil das c, in dem das Ergebnis der Addition "a + b" gespeichert ist ein anderes ist als das welches du global definiert hast.
Beschäftige dich mit Gültigkeitsbereich von Variablen.
-
ich hab auch bemerkt das das nur in dem Bereich gilt doch gibt es eine möglichkeit das die Variable in beiden Bereichen den selben wert hat ohne sie zusammen zu fassen.
-
The_T schrieb:
ich hab auch bemerkt das das nur in dem Bereich gilt doch gibt es eine möglichkeit das die Variable in beiden Bereichen den selben wert hat ohne sie zusammen zu fassen.
Es ist nicht "die Variable", das sind deren 2!
Die eine ist global sichtbar, die andere nur in diesem Block:{ float a,b; scanf("%f",&a); scanf("%f",&b); float c=a+b; }Beachte deine geschweiften Klammern, diese markieren den Block. Das "float c" am Ende deklariert eine neue Variable vom Typ float mit Namen "c". Es ist zwar der gleiche Name, aber eben eine andere Variable.
Wenn du das float weglässt, also nur noch "c = a+b;" in der Zeile steht, gibt es in deinem Programm nur noch ein "float c", nämlich das globale, und alles funktioniert so wie du es haben willst.
-
Vielen Dank ich weiß ich kan meine Fragen oft schlecht formulieren
so funktioniert es!
-
noch ein gut gemeinter hinweis: Goto=NoGo also bitte nicht verwenden sondern stattdessen schleifen benutzen. danke

-
Nichts gegen goto.

-
gehenichtüberlos schrieb:
Nichts gegen goto.

Doch,
gotokann nichts. Besser gleich Sprachen mit COMEFROM nutzen.
-
fals jemand langeweile hat wie kanurzt man schleifen um goto zu umgehen ^^(ich programiere seit ca 5h also was will ich machen ich nehm halt das 1. was ich seh und funktioniert ^^)
-
Anstatt:
loop: //... if ( Bedingung ) goto loop;machst du:
while ( Bedingung ) { //... }