Thunderbird3004 Geschrieben 13. Oktober 2006 Geschrieben 13. Oktober 2006 Hallo Zusammen, ich bin im moment dabei einen kleinen Rechner in C zu programmieren (Bin Anfänger). Ich bin auch schon sehr weit gekommen und hab es auch durch: if scanf("%f",1); printf("\n%f + %f = %f",x,y,x+y); und so hab ich das halt bis zur Zahl 4 gemacht (Division). Das funktioniert auch alles gut nur ich hätte es gerne so das ich nicht Zahlen von 1-4 eingeben muss sondern die Rechenzeichen. Kann mir da einer von euch helfen ? Gruß Thunderbird Zitieren
perdian Geschrieben 13. Oktober 2006 Geschrieben 13. Oktober 2006 nur ich hätte es gerne so das ich nicht Zahlen von 1-4 eingeben muss sondern die Rechenzeichen.Das ist - so ohne weiteres - nicht so einfach möglich wie bei der Eingabe der Zahlen. Operatoren lassen sich nicht "mal eben" über eine Eingabe liefern und anschließend verwenden. Zitieren
Thunderbird3004 Geschrieben 13. Oktober 2006 Autor Geschrieben 13. Oktober 2006 Ja das ist mir schon klar....ich habe jetzt gehört es geht irgendwie über eine if(getch() verbindung ? Stimmt das ? Zitieren
carstenj Geschrieben 13. Oktober 2006 Geschrieben 13. Oktober 2006 Hi, da musst du den Ausdruck schon parsen, was, wie perdi andeutet, nicht so einfach gemacht ist. Wenn du z. B. Klammern und bestimmte Rechenregeln berücksichtigen möchtest, sogar eine sehr anspruchsvolle Aufgabe. Aber seis drum, google mal nach "Parser" und "Taschenrechner". Da sollten schon einige hilfreiche Links erscheinen. Zitieren
Thunderbird3004 Geschrieben 13. Oktober 2006 Autor Geschrieben 13. Oktober 2006 Ich will ja am Anfang einfach nur mal + - * / rechnen und das auch nur mit zwei Zahlen !!! Nicht mit k lammern und so Zitieren
carstenj Geschrieben 13. Oktober 2006 Geschrieben 13. Oktober 2006 Hi, ja trotzdem musst du das parsen, was ja erstmal nix anderes heisst als dass du deinen Ausdruck aufteilen und entsprechend auswerten musst. Zitieren
Thunderbird3004 Geschrieben 13. Oktober 2006 Autor Geschrieben 13. Oktober 2006 Könnte es so funktionieren ? char mein_zeichen; scanf("%c",&mein_zeichen); if(mein_zeichen=='+') printf(" %f + %f ist %f",x,y,x+y); if(mein_zeichen=='*') printf(" %f * %f ist %f",x,y,x*y); if(mein_zeichen=='-') printf(" %f - %f ist %f",x,y,x-y); Zitieren
carstenj Geschrieben 13. Oktober 2006 Geschrieben 13. Oktober 2006 Hi, ich dachte du wolltest folgendes machen: Eingabe: 1+2 Ausgabe: 3 Mit deinem Konstrukt liest du ja wieder nur ein Zeichen ein?! Zitieren
Thunderbird3004 Geschrieben 13. Oktober 2006 Autor Geschrieben 13. Oktober 2006 Ja so wars auch gemeint !!! Ich hab erst eine Aufforderung die x anfordert dann eine andere die y anfordert und die 3. sollte dann das zeichen beinhalten !!! Ich wollte nicht alles in eine Eingabe machen Zitieren
perdian Geschrieben 13. Oktober 2006 Geschrieben 13. Oktober 2006 Könnte es so funktionieren ?Wieso probierst du es nicht einfach mal aus?! Compiler anwerfen und gucken, was passiert... Zitieren
Thunderbird3004 Geschrieben 23. Oktober 2006 Autor Geschrieben 23. Oktober 2006 Kommt zwar jetzt en bisschen verspätet aber ich konnte nicht früher schreiben. char mein_zeichen; steht in der Zeile 16 und als Fehler sagt er mir das ich in Zeile 16 einen Deklarationsfehler habe, was bedeutet das ? Zitieren
Guybrush Threepwood Geschrieben 23. Oktober 2006 Geschrieben 23. Oktober 2006 Der genaue Wortlaut der Meldung wäre interessant Zitieren
Klotzkopp Geschrieben 23. Oktober 2006 Geschrieben 23. Oktober 2006 steht in der Zeile 16 und als Fehler sagt er mir das ich in Zeile 16 einen Deklarationsfehler habe, was bedeutet das ?Kommt drauf an. So aus dem Kontext gerissen, ist das nicht eindeutig zu sagen. Der Fehler steckt nicht zwangsläufig in der Zeile, in der der Compiler ihn meldet. Ich vermute, du hast davor schon irgendwelchen anderen Code. In C müssen alle Variablendeklarationen am Anfang eines Blocks stehen. Zitieren
Thunderbird3004 Geschrieben 26. Oktober 2006 Autor Geschrieben 26. Oktober 2006 So habe das mit dem Deklarationsfehler in den Griff bekommen !!! Jetzt habe ich allerdings ein anderes Problem. Da wo mein scanf("%c",&zeichen); Befehl dran wäre springt das Programm immer weiter, sodass ich gar nicht dazu komme ein Zeichen einzugeben ....weiß jemand einen Rat ? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.