Hallo, ich habe vor, eine Diviosion in C++ zu schreiben. Das Programm ist wie folgt: #include <stdio.h> void main(void) { float F,I,E; int Fi, Ii, M; printf("Test\n"); printf("Eingabe1: "); scanf_s("%f",&F); printf("Eingabe2: "); scanf_s("%f",&I); E = F/I; Fi = (int)F; Ii = (int)I; M=Fi% Ii; printf("%f / %f = %f\n",F,I,E); printf("%i geteilt durch %i ist %i (rest) \n",Fi,Ii,M); } nun möchte ich noch einbauen, dass das Programm wie eine Schriftliche Division in der Grundschule aussieht, hat jemand eine idee?
Andi schrieb: > hat jemand eine idee? Überleg dir halt wie du in der Grundschule dividiert hast ... zuerst die tausender, hunderter, zehner, einer.
Die Aufgabe ist: Eine Zahl mit einer anderen Dividieren, das ergebnis mit nachkommastellen ausgeben, soweit bin ich. siehe oben. Jetzt soll noch angezeigt werden, dass die komplette rechnung (wie in klasse 4) angezeigt wird. Da hänge ich fest und weiß nicht, wie ich das umsetzen soll (C)
Andi schrieb: > Eine Zahl mit einer anderen Dividieren, das ergebnis mit > nachkommastellen ausgeben, soweit bin ich. siehe oben. Eher nicht. Du sollst wahrscheinlich die zwei Zahlen durch Integer Operationen teilen, nicht mittels Float. Also den schriftlichen Divisionsprozess nachbilden. Schau dir an wie der geht und programmiere das nach. Dazu versuche zu formulieren wie du vorgehst. Du brauchst dazu eine Schleife, die sehe ich in deinem Programm nicht. Ausserdem brauchst du dazu keinerlei float, Integer oder long reichen. Tipp: Eine Integer Division (Operator '/'schneidet die Nachkommastellen ab Zusätzlich brauchst du noch den Rest (Modulo), das ist der Operator '%'.
Andi schrieb: > Jetzt soll noch angezeigt werden, dass die komplette rechnung (wie in > klasse 4) angezeigt wird. Da hänge ich fest und weiß nicht, wie ich das > umsetzen soll (C) Bist Du Student in irgendeiner Informatik-Studienrichtung? Weil die Lösung Deiner Aufgabe eigentlich nur zum geringsten Teil etwas mit "E = F/I;" zu tun hat? Wenn es "wie in Klasse 4 angezeigt" werden soll, dann bedeutet das nicht weniger als: Du brauchst die gesamte Zwischenrechnung im Dezimalsystem. Das Problem: Moderne Computer rechnen nirgends im Dezimalsystem. Ich persönlich würde das mit Strings lösen. Kannst Du denn wenigstens davon ausgehen, dass die beiden zu teilenden Zahlen F und I ganzzahlig sind, und F>I? Und nur das Ergebnis ist eine Gleitkommazahl? Oder wäre das eine zu stark einschränkende Annahme? Mal angenommen, F und I dürften ganzzahlig sein und F>I, etwa: char F[]="12345"; char I[]="89"; dann würdest Du bei der Zwischenrechnung genau wie in Klasse 4 vorgehen. Du würdest von F[] so lange Stellen aus dem String herunterziehen, in eine Zahl wandeln und prüfen, ob durch I mindestens einmal ganzzahlig geteilt werden kann: 1 / 89 ==> geht nicht 12 / 89 ==> geht nicht 123 / 89 ==> geht 1 mal, Rest 34 Rest hinschreiben und nächste Ziffer runterholen 344 / 89 ==> geht 3 mal, Rest 77 Rest hinschreiben und nächste Ziffer runterholen 775 / 89 ==> geht 8 mal, Rest 63 Zu dividierende Zahl ist zuende ==> Dezimalkomma setzen, 0 herunterholen 630 / 89 ==> geht 7 mal, Rest 7 Weitere Dezumalstellen nach Belieben weiterrechnen Ergebnis 138,7... Und das ganze dann so schön formatiert ausgeben, damit es wie eine Kettenschwanzrechnung bei der Division in der 4. Klasse aussieht.
Andi schrieb: > nun möchte ich noch einbauen, dass das Programm wie eine Schriftliche > Division in der Grundschule aussieht, Welche Grundschule ist das, die Floating Point Arithmetik aufm Lehrzettel hat?
> Welche Grundschule ist das, die Floating Point Arithmetik aufm > Lehrzettel hat? Hast du nicht schriftlich Dividieren in der Grundschule gelernt?! Welche schule lehrt denn Fixed Point Arithmetik?
uwe schrieb: >> Welche Grundschule ist das, die Floating Point Arithmetik aufm >> Lehrzettel hat? > Hast du nicht schriftlich Dividieren in der Grundschule gelernt?! Doch schon. Aber ich erinnere mich nicht mehr, ob wir da schon mit Kommazahlen hantiert haben, oder ob da noch ausschliesslich ganze Zahlen im Spiel waren. > Welche schule lehrt denn Fixed Point Arithmetik? :-) Keine. Aber auch in der Grundschule haben wir schon dividiert
1 | 234 : 8 = 29 |
2 | 74 |
3 | 2 |
4 | |
5 | Antwort: 234 dividiert durch 8 ergibt 29, Rest 2 |
Von hier dann mit Kommazahlen weiterzuarbeien ist zwar banal, aber ob wir das 1970 bereits in der Grundschule hatten, weiß ich nicht mehr.
:
Bearbeitet durch User
@ Karl Heinz Worüber haben wir uns neulich unterhalten? Ich hätte dann gerne noch eine Erklärung von Dir, wie man richtig einatmet. Aber auch leicht verständlich, bitte! Ohne Mathematik und nicht nur für Atmen-Freaks.
Karl Heinz schrieb: > Von hier dann mit Kommazahlen weiterzuarbeien ist zwar banal, aber ob > wir das 1970 bereits in der Grundschule hatten, weiß ich nicht mehr. Jein. Es gab Kommazahlen nur im Zusammenhang mit Größen wie z.B. 1,56 m oder 2,03 DM oder 3,5 h. Das wurde dann aufgebrochen in 1 m + 56 cm oder 2 DM + 3 Pfennig oder 3 h + 30 min. Und dazu gab es Multiplikationen und Divisionen mit Ganzzahlen: eine Brezel kostet 0,25 DM, wieviel Brezeln bekommst du für 2 DM? Das ist auch heute noch so. Sogar incl. der DM... :-/ Bitflüsterer schrieb: > Ich hätte dann gerne noch eine Erklärung von Dir, wie man richtig > einatmet. Zu spät... ;-)
Lothar Miller schrieb: > Bitflüsterer schrieb: >> Ich hätte dann gerne noch eine Erklärung von Dir, wie man richtig >> einatmet. > Zu spät... ;-) Na hoffentlich nicht :-)
In den Neunzigern hatten wir das Komma auch bei der schriftlichen Division. Wenn du dann aus der grundschule kamst und aufs Gymansium gegangen bist haben die dir das nicht erst beigebracht.
Ah bei euch ging die grundschule nur bis zur 4. Klasse Kommt aber erst in der 5 glaube ich. Kommt also auf Bundesland an ob es "noch" in der Grundschule gelernt wurde oder auf der Oberschule. Die Lehrpläne sind die selben kommt immer in der 5. Klasse.
Wenn ich micht recht erinnere, lernten wir in de Grundschule (4 Jahre) auch keine "Kommazahlen". Vermutlich ist das der Grund dafür, dass sie mir bis heute nicht ganz geheuer sind und ich sie, wo immer möglich, zu umgehen versuche. Ganzzahlige Division mit Rest ist doch viel schöner :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.