lennart-rademacher Geschrieben 17. März 2005 Geschrieben 17. März 2005 Ich brache Hilfe bei einem Programm, was ich haben muss mit C und C++. Es soll ein Taschenrechner sein, der die Operatoren einliest und das Ergebnis dann wieder ausgibt. Er muss aber auch als Besonderheit in Worten geschriebene Zahlen und Operatoren(+,-,* und /) erkennen und berechnen können. Man soll zum Beispiel vierundvierzig - drei eingeben können, so dass er dann das richtige Ergebnis ausgibt. Das alles mit +,-,* und /. Er soll mit den Zahlen zwischen -10.000.000 bis 10.000.000 arbeiten können. Es wäre sehr nett, wenn Ihr mir Hilfe bezüglich des Programmes in einer oder beiden C-Sprachen geben könntet oder mir ein fertiges Programm (ich benutze devC++ 4.9) per E-Mail an lennart-rademacher@web.de. Vielen Dank im Vorraus. Schönen Tag noch Gruß Lennart Zitieren
carstenj Geschrieben 17. März 2005 Geschrieben 17. März 2005 Hi, für 250,- Euro isses deins. Bin heute großzügig, nutze die Chance! EDIT: Achja, Code wird erst verschickt, wenn Geld eingagen ist. Nur Überweisung. Zitieren
Bubble Geschrieben 17. März 2005 Geschrieben 17. März 2005 für 250,- Euro isses deins. Bin heute großzügig, nutze die Chance! Hast bei Deiner Kalkulation schon berücksichtigt, dass Zahlen und Operatoren ausgeschrieben werden dürfen? Ist doch eigentlich ein Sonderwunsch, oder? Ich brache Hilfe bei einem Programm, was ich haben muss mit C und C++. Wenn Du eine bestimmt Frage hast, werden ich oder andere Dir gerne helfen, soweit möglich, aber Dir das Programm schreiben wird vermutlich niemand. Da C++ praktisch C beinhaltet ist die Frage nach C und C++ auch nicht ganz klar. Zitieren
nic_power Geschrieben 17. März 2005 Geschrieben 17. März 2005 Hallo, Ich brache Hilfe bei einem Programm, was ich haben muss mit C und C++. D.h. Du solltest das Programm einmal in C und einmal in C++ implementieren? Er muss aber auch als Besonderheit in Worten geschriebene Zahlen und Operatoren(+,-,* und /) erkennen und berechnen können. Eine Taschenrechner-Implementierung in C/C++ ist nichts besonderes, dafür gibt es jede Menge Beispiele im Netz und die Grundrechenarten lassen sich auch problemlos selbst implementieren. Wichtig ist nur, dass Du als erstes eine Parser für die natürlichsprachigen Zahlen implementierst. Nach dem Parsen und Umwandeln in ein maschinenlesbares Format kannst Du diese Zahlen dann in eine Standard-Implementierung des Taschenrechners schicken. Nic Zitieren
lennart-rademacher Geschrieben 19. März 2005 Autor Geschrieben 19. März 2005 keine weitere hilfe? Zitieren
nic_power Geschrieben 19. März 2005 Geschrieben 19. März 2005 Hallo, doch, sicher. Poste den Code den Du hast und Beschreiben die Stelle, an der die Probleme (und das Problem selbst) auftreten. Nic Zitieren
lennart-rademacher Geschrieben 19. März 2005 Autor Geschrieben 19. März 2005 ich weiss ja nicht wie ich das hinbekomme, das auch in worte geschriebene zahlen berechnen kann.... Zitieren
lennart-rademacher Geschrieben 19. März 2005 Autor Geschrieben 19. März 2005 Ich habe mal den ersten Quellcode: #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(int argc, char *argv[]) { int eingabe ; float addrech, subrech, multrech, divrech; while(1) { printf("--------Menue----------\n"); printf("1) Addieren(+)\n"); printf("2) Subtrahieren(-)\n"); printf("3) Multiplizieren(*)\n"); printf("4) Dividieren(/)\n"); printf("5) Beenden\n"); scanf("%d", &eingabe); if(eingabe==1) {printf("Bitte geben Sie die Rechnung ein:"); scanf("%f",&addrech); printf("Das Ergebnis lautet:"); } if(eingabe==2) {printf("Bitte geben Sie die Rechnung ein:"); scanf("%f",&subrech); printf("Das Ergebnis lautet:"); } if(eingabe==3) {printf("Bitte geben Sie die Rechnung ein:"); scanf("%f",&multrech); printf("Das Ergebnis lautet:"); } if(eingabe==4) {printf("Bitte geben Sie die Rechnung ein:"); scanf("%f",&divrech); printf("Das Ergebnis lautet:"); } else if(eingabe==5) printf("Das Programm wird beendet!"); break; } else { printf("Bitte geben Sie einen gueltigen Meneeintrag ein!"); } } getch(); system("PAUSE"); return 0; } Der läuft aber noch nicht, aber ich weiss nicht warum, ich habe den jetzt mit einer Schleife gemacht, was aber nicht unbedingt sein muss. Vielleicht kann einer gucken wo der Fehler ist und mir Hilfe geben, bzw. korrigieren Quellcode zurückposten. Außerdem weiss ich nicht ob er jetzt ausgeschriebene Zahlen auch bearbeitet... Danke für eure Hilfe Zitieren
Split Geschrieben 19. März 2005 Geschrieben 19. März 2005 else if(eingabe==5) printf("Das Programm wird beendet!"); break; } Du hast zwischen dem "else if" und dem "printf" eine Blockklammer vergessen. Außerdem weiss ich nicht ob er jetzt ausgeschriebene Zahlen auch bearbeitet... Er bearbeitet noch nicht mal richtige Zahlen, sondern liest nur eine einzige ein. Du soltest jetzt erstmal den Code implementieren, der erstmal nur normale Zahlen (also keine ausgeschriebenen) bearbeitet. Zitieren
lennart-rademacher Geschrieben 19. März 2005 Autor Geschrieben 19. März 2005 das programm soll ja eine reihe von zahlen einlesen können, ich weiss nicht ob ich jede variabel deklarieren soll, ich will ja nicht, das er jede einzelne anfragen soll... kann mir nicht jemand mal so von anfang an helfen, ist wirklich wichtig! Zitieren
Klotzkopp Geschrieben 19. März 2005 Geschrieben 19. März 2005 Ist dir denn überhaupt klar, wie das Programm überhaupt funktionieren soll, von der Umsetzung in eine Programmiersprache mal ganz abgesehen? Sollst du Regeln wie Punkt-vor-Strich berücksichtigen, oder einfach von links nach rechts abarbeiten? Sind Klammern erlaubt? Zitieren
lennart-rademacher Geschrieben 19. März 2005 Autor Geschrieben 19. März 2005 Punkt vor Strich und Klammern sollen auch berücksichtigt werden... Ich weiss aber nicht wirklich wie ich anfangen soll, deswegen brauche ich hilfe Zitieren
Bubble Geschrieben 19. März 2005 Geschrieben 19. März 2005 Vom Prinzip her benötigst Du zuerst einen Parser, der Dir die Rechenaufgabe zerlegt und prinzipiell einen binären Baum aufbaut, mit dessen Hilfe Du die Aufgabe, unter Berücksichtigung von Punkt vor Strichrechnung, lösen kannst. Anstatt den Baum aufzubauen, kann direkt Rekursion zur Berechnung verwendet werden. Als Eingabe bekommt der Parser eine Zeichenkette, die die Rechenaufgabe enthält, beispielsweise s0="1+2*3*4*7". Diese Zeichenkette musst Du zuerst an den Operatoren zerlegen. Dazu suchst Du zuerst von links nach Rechts die Operatoren für Strichoperationen (+ und -) und teilst an ihnen den Eingabestring in einen linken und rechten Anteil, jeweils ohne den Operator. Also aus s0 ergibt sich s1="1" und s2="2*3*4". Auf die Teilstrings wendest Du nun wieder rekursiv den Parser für Strichoperationen an, bis keine weiteren gefunden wurden. Sobald ein Teilstring keine Strichoperationen mehr enthält, wendest Du einen Parser an, der für Punktoperationen (* und /) analog vorgeht. So bleibt s1 erhalten und aus s2 wird s3="2" und s4="3*4" gebildet. Aus s4 ergibt sich in der nächsten Rekursionsstufe s5="3" und s6="4". Nachdem keine Punktoperartionen mehr gefunden wurden bist Du mit der Rekursion zu ende und wandelst die Strings s2, s3, s5 und s6 in Integer oder Double Werte um und verknüpfst sie rückwärts anhand der jeweils gefundenen Operation. Aus s5 und s6 ergibt sich eine 12, die das Ergebnis der Teilaufgabe in s4 darstellt. Aus s4 und s3 ergibt sich eine 24, das Teilergebnis für s2. Aus s1 und s2 ergibst sich zum Schluss das Rechenergebnis 25, was der Aufgabe in s0 entspricht. Zum Bearbeiten von in Worten geschrieben Aufgaben, baust Du Dir am besten einen Parser, der Wörter von Zahlen und Operationen erkennt und diese in "normale" Zahlen und Operatoren umwandelt. Also aus "zwei mal zwei" soll "2*2" werden. Ich hoffe ich habe mich bei der Erklärung nicht irgendwo vertan, ich habe den Beitrag recht schnell getippt... Bitte um Nachsicht Zitieren
lennart-rademacher Geschrieben 20. März 2005 Autor Geschrieben 20. März 2005 Ich kriege das nicht hin , benötige es aber zu Dienstag, kann sich nicht einer durchringen und mir ein Programm schreiben, das wäre echt nett. Ist echt wichtig. Vielen Dank Zitieren
geloescht_Newlukai Geschrieben 21. März 2005 Geschrieben 21. März 2005 Ich kriege das nicht hin , benötige es aber zu Dienstag, kann sich nicht einer durchringen und mir ein Programm schreiben, das wäre echt nett. Ist echt wichtig. Vielen Dank Vielleicht haben wir auch echt wichtige Sachen zu tun? Aber ich schließe mich carstenj an. Ich würde für EUR 250,- die Nacht durchackern, falls nötig. Mal SPaß beiseite. Es ist nicht so, daß keiner helfen will. Du hast Dich für diesen Beruf Fachinformatiker entschieden und Du mußt ihn auch machen. Als Maurer kannst Du auch nicht mal eben im INet nachfragen, ob Dir jemand eine Erker mauern kann, weil Du noch nie was davon gehört hast. Wenn Du allerdings Probleme hast, hilft Dir gerne jemand. Zitieren
geloescht_Newlukai Geschrieben 21. März 2005 Geschrieben 21. März 2005 Bildet ein Projekt-Team, erhöht die Forderung auf 400 EUR und alle sind zufrieden Das nenn' ich einen konstruktiven Vorschlag *g* da wird einfach mal davon ausgegangen, dass jeder ein komplettes Programm mal eben so runterschreiben kann und das auch noch in jeder Situation machen wird Das erinnert mich an meine Mutter. Die hat sich mal gefragt, wieso man 3 Jahre "Computerisch" lernen müßte. Als sie mal hier war und gesehen hat, an was wir Azubis so arbeiten (und wir arbeiten wirklich, nicht wie die DTAG-Azubis), wurde ihr klar, daß wir zu wenig Zeit haben. Aber das ist alles ein allgemeines großes Problem auf das man immer wieder stößt. Man denke nur an die vielen Leute, die sich nicht intensiv mit Rechnern beschäftigen und "nur mal eben" einen Text am Rechner schreiben wollen. Was in Programmen alles steckt, damit man "nur mal eben" was tun kann, ist gewaltig. Genauso wie die Leistung des Maurers, der "nur mal eben" einen Erker bastelt. Da wären wir auch wieder bei den Kunden, die alles in kürzester Zeit verlangen. Aber ich merk' schon, ich werd' wieder philosophisch. @carstenj: Ganz Deiner Meinung. Zitieren
perdian Geschrieben 21. März 2005 Geschrieben 21. März 2005 Man denke nur an die vielen Leute, die sich nicht intensiv mit Rechnern beschäftigen und "nur mal eben" einen Text am Rechner schreiben wollen. Was in Programmen alles steckt, damit man "nur mal eben" was tun kann, ist gewaltig.Richtig! Darum bastel ich auch keine Programme, sondern entwickle sie. Basteln können viele, aber so sieht dann das Ergebnis hinterher auch aus. Und ich bin mal gespannt, wann es sich bis in die Chefetagen durchspricht, dass ein Programm, was in wenigen Tagen gebastelt worden ist zwar auf den ersten Blick billig erscheint, aber auf den zweiten Blick dann plötzlich tierische Folgekosten nach sich zieht, weil die Wartung (und irgendwann auch vielleicht mal eine Erweiterung) wegen mangelhafter (oder komplett fehlender) Strukturierung das 5fache der Zeit benötigt, die ein von Anfang an vernünftig enwickeltes Programm brauchen würde. Genauso wie die Leistung des Maurers, der "nur mal eben" einen Erker bastelt. Da wären wir auch wieder bei den Kunden, die alles in kürzester Zeit verlangen.Das liegt aber auch an der Art, wie Software dem Kunden verkauft wird. Ich glaube nicht, dass ein Kunde, dem du erklärst "Ja, Sie sehen zwar schon die Oberfläche, aber im Hintergrund fehlt ja noch die komplette Anbindung an XYZ" sich gegen einen längeren Zeitraum sträuben wird. Das Problem ist, dass man im Marketing gerne selber davon ausgeht "Oberfläche steht, also ist das Produkt fertig". Bei einem Maurer ist das einfacher, da ist die Arbeit halt zuende, wenn die Mauer steht - da gibt's einen relativ einfachen Weg zu sagen "fertig/nicht fertig". Aber ich merk' schon, ich werd' wieder philosophisch.Man muss sich auchmal aufregen dürfen Zitieren
Klotzkopp Geschrieben 21. März 2005 Geschrieben 21. März 2005 Jetzt ab bitte zurück zum Thema. @lennart-rademacher: Wenn du konkrete Fragen hast, raus damit. Du hast gemerkt, eine Komplettlösung wirst du hier nicht umsonst bekommen. @alle anderen: Diskussionen über Softwareentwicklung bitte im DT führen Zitieren
perdian Geschrieben 21. März 2005 Geschrieben 21. März 2005 @alle anderen: Diskussionen über Softwareentwicklung bitte im DT führen *grummel* Okay okay... wird gemacht Dabei wurde es doch gerade interessant Zitieren
geloescht_Newlukai Geschrieben 21. März 2005 Geschrieben 21. März 2005 Find' ich auch. Aber: Die Arbeit ruft. *g* Zitieren
schmalbert Geschrieben 24. September 2006 Geschrieben 24. September 2006 hallo, habe den thread nur überflogen, daher gefahr, dass ich OT bin; die meisten posts hier im thread scheinen das aber auch zu sein. hier vielleicht ein initialer hinweis: einen rechner mit den grundrechenarten kann man relativ einfach durch 2 stacks implementieren. ein stack für operanden und einer für operatoren. man kann, wenn man UPN verwendet, auch mit einem stack auskommen. google einfach mal mit den o.g. stichwörtern, um eine detailiertere erklärung zu finden. grüsse Zitieren
Klotzkopp Geschrieben 24. September 2006 Geschrieben 24. September 2006 habe den thread nur überflogen, daher gefahr, dass ich OT bin; Du bist nicht unbedingt OT, aber dafür mehr als ein wenig spät. Ich glaube nicht, dass der Threadersteller 18 Monate nach dem Abgabetermin damit noch viel anfangen kann. Zitieren
schmalbert Geschrieben 24. September 2006 Geschrieben 24. September 2006 wenns um die sache an sich und nicht um nen termin geht, vielleicht doch 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.