JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=72dd8e270608cf3e02b73b9a2ed5b305Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Sortieren einer Liste
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 21.09.2003, 08:36    Titel: Sortieren einer Liste Antworten mit Zitat

Ich hab eine Struktur, die mehrere Elemente enthält ,wie Punkte, Name, Schwierigskeitsgrad, Spieldauer. Wie speicher ich die nach Punkten sortiert in eine Liste? Ich habe von der Funktion sort() gehört, aber wie wendet man die an? Wie gibt man an, dass man die Liste nach einem bestimmten Element sortieren will?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 21.09.2003, 09:37    Titel: Antworten mit Zitat

Nee das musst du schon selber machen!

qsort(*base,num,width,zeiger auf eine funktion)

*base zeiger auf daserste element des arrays
num Anzahl der Elemente des arrays
width größe eines elements des arrays

letzter Parameter die Funktion, die qsort mitteilt, wie es sortieren soll

Bei Rückgabewert -1 zurück bei 1 vorwärts sortieren...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 21.09.2003, 10:59    Titel: Antworten mit Zitat

TheMillenium: Muss man nicht selber machen. ;)

Du benutzt am besten den STL Algorithmus "sort". Es ist eine implementation von Quick Sort und einer der schnelleren Algorithmen.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
abc_d
JLI Master Trainee


Alter: 35
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 21.09.2003, 11:11    Titel: Antworten mit Zitat

Hier wird erklärt wie die verschiedenen Arten funktionieren:

http://www.zfx.info/Tutorials.php?ID=79
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 21.09.2003, 11:16    Titel: Antworten mit Zitat

http://193.111.112.220/related/dsb/viewtopic.php?t=3043
Und hier wird's erklärt, wie man es bequem mit der STL macht.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 21.09.2003, 13:38    Titel: Antworten mit Zitat

BlackLordOfDragons hat Folgendes geschrieben:
Hier wird erklärt wie die verschiedenen Arten funktionieren:

http://www.zfx.info/Tutorials.php?ID=79


Meint ihr nach Alphabet sortieren Question
_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Tomm
Junior JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 93
Wohnort: Neuburg an der Donau
Medaillen: Keine

BeitragVerfasst am: 22.09.2003, 19:39    Titel: Antworten mit Zitat

Wenn es unbedingt Eigenbau sein muss, dann kann man das auch ungefähr so machen (Sortierung nach Punktzahl):

Code:

void Sortierung(void)
{
   //Hilfsvariable
   int h=0;

   //Sortieren
   for(int i=0; i<9; i++)
   {
      for(int j=i; j<10; j++)
      {
         if(score[i] < score[j])
         {
            h = score[i];
            score[i] = score[j];
            score[j] = h;
         }
      }
   }
}


score[] ist vom Typ int, hier werden die Punktzahlen gespeichert
Der Rest sollte klar sein. Wink

Edit: Ich sollte vielleicht noch dazu sagen, dass ich den Code ursprünglich in Informatik gelernt und von Turbo Pascal einfach nach C++ "konvertiert" hab.
_________________
Tomato Interactive Homepage
Das Forum von Tomato Interactive
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 22.09.2003, 20:43    Titel: Antworten mit Zitat

Der Code den du geliefert hast ist aber ziemlich lahm falls man ihn auf grössere Datenmengen anwenden möchtest. Warum nicht gliech quicksort ?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 23.09.2003, 08:24    Titel: Antworten mit Zitat

FallenAngel84 hat Folgendes geschrieben:
Der Code den du geliefert hast ist aber ziemlich lahm falls man ihn auf grössere Datenmengen anwenden möchtest. Warum nicht gliech quicksort ?
Gut, dann erkläre mal einem Newbie den Quicksortalgoritmus (Ich kenne Ihn) - Ich denke, dass gerade Anfänger mit Komplex-Rekursiven Funktionen noch nichts anfangen können, wohingegen dieser Algoritmus fast selbsterklärend ist...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Tomm
Junior JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 93
Wohnort: Neuburg an der Donau
Medaillen: Keine

BeitragVerfasst am: 23.09.2003, 16:55    Titel: Antworten mit Zitat

FallenAngel84 hat Folgendes geschrieben:
Der Code den du geliefert hast ist aber ziemlich lahm falls man ihn auf grössere Datenmengen anwenden möchtest.


Damals, als Turbo Pascal noch aktuell war, gab es bestimmt noch nicht so große Datenmengen. Wie gesagt ist der Code aus dem Informatikunterricht und da mussten wir sowieso nicht viel sortieren. Ausserdem stehen in einer Highscoreliste sowieso meistens nur 10 Plätze.
_________________
Tomato Interactive Homepage
Das Forum von Tomato Interactive
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
abc_d
JLI Master Trainee


Alter: 35
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 23.09.2003, 17:01    Titel: Antworten mit Zitat

Wie gesagt, hier wird alles erklärt vom einfachen bubblesort bis zum quicksort:
http://www.zfx.info/Tutorials.php?ID=79
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 23.09.2003, 20:21    Titel: Antworten mit Zitat

Ich meinte damit auch nur das man schon jetzt bessere Algorithmen nutzen könnte weil es sicher recht schnell vorkommen könnte das man einen schnellen Algorithmus braucht.

Siehe BlackLordOfDragons Link.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 31.08.2004, 09:15    Titel: Antworten mit Zitat

So wie es aussieht, kann man die Sortieralgorithmen nur auf Vektoren anwenden, die beim Zerbst erklärt wurden. Aber gehts nich irgendwie auch mit Listen?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nahar
Senior JLI'ler


Alter: 37
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 31.08.2004, 09:26    Titel: Antworten mit Zitat

Oder für wenige Elemente kannst du auch Bubblesort benutzen:
Ist ein bisschen langsamer, bei kleinen Mengen (Informatisch, nicht Mathematischen Mengen) machts aber nix
Code:

r=maximale anzahl;
for(int i=0;i<r;i++) {
for(int j=r;j>i;j--) {
if(element[i]<element[j])
Tausche die Beiden;
}
}


Ist halt leicheter zu implementieren


Implementiert halt den Algo selber, dann müsst ihr nicht auf irgendwelche Einschränkungen aufpassen. so schwer ist Quicksort auch nicht
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 31.08.2004, 09:56    Titel: Antworten mit Zitat

Ich habe folgende Deklaration:

Code:

list<CBillboard*>::iterator itAlpha; //Grafikzeiger
list<CBillboard*> listAlpha; //Grafikliste



In CBillboard ist die Information"float Distance" enthalten.
Jetzt soll jedes Element aus dieser Liste nach "Distance sortiert werden.
Geht das überhaupt mit Listen? Wenn nicht, wie siehts mit Vektoren aus? Gibts da eine Funktion aus der STL, die das erledigen kann?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum