Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395

    problema posizione classifica

    Ciao a tutti. devo creare la posizione di classifica di un determinato numero di giocatori seguendo un certo ordine.
    Cioè il primo ordine è quello del risultato totale e il secondo è la discriminante. Sia il risultato totale che la discriminante le estraggo da un database.
    La posizione di classifica è data dal risultato e se la discriminante è diversa allora anche la posizione di classifica sarà diversa.

    esempio di classifica corretta:
    Pos | risultato | discriminante
    1 | 88 | 1
    2 | 88 | 5
    3 | 90 | 4
    3 | 90 | 4
    5 | 91 | 3
    6 | 91 | 4

    per la posizione di classifica faccio così:
    codice:
    posCLM = posCLM + 1 ' sempre
    IF Colp<>Ultima("colpi") THEN
       Colp=Ultima("colpi")
       contaposizione = posCLM
    End if
    quindi mi creo la classifica ma se la discriminante è diversa questo codice non ne tiene conto e mi darebbe:
    Pos | risultato | discriminante
    1 | 88 | 1
    1 | 88 | 5
    3 | 90 | 4
    3 | 90 | 4
    5 | 91 | 3
    5 | 91 | 4

    quindi ho aggiunto:
    codice:
    If gGiri = 3 Then
        If colp=Ultima("colpi") AND dis1<>Ultima("discriminante1") Then
        Colp=Ultima("colpi")
        contaposizione = posCLM
        End If
    End If
    


    ma questo mi da:
    Pos | risultato | discriminante
    1 | 88 | 1
    2 | 88 | 5
    3 | 90 | 4
    4 | 90 | 4
    5 | 91 | 3
    6 | 91 | 4


    Cioè non tiene conto della discriminante e va avanti a contare. Invece se risultato e discriminante sono uguali deve mantenere la stessa posizione di classifica.

    Aiuto!!!


  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    Quote Originariamente inviata da ottoboni77 Visualizza il messaggio
    esempio di classifica corretta:
    Pos | risultato | discriminante
    1 | 88 | 1
    2 | 88 | 5
    3 | 90 | 4
    3 | 90 | 4
    5 | 91 | 3
    6 | 91 | 4
    visto anche l'ultimo listato è probabile che non abbia capito le tue intenzioni...

    (nel caso invece avessi capito ) non ti basta ordinare per "risultato desc, discriminante asc" ?


    EDT: ho riletto, ora ho capito mo ci penso
    Ultima modifica di Vincent.Zeno; 18-02-2016 a 22:36

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    Infatti la sql è ordinata per risultato e discriminante.
    Il problema è proprio che se risultato e discriminante è uguale, la posizione deve essere uguale
    Ultima modifica di ottoboni77; 18-02-2016 a 23:33

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    tieni in memoria, in una variabile di comodo, i valori dell'ultimo record estratto

    prima di incrementare il valore di POS verifica se RISULTATO e DISCRIMINANTE sono uguali alla precedente estrazione
    se lo sono non incrementi, altrimenti si

    uso altri nomi di variabile ma immagino tu capisca:
    codice:
    if risultatoPre=rs("risultato") and discriminantePre=rs("discriminante") then
        conta = conta
    else
        conta = conta+1
    end if
    
    'quindi qui stampo
    
    'e tengo in memoria i valori
    risultatoPre=rs("risultato")
    discriminantePre=rs("discriminante")
    
    'continuando il ciclo farò il controllo sui nuovi dati da confrontare
    'con quelli che ho memorizzato nella variabile

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    ok. il primo punto lo ho capito.
    In sostanza adesso per ogni risultato e discriminante uguale non incrementa la posizione. però le posizioni poi non sono corrette perché per ipotesi se il 15 e il 16 hanno lo stesso risultato e gli stessi colpi da sì come conta il numero 15 ma poi quello che dovrebbe essere 17 lo mette 16.
    Ultima modifica di ottoboni77; 20-02-2016 a 15:46

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    ok, allora per i colpi "persi" accumula una variabile da sommare al risultato differente successivo.
    una volta sommata la variabile, questa va azzerata.

    non ho potuto verificare, prova:
    codice:
    if risultatoPre=rs("risultato") and discriminantePre=rs("discriminante") then
        conta = conta
        accumula = accumula+1
    else
        conta = conta + 1 + accumula
        accumula = 0
    end if

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    perfetto. funziona. grazie!!
    Ultima modifica di ottoboni77; 21-02-2016 a 12:11

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    ho appena verificato, funziona.
    fai vedere tutto quello che hai scritto

    edit: ah ecco
    Ultima modifica di Vincent.Zeno; 21-02-2016 a 12:36

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    ho fatto così:
    codice:
    if risultatoPre=ultima("colpi") and discriminantePre=ultima("discriminante1") then
    contaposizione = contaposizione
    accumula = accumula+1
    else
    contaposizione = contaposizione + 1 + accumula
    accumula = 0
    end if
    risultatoPre=ultima("colpi")
    discriminantePre=ultima("discriminante1")
    
    'questo per vedere che funzioni
    response.write contaposizione &" &nbsp; "
    response.write risultatoPre &" &nbsp; "& discriminantePre &" <br> "
    response.flush

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    riprendendo il discorso delle posizioni che ora funziona ho bisogno però di un'altra cosa.
    Per ogni posizione viene attribuito un punteggio.
    Ipotesi
    1° 100 punti
    2° 95 punti
    3° 90 punti

    ma se il secondo e il terzo sono pari come risultato la posizione risulta 2°.
    Avrei bisogno però che i punti vengano sommati e divisi. Cioè:
    1° 100 punti
    2° 92,5 punti
    2° 92,5 punti

    Per attribuire i punti adesso faccio così:
    codice:
    if posizione = 1 then
    puntiM = 100
    end if
    if posizione = 2 then
    puntiM = 95
    end if
    if posizione = 3 then
    PuntiM = 90
    end if
    la teoria dovrebbe essere semplice. conto la posizione corretta (senza accumula) ed attribuisco i punti.
    Poi conto la posizione con "accumula" e se la posizione risulta uguale sommo e divido.

    E' la pratica che mi mette in difficoltà.

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.