Frage von DenisSulovic22, 74

Kann jemand anhand dieser Skizze verstehen ob man damit Potenzen berechnen kann?

Siehe Foto

Antwort
von hypergerd, 2

Man kann es auch online selber am Iterationsrechner testen:

http://www.gerdlamprecht.de/Roemisch_JAVA.htm##@Na=c=3;b=4;i=1;d=exp(log(a)*b);@B0]=@Pa,b);@Nc*=a;@Ni%3E=b@N0@N0@N#

{ LINK endet erst bei N# und beinhaltet den Algorithmus }

Dein y ist dort i und wird automatisch am Ende um 1 inkrementiert.

c=c*a; kann man kürzer c*=a; schreiben

Dein "bis y=b" erzeugt eine Endlosschleife für b kleiner 1, deshalb habe ich beim Beispiel als Abbruch: i>=b eingetragen.

Dein Algorithmus funktioniert nur für den Spezialfall ganzzahlige Variablen größer 0. Deshalb müsste man entweder Eingaben einschränken, oder Fallunterscheidung machen...

Wie Potenzieren mit reellen (Gleitkommazahlen) funktioniert zeigen:

a^b = pow(a,b) = e^(log(a)*b) = exp(log(a)*b);

{ Hinweis: ^ ist bei JavaScript XOR; a hoch b = pow(a,b) }

siehe Bild

Antwort
von ulrich1919, 18

Das Programm berechnet a hoch b.
b muss eine Ganzzahl > 0  sein.

Kommentar von DenisSulovic22 ,

Was ist c und was ist y?!

Kommentar von ulrich1919 ,

Um Himmels Wille!     Verstehst Du dann gar nichts von Programmablaufplänen? Y ist ein ,,Zähler" welche die Anzahl Multiplikationen zählt und c ist das Zwischenergebnis!

Kommentar von DenisSulovic22 ,

Wozu brauch man ein Zwischenergebnis und wieso muss Y die Anzahl zählen?! Das brauch man doch nicht um das zu berechnen?!

Kommentar von ulrich1919 ,

Ob man es braucht ist egal. Die Frage war, um den Ablaufplan zu erklären; nicht um ihn zu verbessern.

Aber nehme mal an: Du hast nur Papier und Bleistift und man sagt Dir, dass Du 7 hoch 9 ausrechnen muss. Dann hast Du auch ein Zwischenergebnis nach jeder Multiplikation. Dieser Ablaufplan ist also sehr ähnlich der menschlichen Vorgehensweise.

Antwort
von Folon, 24

Für b größer oder gleich 1 und ganzzahlig ja, für negative Potenzen (oder ungerade, oder null) klappts nicht.

Kommentar von DenisSulovic22 ,

Was ist c und was ist y? Als was sind die definiert ?!

Kommentar von Folon ,

Ich will das Programm mal verbalisieren, vielleicht hilft das:

  • Start
  • Eingabe einer Zahl (a) und des Exponenten (b)
  • Setze ein Zwischenergebnis c = a und erstelle einen Laufindex y = 1
  • Hier fängt jetzt eine Schleife an. Wenn dein y kleiner als dein Exponent ist (also das y = b nein), dann macht er folgendes:
  • Speichere das Zwischenergebnis Multipliziert mit aErhöhe y um 1
  • Wenn nun y = b ist, die schleife also (b - 1) mal durchlaufen wurde, wird das Zwischenergebnis ausgegeben

Was passiert also?

Das Programm löst a^b, indem esdie Rechnung

a*a*a*a*...*a

b mal ausführt und gibt das Ergebnis aus.

Kommentar von ulrich1919 ,

Schöne Erklärung; alle Respekt. Ob der Fragesteller es schnallt ist aber nicht gewiss.

Kommentar von DenisSulovic22 ,

Hmm ok danke für diese lange Erklärung aber ich checke dennoch nicht wieso es dieses zwischen Ergebnis brauch und wozu es dieses Lauf Index brauch, es kann es doch auch ohne das machen?!

Kommentar von Folon ,

Nimm mal an das Programm kann nur addieren und multiplizieren, wie soll es das dann schaffen?

Keine passende Antwort gefunden?

Fragen Sie die Community