So hätte mal ne Frage:
ne Freundin muss dank ner durchgeknallten Lehrerin(ja sie ist bekloppt) eine RICHTIG fette multiplikation machen(855291790745911499178017738450 x 994972645521689117419499347719) Geht net mit taschenrechner da sie es halt schritt für schritt machen muss was EWIG dauert.
da ich persönlich selbst mal programmieren wollte ist die Frage:
Wie müsste so ein Programm aussehen(So Sourcecode mäßig^^) mit dem man sowas bewerkstelligen kann?
Würde mir echt helfen(und anderen schülerin da die frau dafür berüchtigt ist)
Mfg EgoArmee
Was du zuerst benötigst, ist ein Algorithmus. Passend wäre da z.B. folgender: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Jetzt kannst du dir mal Gedanken machen, wie man das in der Programmiersprache deiner Wahl umsetzen kann.
Wtf
@grymkmb:
Du weißt schon, was ein Algorythmus ist, oder? Bei sowas einfachem muss man doch nichtmal lange denken oder
Naja..
@Ego:
Mit welcher Programmiersprache denn?
Hier mal mit Visual Basic: Was du brauchst:
1 Button
3 Textboxen
Der Code:
Button1:
PHP-Code:
Textbox3.Text = Textbox1.Text * Textbox2.Text
Fertig
Also für die anderen:
In Textbox1 und Textbox2 kommen die Faktoren, die Multipliziert werden sollen. Nachdem man auf Button1 geklickt hat, steht das Ergebniss in der Textbox3.
Du kannst den Textboxen einen anderen Namen geben, dass der Code "schöner" aussieht oder das das Ergebniss in einem Label steht.
//Edit:
Achja, und da das Ergebniss ein sehr sehr langes wird, solltest du die Form1 etwas lang ziehn, und die Textboxen dann auch dementsprechend lang ziehn bzw. vergrösern ;D
@euda:
Yep, und bei C++ auch.. obwohl man ja bei C++ nichtmal ne "Textbox" oder ein anderes Element braucht, sondern in der Consolen App super einen Rechner machen kann
ich glaube der haken an der sache hier sind die zwischenergebnisse
mit windows calculator bekommt man sowas auch hin ohne zwischenergebnisse
Mich würds am ehesten in C++ interessieren
int main() // zeigt den Compiler wo er anfangen soll
{ // das Programm wird initialisiert
long double zahl1 = 0; //deklariert ein long double daher ein Gleitkommazahl positiv wie auch negativ mit dem namen zahl1...
long double zahl2 = 0; // noch anzumerken der "Variable" wird der Wert null zu gewiesen. Sie enthält theoretisch nichts
long double zahl3 = 0; // jede Anweisung wird mit einem Semikolon ( ; ) abgeschlossen
cout<< " Bitte erste Zahl eingeben!"<<endl; // cout leitet die Wiedergabe von Strings (Zeichenketten) ein
cin>> zahl1; // fängt die Tastatur eingabe ab
cout<< " Bitte zweite Zahl eingeben! "<<endl; // endl bedeutet end line Zeilenumbruch
cin>> zahl2;
zahl3 = zahl1 * zahl2; // addiert die 2 zahlen und speichert es in zahl3
cout<< " Ihr Ergebniss: "<< zahl3<<endl; // zahl3 wird mit der Funktion cout ausgegeben.
system ("PAUSE"); //stoppt das Programm zum ansehen was es gemacht hat
return 0; // liefert den Wert 0 zurück optional
} // sagt das das Programm hier endet
Ich habe das schnell mit VS gemacht. Weiß nicht ob es bei jedem Compiler long double gibt... Wenn das nicht in dem Sinne sein sollte wie du es wolltest entschuldige ich mich
Edit: Normaler weiße muss man einer Variablen nicht den Wert 0 extra zuweisen. Er ist in dem Sinne schon automatisch eingespeichert. Jedoch wird es zur besseren Übersicht empfohlen.
Man kann double auch alleine schreiben. long double ist so zu sagen eine ******* Form von dem normalen double (größerer Wertebereich)
sieht echt interessant asu eragon
ich werds mal testen
aber da muss man ja alles von hand und schritt für schritt machen
ließe sich das nicht per schleife oder sowas schneller machen?
am besten natürlich gleich die ganze multiplikation aber das wird entsprechend schwerer
man müsste das programm die eingangszahlen irgendwei so aufteilen lassen wegen schriftliche multipikation und so
sry was willst du den genau machen? Vor allem mit einer schleife? Das Programm ist ganz einfach. Du startest es, gibst 2 zahlen ein und er multipliziert es. Das Programm endet. Willst du ein kompletten Taschenrechner schreiben?
Ich lerne selbst erst grade Programmieren und zwar Java. C++ hab ich mal als Hobby mit nem Kumpel zusammen gemacht. Hab mich da auch an ein Taschenrechner gewagt, ist aber sehr bescheident ausgefallen
Ich bin aber selbst noch kein sehr guter Programmieren, aber wenn du willst poste ich ihn dir mal morgen.
1. Double ist als Datentyp für die Multiplikation großer Ganzzahlwerte gänzlich ungeeignet.
2. Was sollen diese vollkommen nutzlosen Kommentare bezwecken?
Ja, für Ganzzahlwerte wäre da der Integer zuständig. Double ist deshalb schlecht, weil es ab einem bestimmten Wertebereich die Zahlen einfach abschneidet und rundet. Der Threadersteller kann noch nicht programmieren. Wollte ihn mit den Kommentaren etwas helfen das Programm zu verstehen.
Ohmann. Ich programmiere selbst erst seit einem halben Jahr und das auch sehr unregelmäßig, da ich nicht den ganzen Tag am Pc hocke. Ich versuche wenigstens noch zu helfen
Aber was machst du? Du lässt heißen Dampf ab und anstatt mich zu verbessern machst du mir Vorwürfe. Vielleicht kannst du 100mal besser programmieren als ich, aber wenigstens versuche ich den Leuten zu helfen anstatt nachts um 1 irgendwelche Leute die es gut meinen zu kritisieren. Wenn du nichts konstruktives zu einem Thema beitragen kannst, antworte einfach nicht.
Also der C++ Code wird für die obige Multiplikation nichts rausbringen, ganz einfach deshalb weil deine Variable zu klein ist.
Selbst wenn du eine 64bit Variable verwendest kommst du auf max. 2^64 = 18446744073709551616, was für solche großen Multiplikationen nicht ausreicht.
Um das zu verhindern gibts 2 Möglichkeiten:
1. Eine fertige BigInt-Klasse aus dem Internet suchen und verwenden.
2. Selber eine BigInt-Klasse schreiben, was bedeutent schwerer ist.
Der Witz ist ja ne Strafarbeit vo ner Freundin hat mich auf die Idee gebracht.
Deshalb ist das Ziel, dass das Programm nch eingabe zweier BELIEBIG großer Zahlen sie multipliziert und zwischenschritte asuspuckt.
Soll heißen bei 855291790745911499178017738450 x 994972645521689117419499347719 erst 9 mal 0 dann 9x5 dann 9x4 usw die ergebnisse ausgibt die man am ende nurnoch abschreiben muss.
Das es halt nach schriftlicher Multiplikation aussieht
btw ich hab schon ein klein wenig programmier erfahrung was aber bei weitem nicht reicht
Da brauchst du auch garnicht alzu viel Ahnung vom Programmieren, nur logisches Vorstellungsvermögen.
Dein Ansatz ist schon garnicht so falsch - 9*0 dann 9*5 usw.
Speicher dir die Zahlen einfach in einem Array und lass das Programm so rechnen wie du es eben selbst beschrieben hast - dann ist es garnicht so schwer.
Wenn Du es richtig machen willst, dann brauchst Du nur zwei for-Schleifen und eine Variable, die Du aufsummierst.
Die erste Schleife iteriert über jede Ziffer der ersten Zahl.
Die zweite Schleife läuft in der ersten Schleife iteriert über jede Ziffer der zweiten Zahl.
Für jeden Durchlauf der multiplizierst Du beide Ziffern und summierst damit Deine einzige Variable auf.
Kein Array, keine Rekursion.