Fehler bei proc-Funktion < Maple < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:04 Fr 22.06.2012 | Autor: | diary11 |
Aufgabe | ZehnertoX:= proc (Zahl, InSystem)
local Vloesungen, SpeicherListe, VektorenLaenge, Rest, ZehnerZahl1, i, p, VektorLoesung:
# Zahl: Die Zahl, die wir eingeben
# InSystem: In dieses System rechnen wir ausgehend vom Dezimalystem
Vloesungen:=Vector(1): # von uns definierter Speichervektor
SpeicherListe: # Liste zum Zwischenspeichern
VektorenLaenge:=0: # Hier wird die Vektorenlänge gespeichert
Rest:=0: # vom uns definiert, "normaler" Rest wie in jeder mathematischen Formel
ZehnerZahl1:=0: # weitere Speichervariabel, um die erhaltene Zahl als Zahlenfolge ("String") darzustellen
i:=1:
# Zählvariabel für while-Schleife
# while-Schleife, so lange die Zahl grösser als 0 ist
while Zahl > 0 do # Anfang der while-Schleife
Rest:= Zahl mod InSystem: # nach mathamatischer Vorgabe
Vloesungen(i):=Rest: # Wir weisen einem Speichervektor den aktuellen Restwert zu
i:=i+1: # Wir erhöhen das "i", um im Vektor eine Stelle nach unten zu rutschen und dem neuen Restwert einen neuen Platz zuzuordnen
Zahl:=(Zahl-Rest)/InSystem: # nach mathematischer Vorgabe
od: # braucht es, um eine while-Schleife zu beenden (an Stelle von end proc:)
SpeicherListe:=convert(Vloesungen, list):
# wir verwandeln den Vektor in eine Liste um, da wir beim Vektor die Anzahl Werte/Elemente nicht zählbar ist, in einer Liste jedoch schon
VektorenLaenge:=nops(SpeicherListe): # wir zählen die Länge (also Anzahl Stellen)
VektorLoesung:=Vector(VektorenLaenge): # wir machen einen neuen Vektor mit der "neuen" Länge (Anzalt Elemente), entsprechend dem Wert von "VektorenLaenge"
# Unterster Wert des alten Vektors wird an oberster Stelle dem neuen Vektor zugewiesen
for i from 1 by 1 to VektorenLaenge do
VektorLoesung[i]:=Vloesungen[VektorenLaenge-i+1]:
od:
print(VektorLoesung): # wir stellen die Lösung als Vektor dar
for p from 0 by 1 to VektorenLaenge-1 do
[mm] ZehnerZahl1:=ZehnerZahl1+Vloesungen[p+1]*10^p:
[/mm]
od:
return ZehnerZahl1: # wir geben die Lösung als Zehnerzahlenfolge ("Zehnerstring") zurück
end proc:
print(ZehnertoX): |
HILFE!!
Ich und eine Kollegin müssen ein Program in Maple programmieren. Wir haben uns für Stellenwertsysteme entschieden, kommen aber nun nicht mehr weiter.
Wir würden gerne eine prozedur haben, womit am Schluss einfach
print(ZehnertoX((eine Zahl im Dezimalsystem),(in welches System von 2 bis10)))
eingeben kann und man erhält das Ergebnis... Allerdings geht die Prozedur leider nicht, es kommt immer die Fehlermeldung "illegal use of formal parameter".
Was haben wir falsch gemacht? Was können/müssen wir ändern??
VIELEN HERZLICHEN DANK FÜR EURE HILFE!!!
(Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.)
|
|
|
|
Hi,
du darfst keine Parameter überschreiben. Ich habe jetzt einfach statt "Zahl" eine Hilfsvariable "WZ" eingeführt und
WZ:=Zahl; am Anfang geschrieben:
So geht es :
http://pastebin.com/HbnPEtyg
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:36 Mo 25.06.2012 | Autor: | diary11 |
VIELEN HERZLICHEN DANK!!
HAST UNS GERETTET!! :)
|
|
|
|