1 registered members (AndrewAMD),
1,301
guests, and 9
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
var's nach größe ordnen
#207164
05/18/08 07:32
05/18/08 07:32
|
Joined: Mar 2008
Posts: 25
Karotte
OP
Newbie
|
OP
Newbie
Joined: Mar 2008
Posts: 25
|
Hallo, gibts es eine einfache funktion, var's nach größe zu ordnen? Code: name_1 = int(random(50));
name_2 = int(random(50));
name_3 = int(random(50));
name_4 = int(random(50));
name_5 = int(random(50)); Und da soll jetzt, wenn z.B. name_2 am größten ist, soll sein und nach der größe jede variable einen wert haben (1,2,3,4 und 5)
|
|
|
Re: var's nach größe ordnen
[Re: Xarthor]
#207176
05/18/08 09:17
05/18/08 09:17
|
Joined: Mar 2008
Posts: 25
Karotte
OP
Newbie
|
OP
Newbie
Joined: Mar 2008
Posts: 25
|
|
|
|
Re: var's nach größe ordnen
[Re: Karotte]
#207179
05/18/08 09:52
05/18/08 09:52
|
Joined: Jul 2001
Posts: 6,904
HeelX
Senior Expert
|
Senior Expert
Joined: Jul 2001
Posts: 6,904
|
Ich gebe dir jetzt nur Hinweise, damit du dir die Lösung selbst erarbeiten kannst: - Für eine listenförmige Darstellung bzw. organisierte Form von Variablen bieten sich arrays hervoragend an.
- Wenn du einer Liste mit einem Primärschlüssel wie z.B. Usernummern oder so sekundäre (zusätzliche) Daten hinzufügen willst, wie in diesem Fall ein "Punktestand", dann bietet sich ein 2-dimensionales array an, wobei du jede Zeile für einen Eintrag steht und die Spalten für die einzelenen Werte pro Eintrag. Der erste könnte deine Usernummer sein, und der zweite die "Punkte"
- Es gibt diverse Lösungen, wie man Listen sortiert. Suche nach Sortieralgorithmen. Der einfachste zu verstehene sollte Bubblesort sein. Wichtig bei der Sortierung von 2D Arrays ist das Tauschen von ganzen Zeilen.
- Wenn du das Array sortiert hast, kannst du anhand der Zeilennummer und der Usernummer die Position ablesen.
Arbeite das in dieser Reihenfolge ab und du wirst, denke ich mal, erfolgreich sein. Viel Erfolg!
|
|
|
Re: var's nach größe ordnen
[Re: HeelX]
#207180
05/18/08 10:10
05/18/08 10:10
|
Joined: Mar 2008
Posts: 25
Karotte
OP
Newbie
|
OP
Newbie
Joined: Mar 2008
Posts: 25
|
und wie erstellt man ein 2d - array?
erstellt man des so?
var array[5][2];
Last edited by Karotte; 05/18/08 10:43.
|
|
|
Re: var's nach größe ordnen
[Re: Karotte]
#207203
05/18/08 12:27
05/18/08 12:27
|
Joined: Jul 2002
Posts: 4,436 Germany, Luebeck
Xarthor
Expert
|
Expert
Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
|
Wenn du Lite-C benutzt: jein var array[5][5] wäre richtig, afaik. In C-Script gibts 2d-arrays nicht, man kann sie aber simulieren indem man ein array mit doppelter größe verwendet. Bei 5 werten z.b. var array[10] Dann könntest du die plätze 0 <= i < 5 für die eig. werte nehmen und die plätze 5 <= k < 10 für den jeweiligen sekundär wert. Falls du c-script benutzt (dateiendung ist .wdl!) könntest du dein script auch auf ein array umstellen (1d array) und den bubble sort algorithmus verwenden den ich grad aus langerweile raus geschrieben habe. Er funktioniert mit meinen test werten, kann aber u.U. noch verschönert werden. Jedoch stimme ich HeelX zu, dass du soetwas mit ein bisschen nachforschen auch selber lösen könntest. Dein script hätte dann die form:
function bubble_sort(&_array); // bubble sort prototype
var name[5];
function name_assignValues()
{
name[0] = int(random(50));
name[1] = int(random(50));
name[2] = int(random(50));
name[3] = int(random(50));
name[4] = int(random(50));
bubble_sort(name);
}
// Bubble sort function:
function bubble_sort(&_array)
{
var i;
var k;
var buffer;
i = 0;
k = 0;
buffer = 0;
while(k < 5)
{
if(_array[i] > _array[i+1])
{
buffer = _array[i];
_array[i] = _array[i+1];
_array[i+1] = buffer;
}
else
{
k += 1;
}
i = cycle(i + 1, 0, 3);
if(i == 0 && k < 4)
{
k = 0;
}
}
//error("Bubble Sort fertig");
}
edit: Dieser bubble sort algorithmus funktioniert allerdings nur mit arrays die 5 elemente haben. edit #2: Habe den algorithmus bzw. die funktion überarbeitet, man übergibt nun den array und die anzahl der darin befindlichen elemente:
function bubble_sort(&_array, _nroFields)
{
var i = 0; // element index
var k = 0; // sort counter
var buffer = 0; // buffer var for sorting
while(k < _nroFields)
{
// is the value of a lower element higher than the value of a higher element?
if(_array[i] > _array[i+1])
{
buffer = _array[i]; // safe higher value in buffer
_array[i] = _array[i+1]; // copy lower value in lower element
_array[i+1] = buffer; // copy buffer into higher element
}
else // order of elements is correct
{
// add one to sort counter
k += 1;
}
i += 1;
if(i > (_nroFields-2)) { i = 0; }
// new sort cycle and sorting not finished?
if(i == 0 && k < (_nroFields-1))
{
// reset sort counter
k = 0;
}
}
}
Last edited by Xarthor; 05/18/08 12:56. Reason: new algorithm
|
|
|
Re: var's nach größe ordnen
[Re: Xarthor]
#207228
05/18/08 15:39
05/18/08 15:39
|
Joined: Jan 2003
Posts: 4,615 Cambridge
Joey
Expert
|
Expert
Joined: Jan 2003
Posts: 4,615
Cambridge
|
Wenn du Lite-C benutzt: jein var array[5][5] wäre richtig, afaik. ne, es is array[5][2] oder noch eher array[2][5].
|
|
|
Re: var's nach größe ordnen
[Re: Xarthor]
#207267
05/18/08 20:17
05/18/08 20:17
|
Joined: Jul 2005
Posts: 1,930 Austria
Dark_samurai
Serious User
|
Serious User
Joined: Jul 2005
Posts: 1,930
Austria
|
Der einfachste zu verstehene sollte Bubblesort sein. Das sagen zwar immer alle, aber ich bin da total anderer Meinung. Der meiner Meinung nach einfachste ist dieser (keine Ahnung ob der nen Namen hat, den habe ich mir selbst mal ausgedacht): -Größte Zahl aus Array auslesen -in 2. Array an 1. Stelle speichern -Die Zahl aus dem 1. Array rauslöschen -von vorne nur diesmal Zahl im 2. Array an 2. Stelle speichern -usw. Das mit dem Bubblesort ist zwar vom Ablauf her leichter (immer 2 Zahlen vertauschen) aber das das überhaupt zu einer richtigen Sortierung führt ist meiner Meinung nach schon nicht mehr so einfach zu verstehen. Aber wie immer ist das nur meine Meinung Dark_Samurai
ANet - A stable and secure network plugin with multi-zone, unlimited players, voip, server-list features,... (for A7/A8)! get free version
|
|
|
|