tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
19
ZUGRIFFE
1587
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DAmico DAmico ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    25
    Hallo Leute,

    ich möchte einen Taschenrechner in C programmieren, doch leider muss ich zugeben, dass meine bisherigen Versuche alle gescheitert sind.
    Deshalb wende ich mich an euch.

    Der Taschenrechner soll nur einstellige Zahlen(0-9) benutzen, nur Addition und Subtraktion beherrschen und Klammern unterstützen, die bei der Rechnung beachtet werden sollen, z.B.: (4+5)-(2) oder 3+6-4

    Mein Problem bei dem Taschenrechner liegt darin, dass die ganze Rechenaufgabe als String eingelesen werden soll.

    Habt ihr eine Idee, wie ich am besten dieses Problem in Angriff nehmen kann?

    Vielen Dank für eure Hilfe im Voraus.
    Mit freundlichen Grüßen
     

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Such doch einfach mal bei Google. (Die meisten Taschenrechner basieren auf Strings).
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Das Thema hatten wir neulich erst: http://www.tutorials.de/forum/c-c/35...on-solver.html

    Evtl. ist killerkirsche ja inzwischen mit der Implementierung fertig. Wenn du es selbst machen möchtest findest du aber auch ein paar Ansätze.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    DAmico DAmico ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    25
    Dankeschön für die schnellen Antworten.

    Google habe ich, bevor ich in das forum gepostet habe, durchforstet,
    habe aber leider keinen passenden Ansatz gefunden.

    Habe mir den Thread von killerkirsche angeschaut, die Anforderungen an seinen Rechner sind noch hoher.
    Leider steige ich mit meinen bisherigen Kenntnissen da nicht ganz durch.

    Hat jemand von euch eine Idee, wie ich diese Problemstellung anpacken könnte?
    Mit freundlichen Grüßen
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von DAmico Beitrag anzeigen
    Habe mir den Thread von killerkirsche angeschaut, die Anforderungen an seinen Rechner sind noch hoher.
    Leider steige ich mit meinen bisherigen Kenntnissen da nicht ganz durch.
    Evtl. solltest du dann deine Anforderungen korrigieren. Klammerausdrücke würde ich erstmal weglassen.
    Zitat Zitat von DAmico Beitrag anzeigen
    Hat jemand von euch eine Idee, wie ich diese Problemstellung anpacken könnte?
    Ich vermute du hast das gelesen? http://www.tutorials.de/forum/c-c/24...im-parsen.html

    Dann mußt du ja eigentlich nur eine Ziffer lesen und dann in einer Schleife einen Operator, eine weitere Ziffer, die Operation ausführen bis der Ausdruck zuende ist. Letztendlich kannst du Klammern mit behandeln indem du deine Funktion rekursiv aufrufst.

    Gruß
    DAmico bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Avatar von Vereth
    Vereth Vereth ist offline Mitglied Brokat
    Registriert seit
    Nov 2009
    Ort
    Dortmund
    Beiträge
    372
    Schau dir mal den Wiki-Artikel über die Umgekehrte Polnische Notation an, vielleicht ist das etwas für dich. Vielleicht kannst du auch mal probieren, einen normalen Ausdruck in UPN umzuwandeln und dann entsprechend zu verarbeiten.
    DAmico bedankt sich. 
    Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons

    Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.

  7. #7
    DAmico DAmico ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    25
    Dankeschön für die guten Anregungen,
    ich werd mich mal auf den Stoff stürzen.

    Eine spezielle Frage zum Verständnis habe ich:
    Wenn ich vom Programm einen String "rechnung" einlesen lasse,
    also als konkretes Beispiel 2 + 3.
    Dann liegt ja in rechnung[0] die 2, das + in rechnung[1] und die 3 in rechnung[2].
    Wie lässt es sich jetzt in C umsetzen, dass ich diese Rechnung ausführe?
    Sprich ich initialisere die Variable ergebnis und möchte jetzt das Ergebnis von 2+3 in die Variable ergebnis speichern,
    Wie lässt sich dies bewerkstelligen?

    Vielen Dank im Voraus.
    Mit freundlichen Grüßen
     

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Gar nicht.
    Das ist ja eben das Problem bei Taschenrechnern und ähnlichem, man muss die einzelnen Zahlen und Operatoren aus dem String rausholen (und möglichst alle math. Regeln dabei beachten)

    Der C-Compiler kanns zwar, aber eben nur wenns im Quelltext steht.
    Beim Ausführen hilft der nicht mehr
    DAmico bedankt sich. 

  9. #9
    Avatar von Chumper
    Chumper Chumper ist offline Eichhörnchen
    Registriert seit
    Mar 2006
    Ort
    Vancouver
    Beiträge
    440
    Ist bei Addition und Subtraktion die Klammersetzung nicht sowieso obsolet (ich mag das Wort )?
     
    mfg Nils

    Problem gelöst?
    Dann bitte das Thema als erledigt anhaken
    und die Antwort bewerten, die weitergeholfen hat.


    Danke!

  10. #10
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Zitat Zitat von Chumper Beitrag anzeigen
    Ist bei Addition und Subtraktion die Klammersetzung nicht sowieso obsolet (ich mag das Wort )?
    Welche grundlegende Änderung an der Arithmetik gab es denn in letzter Zeit, die sich auf die Klammersetzung ausgewirkt hätte?

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  11. #11
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Matthias Reitinger Beitrag anzeigen
    Welche grundlegende Änderung an der Arithmetik gab es denn in letzter Zeit, die sich auf die Klammersetzung ausgewirkt hätte?
    Naja, 3 - 5 + 8 ist jetzt das gleiche wie 3 - (5 + 8) . Oder nicht?!

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  12. #12
    Avatar von Chumper
    Chumper Chumper ist offline Eichhörnchen
    Registriert seit
    Mar 2006
    Ort
    Vancouver
    Beiträge
    440
    Und doch auch das gleiche wie 2 + (1 - 5) + 8
     
    mfg Nils

    Problem gelöst?
    Dann bitte das Thema als erledigt anhaken
    und die Antwort bewerten, die weitergeholfen hat.


    Danke!

  13. #13
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von Chumper Beitrag anzeigen
    Ist bei Addition und Subtraktion die Klammersetzung nicht sowieso obsolet (ich mag das Wort )?
    ich auch

    Aber ob obsolet oder nicht .... ich finde, lieber einmal zuviel klammern als zuwenig
    Das hat ganz ein einfach was mit der Lesbarkeit Deines Codes zu tun .... Im Zweifel hilft es Dir, wenn Du nach Monaten mal wieder in den Code schaust

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  14. #14
    DAmico DAmico ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    25
    Danke sheel für deinen Post,
    dann leg ich mal den Gedankengang auf Eis, vllt findet sich ja ein anderer Lösungsweg.

    Wäre es möglich einen Zeiger zu initialisieren, der dann die jeweiligen Stellen des Strings abklappert und mit dem Zeiger dann zu rechnen?

    Ich stimme euch zu, dass die Klammersetzung bei diesem Rechner hier äußerst überflüssig ist.
    Wo ich die Aufgabenstellung gelesen hab, hab ich mir gedacht, warum wird bei diesem Rechner wert auf Klammern gelegt, da sie ja bei Subtraktion und Addition eh keine Rolle spielen.

    Mit freundlichen Grüßen
     

  15. #15
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von DAmico Beitrag anzeigen
    Wäre es möglich einen Zeiger zu initialisieren, der dann die jeweiligen Stellen des Strings abklappert und mit dem Zeiger dann zu rechnen?
    Natürlich kann man das so machen. Du mußt nur die Zeichen in den jeweiligen Wert der Ziffer umrechnen (Hinweis: ASCII Code).
    Zitat Zitat von DAmico Beitrag anzeigen
    Ich stimme euch zu, dass die Klammersetzung bei diesem Rechner hier äußerst überflüssig ist.
    Wo ich die Aufgabenstellung gelesen hab, hab ich mir gedacht, warum wird bei diesem Rechner wert auf Klammern gelegt, da sie ja bei Subtraktion und Addition eh keine Rolle spielen.
    Du scheinst die (subtile) Ironie in Matthias und meinem Beitrag nicht verstanden zu haben. Bitte überleg doch noch mal ob z.B. für den Term 3 - (5 + 8) das gleiche herauskommt wenn man keine Klammern setzt.

    Gruß
    DAmico bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Einfachen Taschenrechner programmieren
    Von Conny22 im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 12.05.10, 14:46
  2. Problem mit Taschenrechner C#
    Von Kamil1984 im Forum .NET Windows Forms
    Antworten: 24
    Letzter Beitrag: 11.11.08, 11:59
  3. Hab ein Problem mit einem ganz einfachen goto Befehl ^
    Von green_phanta im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 20.10.06, 17:17
  4. Taschenrechner / Button Problem
    Von MrVanKnobi im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 06.10.05, 21:53
  5. Antworten: 16
    Letzter Beitrag: 19.01.05, 20:14

Stichworte