[Code] Estrazione dei match della fantacoppa

Discuti dei problemi relativi alla programmazione nel tuo linguaggio preferito!

Moderatori: cb_123, thrantir, tonertemplum

[Code] Estrazione dei match della fantacoppa

Messaggiodi thrantir il 16 ott 2007, 16:29

uno dei vantaggi del codice aperto è la completa trasparenza di ciò che avviene. Per dimostrarlo, per cogliere un'occasione di parlare un po di programmazione, e per fare un po gli sboroni, ecco il codice del programmino che ha estratto gli incontri per la nostra fantacoppa

Codice: Seleziona tutto
thrantir@Rivendell:~/workspace/fantacalcio$ cat estrazione.cc
#include <fstream>
#include <list>
#include <iostream>
#include <stdexcept>
#include <ctime>

struct Team {
        Team(const std::string & a_name, int an_id)
                : name(a_name)
                , id(an_id)
        {}
        std::string name;
        int id;
};

typedef std::list<Team> Teams;
typedef std::pair<Team, Team> Match;
typedef std::list<Match> Matches;

Teams the_teams;
Matches the_matches;

void readTeams(const std::string & file_name);
void printTeams();
void extractMatches();
void printMatches();

int main() {

        readTeams("teams.dat");
        //printTeams();
        extractMatches();
        printMatches();
        return EXIT_SUCCESS;
}

void readTeams(const std::string & file_name) {
        std::ifstream file(file_name.c_str());
        std::string line;
        if(!file.good()) {
                throw std::runtime_error("no team file");
        }
        while(!file.eof()) {
                getline(file, line);
                if(line.length() > 0) {
                        int index = line.find('|');
                        if(index != std::string::npos) {
                                std::string my_name = line.substr(index+1, line.length() - index) ;
                                int my_id = atoi(line.substr(0, index).c_str());
                                the_teams.push_back(Team(my_name, my_id));
                        }
                }
        }
}

void printTeams() {
        Teams::const_iterator my_iter = the_teams.begin();
        Teams::const_iterator my_end = the_teams.end();
        for( /* void */;
                my_iter != my_end;
                ++my_iter) {
                std::cout << "team " << my_iter->id << " " << my_iter->name << std::endl;
        }
}

void extractMatches() {
        if((the_teams.size() % 2) != 0 ) {
                perror("squadre dispari!!!");
        }
        srand(time(0));
        while( the_teams.size() > 0) {
        //long long my_rand = rand();
                int my_choose =  (the_teams.size() * (rand() / (RAND_MAX + 1.0)));
                Teams::iterator my_iter = the_teams.begin();
                for (/* void */; my_choose > 0 ; --my_choose) ++my_iter;
                Team first(*my_iter);
                the_teams.erase(my_iter);
                my_choose =  (the_teams.size() * (rand() / (RAND_MAX + 1.0)));
                my_iter = the_teams.begin();
                for (/* void */; my_choose > 0 ; --my_choose) ++my_iter;
                Team second(*my_iter);
                the_teams.erase(my_iter);
                the_matches.push_back(std::make_pair(first, second));
        }
}

void printMatches() {
        Matches::const_iterator my_iter = the_matches.begin();
        Matches::const_iterator my_end = the_matches.end();
        for( /* void */;
                my_iter != my_end;
                ++my_iter) {
                std::cout << "match: " << my_iter->first.name << " - " << my_iter->second.name << std::endl;
        }
}
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

 

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi nemesys_72 il 16 ott 2007, 16:45

che sboooooooooooorone..
:lol:
scherzi a parte, bel lavoro teo..
Mors Omnia Aequat
Immagine
Avatar utente
nemesys_72
Magister
Magister
 
Messaggi: 21760
Iscritto il: 11 feb 2005, 14:56
Località: Il Veneto è la mia Patria..

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi thrantir il 17 ott 2007, 12:08

una cosa che non ho scritto, perchè consideravo scontata, è che chiunque è libero di migliorare questo codice, magari estenderlo :wink:
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi MauriAxel il 24 ott 2007, 18:43

domanda da super novellino, come fai a far caricare al programma i dati (in questo caso i nomi delle squadre) senza la presensa di nessun cin?
Immagine
Avatar utente
MauriAxel
Luce delle stelle
Luce delle stelle
 
Messaggi: 1605
Iscritto il: 11 giu 2005, 20:48
Località: Provincia di Como

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi thrantir il 25 ott 2007, 11:34

la risposta è nella funzione reatTeam, che legge da un file le squadre.

Chiaramente il file deve avere il formato che il programma prevede. Una cosa comoda sarebbe, per esempio, una fuzione che ti permette di riempirlo inserendo man mano i team, e magari anche di modificarlo, leggendo il file pre-esistente e risalvandolo dopo le modifiche

ti ci vuoi cimentare? se ti va ti do supporto :-)
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi MauriAxel il 25 ott 2007, 16:00

no no non ti preoccupare è un livello troppo alto per me, abbiamo appena introdotto i record a scuola
Immagine
Avatar utente
MauriAxel
Luce delle stelle
Luce delle stelle
 
Messaggi: 1605
Iscritto il: 11 giu 2005, 20:48
Località: Provincia di Como

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi thrantir il 25 ott 2007, 16:50

tranquillo, non è difficile

intanto potresti dirmi in modo informale tu come lo faresti, poi vediamo come si trasformano quelle frasi in codice :-)
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi MauriAxel il 25 ott 2007, 17:36

quel che ho capito io è che questo programma prende da un file esterno le squadre e tramite non so quale algoritmo fa un sorteggio, giusto?
la prima domanda che mi sorge è: è un algoritmo fatto per un numero fisso di squadre oppure posso usare qualsiasi potenza di due?
Immagine
Avatar utente
MauriAxel
Luce delle stelle
Luce delle stelle
 
Messaggi: 1605
Iscritto il: 11 giu 2005, 20:48
Località: Provincia di Como

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi thrantir il 25 ott 2007, 18:05

la risposta la trovi nella funzione extract Match, prova a leggerla, se non riesci a capire cosa fa ti aiuto io, passo passo però (sennò non ragioni :P)
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi tonertemplum il 26 ott 2007, 21:39

thrantir ha scritto:la risposta la trovi nella funzione extract Match, prova a leggerla, se non riesci a capire cosa fa ti aiuto io, passo passo però (sennò non ragioni :P)


io so la risposta... posso prenotarmi??? "buzzzzzzzzzz" pulsante acceso :mrgreen: :mrgreen: :mrgreen:

No no, lascio all'amico MauriAxel....

teo scusa, ma è.... java? o sbaglio?

Sono a chiederti però, visto che sei partito senza "cappello"... che intendi ora per codice aperto? Nel senso, a cosa ti ricolleghi con questo thread? Se no mi son perso qualcosa e non ci raccapezzo.... :-s
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi Joistick il 26 ott 2007, 21:58

no web non è java è C++....
    Genova non ha scordato perché è difficile dimenticare,
    c'è traffico, mare e accento danzante e vicoli da camminare.
    La Lanterna impassibile guarda da secoli gli scogli e l'onda.
    Ritorna come sempre, quasi normale, piazza Alimonda
Avatar utente
Joistick
Luce delle stelle
Luce delle stelle
 
Messaggi: 1598
Iscritto il: 12 feb 2007, 17:45
Località: Canzo (Como)

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi tonertemplum il 26 ott 2007, 23:14

ah ok... thx! perchè la sintassi è molto simile....
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi thrantir il 27 ott 2007, 00:38

sisi la sintassi java deriva al 95% da quella c++ :-)

con condice aperto intendo proprio open source, ho reso pubblico il codice del programmino che ho usato per generare le sfide :-)
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi tonertemplum il 27 ott 2007, 12:07

thrantir ha scritto:sisi la sintassi java deriva al 95% da quella c++ :-)

con condice aperto intendo proprio open source, ho reso pubblico il codice del programmino che ho usato per generare le sfide :-)


OK... ora ci sono :D
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Re: [Code] Estrazione dei match della fantacoppa

Messaggiodi MauriAxel il 30 ott 2007, 22:39

thrantir ha scritto:la risposta la trovi nella funzione extract Match, prova a leggerla, se non riesci a capire cosa fa ti aiuto io, passo passo però (sennò non ragioni :P)

ci capisco poco nulla di quel contenuto già il controllo dell'if mi risulta arabo figuriamoci il resto.
è un livello superiore al mio tutto troppo incomprensibile mi sa che non potrò esserti utile per ottimizzare il programma
Immagine
Avatar utente
MauriAxel
Luce delle stelle
Luce delle stelle
 
Messaggi: 1605
Iscritto il: 11 giu 2005, 20:48
Località: Provincia di Como

 
Prossimo

Torna a Programmare

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron