Problem mit Maple < Maple < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | >a := binomial(2000, 213);
>b := convert(a, base, 10);
>for n from 0 to 9 do z := 0:od:
>for k from 1 to nops(b) do if b[k]=n then z:=z+1:fi:od:print(n,z);
|
Diese Maple-Eingabe soll folgendes Problem lösen:
Die Anzahlen zu den Ziffern 0 bis 9 aufschreiben, mit der sie in der Zahl 2000 über 213 vorkommen. (Muss man allerdings gar nicht so genau verstehen, um mein Problem lösen zu können, glaub ich.)
Leider bekomme ich immer nur die Ausgabe 10,29 und nicht eine Liste mit den Ziffern von 0 bis 9 und der dazugehörigen Anzahl. Was muss man hier verändern, um die gewünschte Ausgabe zu bekommen?
# Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
bei dir ist z ein Skalar, kein Array o.ä.
Die folgende Lösung erzeugt ein Table-Objekt und speichert dort die Vorkommen aller Ziffern:
a := binomial(2000, 213):
b := convert(a, base, 10):
for n from 0 to 9 do
z[n] := 0:
od:
for k from 1 to nops(b) do
z[b[k]]:=z[b[k]]+1:
od:
print(z);
Man kann aber auch deinen ursprünglichen Code retten, wenn man die Reihenfolge ändert:
a := binomial(2000, 213):
b := convert(a, base, 10):
for n from 0 to 9 do
z := 0:
for k from 1 to nops(b) do
if b[k]=n then
z:=z+1:
fi:
od:
print(n,z);
od:
Bei dieser Variante sind aber die einzelnen Häufigkeiten später nicht mehr verfügbar.
Gruß
Martin
|
|
|
|
|
Hallo Martin,
schon mal herzlichen Dank für die schnelle Reaktion. Mit dem Table gut!
Ich habe allerdings mal nachgeschaut und eine ganz ähnliche Aufgabe gefunden, in der man ohne Table auskommt:
c[1]:=binomial(2000,213):c[2]:= floor(evalf((10^)^*Pi*exp(1),40)): for j from 1 to 2 do b:=convert(c[j],base,10):print(c[j]); for n from 0 to 9 do z:=0: for k from 1 to nops(b) do if b[k]=n then z:=z+1:fi:od:print(n,z);od;od;
Leider ergibt sich bei dieser wieder ein Problem und zwar diesmal mit dem Convert-Befehl, denn es ergibt sich die Fehlermeldung:
Error, (in convert/base) 'convert/base' uses a 3rd argument, beta, which is missing
Ich weiss leider nicht, was damit gemeint ist und die Maple-Hilfe führt mich auch nicht weiter...
|
|
|
|
|
Sorry, der Grund für die Fehlermeldung war nur ein Tippfehler, den ich beim Kopieren des Quelltextes unbemerkt wieder korrigiert hatte.
ABER!!! Was erstaunlich und auch ärgerlich ist, wie ich finde, MAPLE GIBT TATSÄCHLICH UNTERSCHIEDLICHE AUSGABEN, BEI GLEICHER EINGABE. Wenn man nämlich unter Tools ->Options ->.."Worksheet" statt "Document" einstellt , dann bekommt man eine Liste, stellt man Document ein, so bekommt man keine Liste, sondern nur eine einziges Listenelement, warum dies so ist, verstehe ich nicht.
|
|
|
|
|
Hallo,
wenn du mal vergleichst, ist das fast genau derselbe Code wie der zweite in meinem Beitrag, nur dass ich ihn über mehrere Zeilen verteilt habe. Ist dann übersichtlicher.
Gruß
Martin
|
|
|
|
|
Hallo Martin,
ja der Quellcode ist quasie dergleiche, aber, man kann wie gesagt, das ganze tatsächlich auch ohne Table als Liste angezeigt bekommen, wie ich gestern noch nach langer Herumprobiererei herausgefunden hatte. Denn derselbe Quellcode(ohne Table) erzeugt eine Liste, wenn man unter Tools->Options->"Worksheet" statt "Document" einstellt und das finde ich äußert verwirrend, deshalb lautet meine Frage nun -warum gibt Maple unterschiedlich aus, bei gleicher Eingabe?
|
|
|
|
|
Hallo,
nur der Korrektheit halber: Es wird keine Liste erzeugt, sondern es werden mehrere Werte nacheinander ausgegeben.
Zu deinem eigentlichen Problem gibt die Maple-Hilfe Auskunft:
In Worksheet mode, output from multiple executions in a single statement is displayed.
"In Worksheet mode, output from multiple executions in a single statement is displayed.
In Document mode, only the output for the last execution entry in a multiple execution statement is displayed; however, all input has been executed. "
Gruß
Martin
|
|
|
|
|
Ach sooooo.
Herzlichen Dank für Deine Zeit und Geduld!
|
|
|
|