Italia
Foro

Platzierungen errechnen - Anfängerfrage

 
- Page 1 -


Hallo Leute,
ich bin noch ein ziemlicher Anfänger, was diese Sprache angeht. Ich bitte deshalb um Verständnis, wenn meine Frage iwie dumm ist oder so.

Mein Problem ist: Ich habe eine Software programmiert, die ein Tanztunier auswerten soll. Eigentlich hat das bis jetzt alles ganz gut geklappt, nur jetz bin ich leider Hängen geblieben: Jedes Tanzpaar bekommt eine Gesamtpunktzahl, die das Programm auch schon errechnet. Aber jetzt muss ich dafür Plätze vergeben, d.h. ich muss es irgendwie hinkriegen, dass die Platzierungen an die Paare vergeben werden, je nachdem, wie viele Punkte sie haben. Jetzt ist das nur nicht so wie ihr denkt: Den ersten Platz Beispielsweise hat das Paar, das am wenigsten Punkte hat.

Ich hoffe, mir kann jemand helfen, diese Platzierungen einfach zu errechnen. Aber das Programm muss damit rechnen, dass 2 Paare gleichviele Punkte haben und deswegen müssen sie auch die gleiche Platzierung bekommen.

Bitte erklärt mir das anschaulich, wenn possibile. Vielen Dank im Voraus!!
tecnologymaster
 
21.12.2010  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Thomas
Freier
@Jörg, warum soll er von unten anfangen? Denn

Den ersten Platz Beispielsweise hat das Paar, das am wenigsten Punkte hat.

Declare Listbox%,Ende%, Platz%, x!, y%, z! ,Text$
SetTrueColor 1
Cls @RGB(255,255,255)
ListBox%=@CreateSortedListBox(%hWnd,"",20,20,200,200)
' kann auch eine unsichtbare Listbox sein....Box(%hWnd,"",0,0,0,0)
@AddString(ListBox%,Format$("000.00",10.20)+" | "+"Müller")
@AddString(ListBox%,Format$("000.00",5.40)+" | "+"Meier")
@AddString(ListBox%,Format$("000.00",1.2)+" | "+"Karl")
@AddString(ListBox%,Format$("000.00",8.00)+" | "+"Wert")
@AddString(ListBox%,Format$("000.00",1.2)+" | "+"Hansen")
Platz%=0
x!=0
y%=20
z!= -1
Decimals 2

WhileLoop @GetCount(ListBox%)

    'WhileLoop beginnt mit 1, 1.Zeile Liste = 0, d.h. Index Liste= &Loop-1
    x!=val(Translate$(Substr$(@GetString$(ListBox%,(&Loop-1)),1,"|"),",","."))
    case x! > z! : inc Platz%' Platz% nur erhöhen, wenn nächster Wert größer
    Text$=str$(Platz%)+".Platz   "+Substr$(@GetString$(ListBox%,(&Loop-1)),2,"|")
    DrawText 300,y%,Text$
    Text$="mit "+ str$(x!)+" Punkten"
    DrawText 480,y%,Text$
    y%=y%+20
    z!= x!

EndWhile

WaitKey
End
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.12.2010  
 




Jörg
Sellmeyer
Ciao,

Ich würde die Punktzahlen mit Format$() in Strings umwandeln. Und zwar so, daß alle Zahlenstrings die gleiche Länge haben - also mit Vornullen auffüllen. Wenn die Anzahl maximal dreistellig ist, lautet die Formel so:
Punkte$ = Format$("000",Punkte%) + "|" + Teilnehmer$

Dann alle Strings in un sortierte Listbox. Dann hast Du schonmal die Reihenfolge. Jetzt kannst Du von unten anfangen die Plätze zu vergeben.
Der letzte Eintrag bekommt schonmal den 1. Platz. Du mußt jetzt nur noch zum jeweils nächsthöheren Listenplatz die Punktzahl vergleichen um gleichen Punkteständen den gleichen Platz zuzuweisen.
Noch eleganter geht das mit einem Listview aber ich weiß nicht, welche Profanversion Du hast.

Saluto
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.12.2010  
 



[offtopic]Thema aus der Aiuto zur Webseite ^^ nach XProfan-Foro verschoben. [/offtopic]
 
21.12.2010  
 




Thomas
Freier
@Jörg, warum soll er von unten anfangen? Denn

Den ersten Platz Beispielsweise hat das Paar, das am wenigsten Punkte hat.

Declare Listbox%,Ende%, Platz%, x!, y%, z! ,Text$
SetTrueColor 1
Cls @RGB(255,255,255)
ListBox%=@CreateSortedListBox(%hWnd,"",20,20,200,200)
' kann auch eine unsichtbare Listbox sein....Box(%hWnd,"",0,0,0,0)
@AddString(ListBox%,Format$("000.00",10.20)+" | "+"Müller")
@AddString(ListBox%,Format$("000.00",5.40)+" | "+"Meier")
@AddString(ListBox%,Format$("000.00",1.2)+" | "+"Karl")
@AddString(ListBox%,Format$("000.00",8.00)+" | "+"Wert")
@AddString(ListBox%,Format$("000.00",1.2)+" | "+"Hansen")
Platz%=0
x!=0
y%=20
z!= -1
Decimals 2

WhileLoop @GetCount(ListBox%)

    'WhileLoop beginnt mit 1, 1.Zeile Liste = 0, d.h. Index Liste= &Loop-1
    x!=val(Translate$(Substr$(@GetString$(ListBox%,(&Loop-1)),1,"|"),",","."))
    case x! > z! : inc Platz%' Platz% nur erhöhen, wenn nächster Wert größer
    Text$=str$(Platz%)+".Platz   "+Substr$(@GetString$(ListBox%,(&Loop-1)),2,"|")
    DrawText 300,y%,Text$
    Text$="mit "+ str$(x!)+" Punkten"
    DrawText 480,y%,Text$
    y%=y%+20
    z!= x!

EndWhile

WaitKey
End
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.12.2010  
 




Jörg
Sellmeyer
Ah - stimmt ja. Der kleinste Eintrag ist oben. Ich programmier zu wenig im Moment...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.12.2010  
 




Thomas
Freier
Ergänzend, falls nach zwei 1. der Dritte den 3.Platz hat:
Declare Listbox%,Ende%, Platz%, x!, y%, z! ,Text$
SetTrueColor 1
Cls @RGB(255,255,255)
ListBox%=@CreateSortedListBox(%hWnd,"",20,20,200,200)
' kann auch eine unsichtbare Listbox sein....Box(%hWnd,"",0,0,0,0)
@AddString(ListBox%,Format$("000.00",10.20)+" | "+"Müller")
@AddString(ListBox%,Format$("000.00",5.40)+" | "+"Meier")
@AddString(ListBox%,Format$("000.00",1.2)+" | "+"Karl")
@AddString(ListBox%,Format$("000.00",8.00)+" | "+"Wert")
@AddString(ListBox%,Format$("000.00",1.2)+" | "+"Hansen")
Platz%=0
x!=0
y%=20
z!= -1
Decimals 2

WhileLoop @GetCount(ListBox%)

    'WhileLoop beginnt mit 1, 1.Zeile Liste = 0, d.h. Index Liste= &Loop-1
    x!=val(Translate$(Substr$(@GetString$(ListBox%,(&Loop-1)),1,"|"),",","."))
    case x! > z! : Platz% = &Loop
    Text$=str$(Platz%)+".Platz   "+Substr$(@GetString$(ListBox%,(&Loop-1)),2,"|")
    DrawText 300,y%,Text$
    Text$="mit "+ str$(x!)+" Punkten"
    DrawText 480,y%,Text$
    y%=y%+20
    z!= x!

EndWhile

WaitKey
End

oder der 1. der mit den meisten Punkten ist:
Declare Listbox%, Box%, Platz%, x!, y%, z! ,Text$
SetTrueColor 1
Cls @RGB(255,255,255)
' kann auch eine unsichtbare Listbox sein....Box(%hWnd,"",0,0,0,0)
ListBox%=@CreateSortedListBox(%hWnd,"",20,20,200,200)
' Listbox zum Sortieren bei Punktegleichheit
Box%=@CreateSortedListBox(%hWnd,"",0,0,0,0)
@AddString(ListBox%,Format$("000.00",10.20)+" | "+"Müller")
@AddString(ListBox%,Format$("000.00",5.40)+" | "+"Meier")
@AddString(ListBox%,Format$("000.00",5.4)+" | "+"Karl")
@AddString(ListBox%,Format$("000.00",5.40)+" | "+"Wert")
@AddString(ListBox%,Format$("000.00",1.2)+" | "+"Hansen")
Platz%=1
x!=0
y%=20
z!= 10000
Decimals 2

WhileLoop @GetCount(ListBox%),1,-1

    'WhileLoop beginnt mit 1, 1.Zeile Liste = 0, d.h. Index Liste= &Loop-1
    @AddString(Box%,@GetString$(ListBox%,(&Loop-1)))' per die Ausgabe
    x!=val(Translate$(Substr$(@GetString$(ListBox%,(&Loop-1)),1,"|"),",","."))
    case x! < z!:  Platz% =@GetCount(ListBox%)-&Loop+1
    ' Wenn der nächste Wert in Box 1 kleiner: Ausgabe Box 2
    case x! > val(Translate$(Substr$(@GetString$(ListBox%,(&Loop-2)),1,"|"),",",".")): Anzeige
    z!= x!

EndWhile

WaitKey
End

Proc Anzeige

    Declare a%
    a%=0

    While a%<=(@GetCount(Box%)-1)

        Text$=str$(Platz%)+".Platz   "+Substr$(@GetString$(Box%,a%),2,"|")
        DrawText 300,y%,Text$
        Text$="mit "+ str$(x!)+" Punkten"
        DrawText 480,y%,Text$
        y%=y%+20
        inc a%

    Endwhile

    DestroyWindow(box%)
    Box%=@CreateSortedListBox(%hWnd,"",0,0,0,0)

Endproc


Sollte nach der Aiuto alles ab Profan 7.5 laufen.
Edit 25.12., damit auch die Namen bei Punktegleichheit sortiert sind.
 
Gruß Thomas
Windows XP SP2, XProfan X2
23.12.2010  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

13.482 Views

Untitledvor 0 min.
Sven Bader11.07.2021
Matthias Arlt18.02.2016
Peter Max Müller30.09.2014
Lothar Dannhauer22.06.2012
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie