Fakultät- Programm programmieren

JAVA_FFM

Mitglied
Servus Leute,

ich habe ein kleines Anliegen und zwar soll ich in der Uni ein Programm über Eclipse schreiben, mit dem ich Fakuläten bis zur Zahl 1000 berechnen kann. Problem dabei die große Zahlenmenge, da ich das
Programm in integer schreiben soll. Bis zur Zahl 20 funktioniert es auch ganz gut aber von da an spinnt alles total, ich hab keine Ahnung wie ich mit dem "Überlauf " umgehen soll.
Mein Prof hat jetz gemeint ich soll mit Arrays arbeiten und zwar so, dass das Programm jeweils 3 zahlen in einem Slot speichert und den Übertrag auf die nächsten Slots übeträgt, im nächsten Schritt wird dann der letzte bzw. erste Slot mit der neuen Zahl multipliziert und der Übertrag wieder auf die nächsten Slot übertragen..

also ich hab es so verstanden (pseudocode):

i=1
temp= Zahl*m
Zahl="letze 3 Stellen von temp"
--- Übertrag behandeln ----
i<1000; i++


nur weiß ich nicht wie ich dass definiere dass jeweils 3 stellen nur behandelt werden bzw. jeweils nur 3 stellen in einem Slot gespeichert werden und auch nicht wie ich das Übertrag behandel.

Hat vlt jemand eine Idee wo ich ansetzten kann, bzw. was genau ich verstehen und lernen sollte?

mfG



PS: angeblich ist der Algorithmus nur wenige Zeilen lang..... :bahnhof:
 
ja biginterger darf ich ja eben nich benutzen...
ja die diskussion hab ich mich schon angeschaut bin aber nich ganz schlau draus geworden.
gut das mit dem array habe ich glaub ich mehr oder weniger verstanden nur das mit dem übertrag nicht,
wie multiplizieren ich den wo drauf
 
wär cool wenn mir jemand unabhängig von der anderen diskussion helfen könnte

naja... so schwer ist das nicht... man multiplziert eine ziffer mit dem multiplikator, schreibt die Einerstelle (das ist modulo 10) und als übertrag nimmt an die zehner stelle (das ist / 10)

Java:
import java.util.Arrays;

public class Test {
   public static void main(String[] args) {
      int[] zahl = {0,0,8,4,6};
      mulitiplizierenWieInDerVolksschule(zahl, 3);
      System.out.println(Arrays.toString(zahl));
   }
   
   public static void mulitiplizierenWieInDerVolksschule(int[] zahl, int multi){
      int uebertrag = 0;
      for(int i = zahl.length-1; i>=0; i--){
         int ergebnis = zahl[i]*multi+uebertrag;
         System.out.println(zahl[i]+ " mal "+multi +" plus "+ uebertrag+" ist "+ergebnis);
         int rest = ergebnis %10;
         uebertrag = ergebnis /10;
         zahl[i] = rest;
        
         System.out.println("wir schreiben "+rest+", "+uebertrag+" weiter");
         
      }
   }
}


nimmt man nicht jetzt ein array mit der länge 5, sondern 5000 kann mah zahlen mit 5000 stellen multiplzieren :shock:, was mit Int nicht möglich ist... :applaus:

jetzt bringt man natürlich in so ein arrayfeld nicht nur 0-9 rein sonder größere zahlen, so kann man das noch etwas optimieren... also wo dein lehrer von 3 stellen gesprochen hat, kannst du wo ich durch 10 dividiere natürlich durch 1000 dividieren...


aber ganz ehrlich... so schwer war das jetzt nicht... oder?
 
wie viel ist 99998887777666655554444333322221111 mal 3?
das kann ich ja nicht mal aussprechen geschweige denn das es excel richtig berechnet... mein programm kann es!

Java:
import java.util.Arrays;

public class Test {
   public static void main(String[] args) {
      int[] zahl = {0,0,9999,8888,7777,6666,5555,4444,3333,2222,1111};
      mulitiplizierenWieInDerVolskschule(zahl, 3);
      System.out.println(Arrays.toString(zahl));
   }
   
   public static void mulitiplizierenWieInDerVolskschule(int[] zahl, int multi){
      int uebertrag = 0;
      for(int i = zahl.length-1; i>=0; i--){
         int ergebnis = zahl[i]*multi+uebertrag;
         System.out.println(zahl[i]+ " mal "+multi +" plus "+ uebertrag+" ist "+ergebnis);
         int rest = ergebnis %1000;
         uebertrag = ergebnis /1000;
         zahl[i] = rest;
        
         System.out.println("wir schreiben "+rest+", "+uebertrag+" weiter");
         
      }
   }
}
geil!

(wobei bei der ausgabe eine 4 natürlich als 0004 zu sehen ist)
 
vielenn dank langsam fang ichs an zu verstehenn 🙂 gut ich versuch das mal auf meine fakultät umzuschreiben hoffe das klappt mehr oder weniger.. auf jedenfall nochmal en fettes danke für die schnelle antwort 😉
 

Neue Themen


Zurück
Oben