0 Daumen
536 Aufrufe
1. Teilaufgabe:

Konstruieren Sie eine Liste von 20 zufällig ausgewählten Zahlenpaaren.

-> Teilaufgabe bereits gelöst

2. Teilaufgabe:

Geben Sie eine Sortierfunktion an, die für zwei Zahlenpaare x = (x1; x2) und y = (y1; y2)
genau dann wahr wird, wenn max(x1; x2) > max(y1; y2) oder wenn hierbei Gleichheit,
aber dann x1 + x2 > y1 + y2 ist.

-> die Sortierfunktion haben wir ebenfalls bei Maple erstellt

3. Teilaufgabe:

Programmieren Sie eine Prozedur, die eine unter (a) erzeugte Liste als Argument verarbeitet
und die unter Verwendung von (b) sortierte Liste zurückgibt!

-> und genau hier ist unser Problem. Kann uns vielleicht jemand weiterhelfen?
von
Vlt. kannst du bei 2. die Lösung noch angeben. Damit derjenige, der eine Antwort weiss nicht von vorn beginnen muss.

Du meinst wohl bei 1.:

https://www.mathelounge.de/11208/maple-konstruieren-liste-zufallig-ausgewahlten-zahlenpaaren
Lu hat Recht. Es ist immer hilfreich, Teillösungen, die man schon ermittelt hat, in der Frage oder als Kommentar anzugeben.

So sparen alle etwas Zeit und können die Fragen schließlich besser beantworten!
hier einmal die liste:

L:=[seq(([rand(), rand()])(),k=1..20)];

und hier die sortierfunktion: (vorausgesetzt es ist richtig)

restart;
x:=[rand(),rand()];
y:=[rand(),rand()];
if max(x)>max(y)
  then printf("true")
elif max(x)=max(y)
   and (x[1]+x[2]>y[1]+y[2])
   then printf("true")
else printf ("false")
end if;

die dritte teilaufgabe scheint eine prozedur zu sein die beides beinhaltet. wie wir das aber miteinander verknüpfen wissen wir nicht.

1 Antwort

0 Daumen

"Programmieren Sie eine Prozedur, die eine unter (a) erzeugte Liste als Argument verarbeitet und die unter Verwendung von (b) sortierte Liste zurückgibt!"

Laut Aufgabenstellung ist Folgendes zu tun:

1. Ihr erstellt eine Liste (ein Array) mit den Zahlenpaaren

2. Ihr erstellt eine Funktion, der ihr das Array 'zahlenpaare' übergebt: sortiereListe(zahlenpaare);

3. Diese Funktion sortiert die Zahlenpaare und gibt die sortierte Liste (Array) zurück. return zahlenpaare;

Wie es scheint, müsst ihr die beiden Teile einfach nur über eine Funktion verknüpfen...

 

In Actionscript-2 kann man das mit 4 Arrays wie folgt realisieren (sicher geht es noch "eleganter"):

var zahlX1:Array = new Array();
var zahlX2:Array = new Array();
var zahlY1:Array = new Array();
var zahlY2:Array = new Array();

for(var i:Number=0;i<20;i++) {
    // Ganze Zahl von 0 bis 100
    zahlX1[i] = Math.floor(Math.random()*100); // ganze Zahl von 0 bis 100
    zahlX2[i] = Math.floor(Math.random()*100);
    zahlY1[i] = Math.floor(Math.random()*100);
    zahlY2[i] = Math.floor(Math.random()*100);
    // Ausgabe der Zahlenpaare x(x1;x2) und y(y1;y2)
    trace("x:("+zahlX1[i]+";"+zahlX2[i]+") y:("+zahlY1[i]+";"+zahlY2[i]+")");
}

// Übergabe der Arrays an die Funktion
sortiereZahlenpaare(zahlX1, zahlX2, zahlY1, zahlY2);

function sortiereZahlenpaare(zahlX1:Array, zahlX2:Array, zahlY1:Array, zahlY2:Array) {
    for(var i:Number=0;i<20;i++) {
        var maxX:Number = Math.max(zahlX1[i],zahlX2[i]);
        var maxY:Number = Math.max(zahlY1[i],zahlY2[i]);
        
        if ( maxX > maxY ) {
            trace(i+": " + maxX + " > " + maxY);
        }
        else if ( maxX == maxY ) {
            var sumX12:Number = zahlX1[i] + zahlX2[i];
            var sumY12:Number = zahlY1[i] + zahlY2[i];
            if(sumX12 > sumY12) {
                trace(i+"*:" + sumX12 + " > " + sumY12);
            }
        }
    }
}

 

PS: Da Maple 16 Professional derzeit 2.280,00 € kostet, können wir euch nicht in "Maple-Code" weiterhelfen :)

von 7,4 k
hättet ihr eventuell nen ansatz wie die funktion auszusehen hat?

ins maple worksheet eingeben können wir alles selber. wir brauchen lediglich ansätze wie wir an die 3. teilaufgabe herangehen können.

irgendeine idee? welcher befehl benutzt werden muss beispielsweise?

Die einzige Frage, die sich stellt: Wie kann man in Maple eigene Funktionen erzeugen?

Das Beispiel sollte weiterhelfen:

myfcn:=proc(x)
   local t,u:
   if x>=0 then t:=evalf(sqrt(x),3) else t:=x^2 fi:
   if t>2 then u:=t+x else u:=t-x fi:
  max(t,u)
end:

Der zurückgegebene Wert ist der vor dem end: also im Beispiel max(t,u)

Jetzt könnt ihr eure Lösungen oben entsprechend zusammensetzen.

Postet dann bitte noch die Maple-Lösung für andere Leser!

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community