Accueil > > > COURSE CYCLISTE
COURSE CYCLISTE
Information sur la source
Description
gestion du tour de france
Source
- ******************************************************************************
- ******************************************************************************
- TXT2DAT
- ******************************************************************************
- ******************************************************************************
- /* ---------------------------------------------------------------------------
- * Programme de conversion d'un fichier texte d'équipes en fichier binaire
- * de coureurs
- * Auteur(s) : DESPORTES BONIN
- * Groupe TP :1 H
- * Création :
- * Entrées : un fichier texte donné sur la ligne de commande, equipes.txt
- * par défaut.
- * Syntaxe du fichier :
- * <ÉQUIPES> ::= <ÉQUIPE> +
- * <ÉQUIPE> ::= <ABR> <NOM COMPLET DE L'ÉQUIPE>'\n'<COUREUR> +
- * <COUREUR> ::= '\t'<DOSSARD>' '<NOM>' ''('<NATIONALITÉ>')''\n'
- * <ABR> ::= <chaîne de 3 caractères>
- * <NOM COMPLET DE L'ÉQUIPE> ::= <chaîne de caractères>
- * <DOSSARD> ::= <entier>
- * <NOM> ::= <chaîne de caractères>
- * <NATIONALITÉ> ::= <chaîne de 3 caractères>
- * Sorties : un fichier binaire (coureurs.dat)
- * Le fichier binaire contient un élément par coureur sous la forme
- * d'un enregistrement (de taille fixe, voir la structure Coureur).
- * Avancement :
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "temps.h"
- #include "coureurs.h"
-
- /* Nom par défaut du fichier des équipes */
- #define FICHIER_EQUIPES "equipes.txt"
-
- /* Taille maximum d'une ligne */
- #define MAXLIGNE 128
-
- /* Le caractère nul, plus facile à taper comme ça : */
- #define NUL '\0'
-
- void Usage(void);
-
- /* ---------------------------------------------------------------------
- * Programme principal :
- * . Pour chaque équipe du fichier d'entrée :
- * .. récupération de l'abréviation du nom
- * .. pour chaque coureur de l'équipe :
- * ... construction de la structure Coureur et enregistrement
- * dans le fichier de sortie (et affichage).
- */
- int main(int nbArgs, char *arg[])
- {
- char *nomEquipes, *nomCoureurs;
- char ligne[MAXLIGNE]; /* pour lecture du fichier des équipes */
- FILE *fEquipes;
- FILE *fCoureurs;
- Coureur c;
- char Equipe[4];
- char *s;
-
-
- /* Analyse des arguments */
- switch (nbArgs)
- {
- case 1: /* pas d'arguments : valeurs par défaut */
- nomEquipes = FICHIER_EQUIPES;
- nomCoureurs = FICHIER_COUREURS;
- break;
- case 2: /* fichier des équipes fourni en argument */
- nomEquipes = arg[1];
- nomCoureurs = FICHIER_COUREURS;
- break;
- case 3: /* fichier des équipes et fichier des coureurs
- * fournis */
- nomEquipes = arg[1];
- nomCoureurs = arg[2];
- break;
- default:
- Usage();
- }
-
- printf("Création du fichier %s à partir du fichier %s\n",
- nomCoureurs, nomEquipes);
-
- fEquipes=fopen("equipes.txt","r");
- /*test*/
- if (fEquipes==0)
- printf("Erreur d'ouverture du fichier");
- else
- {
-
- fCoureurs=fopen("coureurs.dat","wb");
- /*test*/
- if (fCoureurs==0)
- printf("Erreur d'ouverture du fichier");
- else
- {
- printf("***************ENREGISTREMENT***************\n");
- fgets(ligne,MAXLIGNE,fEquipes);
-
- c.temps.h=0;
- c.temps.m=0;
- c.temps.s=0;
-
- while (!feof(fEquipes))
- {
- if (ligne[0]!='\t')
- {
- /*traitement pour une équipe*/
- strncpy(Equipe,ligne,3);
- Equipe[3]=NUL;
- fgets(ligne,MAXLIGNE,fEquipes);
- }
- else
- {
- /*traitement pour un coureur*/
- /*on mémorise son dossard*/
- sscanf(ligne,"%d",&(c.dossard));
-
- /*on mémorise le nom*/
- /*on recherche la fin du nom*/
- s=strchr(ligne,'(');
-
- /*on insère une marque NUL*/
- *(s-1)=NUL;
- strcpy(c.nom,ligne+5);
-
- /*on mémorise le pays*/
- strncpy(c.pays,s+1,3);
- c.pays[3]=NUL;
-
- /*on mémorise l'équipe*/
- strcpy(c.equipe,Equipe);
- fgets(ligne,MAXLIGNE,fEquipes);
- affCoureur(c,stdout);
- fwrite(&c,sizeof(Coureur),1,fCoureurs);
-
- }
- }
- fclose(fCoureurs);
- printf("*****************FIN***********\n");
- afficheCoureurs("coureurs.dat",stdout);
- fclose(fEquipes);
-
- }/*test des ouvertures*/
- }
-
- return EXIT_SUCCESS;
-
- }
- /*
- * Affichage du mode d'emploi et sortie du programme
- * Sorties : affichage sur la sortie erreur standard */
- void Usage(void)
- {
- fprintf(stderr, "Usage : \n");
- fprintf(stderr, "\ttxt2dat [[EQUIPES=equipes.txt [COUREURS=coureurs.dat]]\n");
- exit(EXIT_FAILURE);
- }
-
-
- ******************************************************************************
- ******************************************************************************
- COUREURS
- ******************************************************************************
- ******************************************************************************
- /* ---------------------------------------------------------------------------
- * Module de gestion des coureurs.
- * Auteur(s) :DESPORTES BONIN
- * Groupe TP :1 H
- * Création :
- * Avancement : TERMINE
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include "temps.h"
-
- #define COUREURS_C
- #include "coureurs.h"
-
- /* Affichage d'un coureur sur un fichier texte
- * Entrées : un coureur, out : fichier texte supposé ouvert en écriture
- * Sorties : écriture du coureur sur out
- * Exemple d'utilisation : (affichage sur l'écran)
- * affCoureur(c, stdout); */
- void affCoureur(Coureur c, FILE *out)
- {
- fprintf(out,"%d %s %s %s ",c.dossard,c.nom,c.equipe,c.pays);
- affTemps(c.temps,out);
- fprintf(out,"\n");
-
- }
-
- /* Affichage d'un fichier de coureurs sur un fichier texte
- * Entrées : nomCoureurs, fichier binaire de coureurs ;
- * out : fichier texte supposé ouvert en écriture
- * Sorties : écriture du contenu de nomCoureurs sur out
- * Exemple d'utilisation : (affichage sur l'écran)
- * afficheCoureurs("coureurs.dat", stdout); */
- void afficheCoureurs(char nomCoureurs[], FILE *out)
- {
- FILE* Fc;
- Coureur c;
-
- Fc=fopen(nomCoureurs,"rb");
- /*A TEST*/
- if (Fc==0)
- printf("Erreur d'ouverture du fichier");
- else
- {
- /*lecture*/
- fread(&c,sizeof(Coureur),1,Fc);
- while (!feof(Fc))
- {
- fprintf(out,"%d %s %s %s ",c.dossard,c.nom,c.equipe,c.pays);
- affTemps(c.temps,out);
- fprintf(out,"\n");
- fread(&c,sizeof(Coureur),1,Fc);
- }
- fclose(Fc);
- }
- }
-
- /* Recherche d'un coureur dans un fichier binaire de coureurs
- * Entrées : le numéro de dossard du coureur ;
- * coureurs : fichier binaire supposé ouvert en lecture ;
- * Sorties : rang du coureur dans le fichier ou -1 s'il n'existe pas */
- int chercheCoureur(int dossard, FILE *coureurs)
- {
- int rang=0;
- Coureur c;
-
-
- /*on se positionne au début*/
- fseek(coureurs,0,SEEK_SET);
- fread(&c,sizeof(Coureur),1,coureurs);
- while (!feof(coureurs))
- {
- if (c.dossard==dossard)
- break;
- else
- {
- fread(&c,sizeof(Coureur),1,coureurs);
- rang++;
- }
- }
- if (feof(coureurs))
- return -1;
- else return rang;
- }
-
-
- ******************************************************************************
- ******************************************************************************
- TRI
- ******************************************************************************
- ******************************************************************************
- /* ---------------------------------------------------------------------------
- * Programme de tri d'un fichier de coureurs selon le numéro de dossard, tri
- * par insertion en chargeant le fichier dans une table. La taille maximum
- * de la table est fixée par constante.
- * Auteur(s) :
- * Groupe TP :
- * Création :
- * Entrées : le fichier de coureurs donné sur la ligne de commande, défaut
- * coureurs.dat (voir module coureurs).
- * Sorties : le même fichier trié.
- * Avancement :
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include "temps.h"
- #include "coureurs.h"
-
- void Usage(void);
-
- /* ---------------------------------------------------------------------
- * Programme principal :
- * . Chargement du fichier à trier dans un table avec insertion dans
- * l'ordre du numéro de dossard.
- * . Réécriture du fichier trié sur disque
- */
- int main(int nbArgs, char *arg[])
- {
- char *nomCoureurs;
- int j,nbcoureur;
- FILE* Fc;
- Coureur c;
- Coureur T[200];
-
- switch (nbArgs)
- {
- case 1: /* pas d'arguments */
- nomCoureurs = FICHIER_COUREURS;
- break;
- case 2: /* fichier des coureurs fourni en argument */
- nomCoureurs = arg[1];
- break;
- default:
- Usage();
- }
-
- c.temps.h=0;
- c.temps.m=0;
- c.temps.s=0;
-
- /* chargement du fichier dans la table avec insertion à la volée */
- Fc=fopen(nomCoureurs,"rb");
- /*test*/
- if (Fc==0)
- printf("Erreur d'ouverture du fichier");
- else
- {
- fread(&c,sizeof(Coureur),1,Fc);
- j=0;nbcoureur=0;
- while (!feof(Fc))
- {
- /*selon les differents cas*/
- /*le tableau est vide*/
- if (nbcoureur==0)
- {
- T[0]=c;nbcoureur++;
- }
- /*le tableau contient au moins un élément*/
- else
- {
- /*insertion en fin de tableau*/
- if (T[nbcoureur-1].dossard < c.dossard)
- { T[nbcoureur]= c;nbcoureur++;
- }
-
- /*insertion avec décalage*/
- else
- {
- j=nbcoureur-1;
- while ((j>=0) && (T[j].dossard > c.dossard))
- {
- T[j+1]=T[j];
- j--;
- }
- T[j+1]=c;
- nbcoureur++;
- }
- }
- fread(&c,sizeof(Coureur),1,Fc);
- }
- fclose(Fc);
-
-
- Fc=fopen(nomCoureurs,"wb");
- /*a tester*/
-
- /* Réécriture de la table dans le fichier */
- for(j=0;j<nbcoureur;j++)
- fwrite(&T[j],sizeof(Coureur),1,Fc);
-
- fclose(Fc);
-
- Fc=fopen(nomCoureurs,"rb");
- /* Réaffichage pour trace */
- afficheCoureurs("coureurs.dat",stdout);
-
- fclose(Fc);
- }
- return EXIT_SUCCESS;
- }
-
- /*
- * Affichage du mode d'emploi et sortie du programme
- * Sorties : affichage sur la sortie erreur standard */
- void Usage(void)
- {
- fprintf(stderr, "Usage : \n");
- fprintf(stderr, "\ttri [COUREURS=coureurs.dat]\n");
- exit(EXIT_FAILURE);
- }
-
-
- ******************************************************************************
- ******************************************************************************
- TEMPS
- ******************************************************************************
- ******************************************************************************
- /* ---------------------------------------------------------------------------
- * Module de gestion du temps en heure, minutes, secondes.
- * Auteur(s) : Damien Genthial
- * Création : 10 juillet 2000
- */
-
- #include <stdio.h>
- #include <time.h>
-
- #define TEMPS_C
- #include "temps.h"
-
- /* Affichage d'un temps sur un fichier texte
- * Entrées : un temps t, out : fichier texte supposé ouvert en écriture
- * Sorties : écriture du temps sur out
- * Exemple d'utilisation : (affichage sur l'écran)
- * affTemps(t, stdout); */
- void affTemps(Temps t, FILE *out)
- {
- fprintf(out, "%02d:%02d:%02d", t.h, t.m, t.s);
- }
-
- /* Addition des deux temps t1 et t2 */
- Temps addTemps(Temps t1, Temps t2)
- {
- Temps res = {0, 0, 0};
-
- res.s = t1.s + t2.s;
- if (res.s >= 60)
- {
- res.s = res.s - 60;
- res.m = 1;
- }
- res.m = res.m + t1.m + t2.m;
- if (res.m >= 60)
- {
- res.m = res.m - 60;
- res.h = 1;
- }
- res.h = res.h + t1.h + t2.h;
-
- return res;
- }
-
- /* Différence gd - pt (on suppose gd >= pt) */
- Temps diffTemps(Temps gd, Temps pt)
- {
- Temps res = {0, 0, 0};
-
- res.s = gd.s - pt.s;
- if (res.s < 0)
- {
- res.s = res.s + 60;
- res.m = -1;
- }
- res.m = res.m + gd.m - pt.m;
- if (res.m < 0)
- {
- res.m = res.m + 60;
- res.h = -1;
- }
- res.h = res.h + gd.h - pt.h;
-
- return res;
- }
-
- /* Comparaison de deux temps, retourne -1 si t1 < t2, 0 si t1 = t2 et
- * 1 si t1 > t2 */
- int compareTemps(Temps t1, Temps t2)
- {
- if (t1.h < t2.h)
- return -1;
-
- if (t1.h > t2.h)
- return 1;
-
- if (t1.m < t2.m)
- return -1;
-
- if (t1.m > t2.m)
- return 1;
-
- if (t1.s < t2.s)
- return -1;
-
- if (t1.s > t2.s)
- return 1;
-
- return 0;
- }
-
-
- /* Retourne l'heure système */
- Temps Heure(void)
- {
- struct tm *temps;
- time_t timer;
- Temps res;
-
- timer = time(NULL);
- temps = localtime(&timer);
- res.h = temps->tm_hour;
- res.m = temps->tm_min;
- res.s = temps->tm_sec;
-
- return res;
- }
-
-
- ******************************************************************************
- ******************************************************************************
- BONIFICATION
- ******************************************************************************
- ******************************************************************************
- /* ---------------------------------------------------------------------------
- * Programme de bonification (on enlève un temps donné au temps d'un coureur)
- * Auteur(s) : DESPORTES BONIN
- * Groupe TP :1 H
- * Création :
- * Entrées : le fichier des coureurs (coureurs.dat par défaut)
- * une liste de numéros de coureur et la bonification associée,
- * terminée par le numéro 0
- * Sorties : le fichier des coureurs mis à jour,
- * des traces à l'écran.
- * Avancement :
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include "temps.h"
- #include "coureurs.h"
-
- void Usage(void);
-
- /* ---------------------------------------------------------------------
- * Programme principal :
- * . Pour chaque numéro de coureur lu au clavier :
- * .. recherche du rang dans le fichier
- * .. saisie de la bonification (nombre de secondes)
- * .. affichage de la valeur avant bonification et de valeur après
- * bonification
- * .. mise à jour du fichier
- */
- int main(int nbArgs, char *arg[])
- {
- char *nomCoureurs;
- FILE *fCoureurs;
- int n, rang;
- Temps bonif;
- Coureur c;
- char *r;
-
- switch (nbArgs)
- {
- case 1: /* pas d'arguments, valeur par défaut (voir coureurs.h) */
- nomCoureurs = FICHIER_COUREURS;
- break;
- case 2: /* fichier des coureurs fourni en argument */
- nomCoureurs = arg[1];
- break;
- default:
- Usage();
- }
- fCoureurs=fopen(nomCoureurs,"rw+b");
-
- if (fCoureurs==0)
- printf("Erreur d'ouverture du fichier");
- else
- {
-
- /*saisie controlée*/
- while (1)
- {
- printf("***************\nEntrez un numéro de dossard (0 pour STOP):");
- scanf("%d",&n);
-
- if (n==0)
- break;
- else
- {
- printf("\n");
- rang=chercheCoureur(n,fCoureurs);
- /*pour etre sure d'etre au debut -->*/
- fseek(fCoureurs,0,SEEK_SET);
- if (rang != -1)
- {
- /*deplacement de la taille de la structure*/
- fseek(fCoureurs,rang*sizeof(Coureur),SEEK_SET);
- /*mise en mémoire du coureur*/
- fread(&c,sizeof(Coureur),1,fCoureurs);
- /*vérification visuel pour l utilisateur*/
- printf("DOSSARD [%d] TEMPS:",c.dossard);
- affTemps(c.temps,stdout);
-
- fseek(fCoureurs,-1*sizeof(Coureur),SEEK_CUR);
- bonif.h=0;
- bonif.m=0;
- printf("\nENTRZ LA BONIFICATION : ");
- scanf("%d",&(bonif.s));
-
- c.temps=diffTemps(c.temps, bonif);
- printf("nouveau temps :");
- affTemps(c.temps,stdout);
- printf("\n");
- fwrite(&c,sizeof(Coureur),1,fCoureurs);
- affCoureur(c,stdout);
- }
- /*AIDE A LA SAISIE DU DOSSARD*/
- else
- { printf("Vérifier le numéro de dossard!! Voulez vous voir la liste ?(o/n)");
- scanf("%s",r);
- printf("\n*********\n");
- if ((*r=='o') || (*r=='O'))
- afficheCoureurs(nomCoureurs,stdout);
- }
- }
- }
- fclose(fCoureurs);
-
- }
-
-
-
-
- return EXIT_SUCCESS;
- }
-
- /*
- * Affichage du mode d'emploi et sortie du programme
- * Sorties : affichage sur la sortie erreur standard */
- void Usage(void)
- {
- fprintf(stderr, "Usage : \n");
- fprintf(stderr, "\ttri [COUREURS=coureurs.dat]\n");
- exit(EXIT_FAILURE);
- }
-
-
- ******************************************************************************
- ******************************************************************************
- MAKEFILE
- ******************************************************************************
- ******************************************************************************
- #Makefile pour les programmes du stage C
- #Auteurs :
- #Groupe TP :
-
- #Pour compiler les modules
- CC=cc -g -ansi -c -Wall
- txt2dat: txt2dat.o coureurs.o temps.o
- cc -g -o txt2dat txt2dat.o coureurs.o temps.o -Wall
-
- #Module Principale
- txt2dat.o: txt2dat.c coureurs.h temps.h
- $(CC) txt2dat.c
-
- #Module tri
- tri: tri.o coureurs.o temps.o
- cc -g -o tri tri.o coureurs.o temps.o -Wall
-
- tri.o: tri.c coureurs.h temps.h
- $(CC) tri.c
-
- #Module bonification
- bonification: bonification.o coureurs.o temps.o
- cc -g -o bonification bonification.o coureurs.o temps.o -Wall
-
- bonification.o: bonification.c coureurs.h temps.h
- $(CC) bonification.c
-
- #Module coureurs
- coureurs.o: coureurs.c coureurs.h temps.h
- $(CC) coureurs.c
-
- #Module temps
- temps.o: temps.c temps.h
- $(CC) temps.c
-
- #Pour faire le ménage
- clean:
- rm -f *.o txt2dat bonification tri
- #Pour faire le compte rendu
- cptrd:
- @cat txt2dat.c > CR_TP
- @echo -e "\f" >> CR_TP
- @cat coureurs.c >> CR_TP
- @echo -e "\f" >> CR_TP
- @cat tri.c >> CR_TP
- @echo -e "\f" >> CR_TP
- @cat temps.c >> CR_TP
- @echo -e "\f" >> CR_TP
- @cat bonification.c >> CR_TP
- @echo -e "\f" >> CR_TP
- @echo -e "MAKEFILE\n" >> CR_TP
- @cat Makefile >> CR_TP
- @echo -e "\f" >> CR_TP
- @echo -e "TRACE" >> CR_TP
- @echo -e "TXT2DAT\n" >> CR_TP
- @txt2dat >> CR_TP
- @echo -e "\f" >> CR_TP
- @echo -e "TRI" >> CR_TP
- @tri >> CR_TP
- @random >> CR_TP
- @echo -e "\f" >> CR_TP
- @bonification<test>test.txt >> CR_TP
-
- #Pour ouvrir tout les programmes en arrière plan
- open:
- nedit txt2dat.c &
- nedit coureurs.h &
- nedit temps.h &
- nedit coureurs.c &
- nedit temps.c &
- nedit bonification.c &
- nedit tri.c &
-
-
-
- TRACE
- TXT2DAT
-
- Création du fichier coureurs.dat à partir du fichier equipes.txt
- ***************ENREGISTREMENT***************
- 151 BROCHARD Laurent A2R FRA 00:00:00
- 152 ASTARLOZA Mikel A2R ESP 00:00:00
- 153 BOTCHAROV Alexandre A2R RUS 00:00:00
- 154 CHAURREAU Inigo A2R ESP 00:00:00
- 155 FLICKINGER Andy A2R FRA 00:00:00
- 156 KIRSIPUU Jaan A2R EST 00:00:00
- 157 ORIOL Christophe A2R FRA 00:00:00
- 158 PORTAL Nicolas A2R FRA 00:00:00
- 159 TURPIN Ludovic A2R FRA 00:00:00
- 201 DUFAUX Laurent ALS SUI 00:00:00
- 202 BALDATO Fabio ALS ITA 00:00:00
- 203 BERTOLINI Alessandro ALS ITA 00:00:00
- ...........
- 5 HINCAPIE George USP USA 00:00:00
- 6 LANDIS Floyd USP USA 00:00:00
- 7 PADRNOS Pavel USP CZE 00:00:00
- 8 PENA Victor-Hugo USP COL 00:00:00
- 9 RUBIERA José-Luis USP ESP 00:00:00
- *****************FIN***********
- 151 BROCHARD Laurent A2R FRA 00:00:00
- 152 ASTARLOZA Mikel A2R ESP 00:00:00
- 153 BOTCHAROV Alexandre A2R RUS 00:00:00
- 154 CHAURREAU Inigo A2R ESP 00:00:00
- 155 FLICKINGER Andy A2R FRA 00:00:00
- ...........
- 26 KLÖDEN Andréas TEL GER 00:00:00
- 27 NARDELLO Daniele TEL ITA 00:00:00
- 28 VINOKOUROV Alexandre TEL KAZ 00:00:00
- 29 ZABEL Erik TEL GER 00:00:00
- 1 ARMSTRONG Lance USP USA 00:00:00
- 2 HERAS Roberto USP ESP 00:00:00
- 3 BELTRAN Manuel USP ESP 00:00:00
- 4 EKIMOV Vjatceslav USP RUS 00:00:00
- 5 HINCAPIE George USP USA 00:00:00
- 6 LANDIS Floyd USP USA 00:00:00
- 7 PADRNOS Pavel USP CZE 00:00:00
- 8 PENA Victor-Hugo USP COL 00:00:00
- 9 RUBIERA José-Luis USP ESP 00:00:00
-
-
- TRI
- 1 ARMSTRONG Lance USP USA 00:00:00
- 2 HERAS Roberto USP ESP 00:00:00
- 3 BELTRAN Manuel USP ESP 00:00:00
- 4 EKIMOV Vjatceslav USP RUS 00:00:00
- 5 HINCAPIE George USP USA 00:00:00
- 6 LANDIS Floyd USP USA 00:00:00
- 7 PADRNOS Pavel USP CZE 00:00:00
- 8 PENA Victor-Hugo USP COL 00:00:00
- 9 RUBIERA José-Luis USP ESP 00:00:00
- 11 BELOKI Joseba ONE ESP 00:00:00
- 12 ANDRLE René ONE CZE 00:00:00
- 13 AZEVEDO José ONE POR 00:00:00
- 14 GONZALEZ-GALDEANO Alvaro ONE ESP 00:00:00
- ..............
- 214 EDALEINE Christophe DEL FRA 00:00:00
- 215 FINOT Frédéric DEL FRA 00:00:00
- 216 GOUBERT Stephane DEL FRA 00:00:00
- 217 KRIVTSOV Yuriy DEL UKR 00:00:00
- 218 LEFEVRE Laurent DEL FRA 00:00:00
- 219 NAZON Jean-Patrick DEL FRA 00:00:00
-
-
- ( 1) ARMSTRONG Lance (USP, USA) : 05:46:43
- ( 2) HERAS Roberto (USP, ESP) : 05:55:57
- ( 3) BELTRAN Manuel (USP, ESP) : 05:55:53
- ( 4) EKIMOV Vjatceslav (USP, RUS) : 05:12:46
- ( 5) HINCAPIE George (USP, USA) : 05:01:09
- ( 6) LANDIS Floyd (USP, USA) : 05:07:02
- ( 7) PADRNOS Pavel (USP, CZE) : 05:19:50
- ( 8) PENA Victor-Hugo (USP, COL) : 05:46:23
- ( 9) RUBIERA José-Luis (USP, ESP) : 05:06:00
- ( 11) BELOKI Joseba (ONE, ESP) : 05:16:52
- ( 12) ANDRLE René (ONE, CZE) : 05:08:11
- ..............
- (207) MIHOLJEVIC Vladimir (ALS, CRO) : 05:55:12
- (208) NOE Andrea (ALS, ITA) : 05:04:14
- (209) PELLIZOTTI Franco (ALS, ITA) : 05:29:59
- (211) HALGAND Patrice (DEL, FRA) : 05:56:33
- (212) BOURQUENOUD Pierre (DEL, SUI) : 05:55:30
- (213) DUMOULIN Samuel (DEL, FRA) : 05:22:40
- (214) EDALEINE Christophe (DEL, FRA) : 05:04:59
- (215) FINOT Frédéric (DEL, FRA) : 05:25:13
- (216) GOUBERT Stephane (DEL, FRA) : 05:07:41
- (217) KRIVTSOV Yuriy (DEL, UKR) : 05:13:44
- (218) LEFEVRE Laurent (DEL, FRA) : 05:14:01
- (219) NAZON Jean-Patrick (DEL, FRA) : 05:39:06
-
-
- ***************
- Entrez un numéro de dossard (0 pour STOP):
- DOSSARD [1] TEMPS:05:46:43
- ENTRZ LA BONIFICATION : nouveau temps :05:45:43
- 1 ARMSTRONG Lance USP USA 05:45:43
- ***************
- Entrez un numéro de dossard (0 pour STOP):
- DOSSARD [2] TEMPS:05:55:57
- ENTRZ LA BONIFICATION : nouveau temps :05:55:27
- 2 HERAS Roberto USP ESP 05:55:27
- ***************
- Entrez un numéro de dossard (0 pour STOP):
******************************************************************************
******************************************************************************
TXT2DAT
******************************************************************************
******************************************************************************
/* ---------------------------------------------------------------------------
* Programme de conversion d'un fichier texte d'équipes en fichier binaire
* de coureurs
* Auteur(s) : DESPORTES BONIN
* Groupe TP :1 H
* Création :
* Entrées : un fichier texte donné sur la ligne de commande, equipes.txt
* par défaut.
* Syntaxe du fichier :
* <ÉQUIPES> ::= <ÉQUIPE> +
* <ÉQUIPE> ::= <ABR> <NOM COMPLET DE L'ÉQUIPE>'\n'<COUREUR> +
* <COUREUR> ::= '\t'<DOSSARD>' '<NOM>' ''('<NATIONALITÉ>')''\n'
* <ABR> ::= <chaîne de 3 caractères>
* <NOM COMPLET DE L'ÉQUIPE> ::= <chaîne de caractères>
* <DOSSARD> ::= <entier>
* <NOM> ::= <chaîne de caractères>
* <NATIONALITÉ> ::= <chaîne de 3 caractères>
* Sorties : un fichier binaire (coureurs.dat)
* Le fichier binaire contient un élément par coureur sous la forme
* d'un enregistrement (de taille fixe, voir la structure Coureur).
* Avancement :
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "temps.h"
#include "coureurs.h"
/* Nom par défaut du fichier des équipes */
#define FICHIER_EQUIPES "equipes.txt"
/* Taille maximum d'une ligne */
#define MAXLIGNE 128
/* Le caractère nul, plus facile à taper comme ça : */
#define NUL '\0'
void Usage(void);
/* ---------------------------------------------------------------------
* Programme principal :
* . Pour chaque équipe du fichier d'entrée :
* .. récupération de l'abréviation du nom
* .. pour chaque coureur de l'équipe :
* ... construction de la structure Coureur et enregistrement
* dans le fichier de sortie (et affichage).
*/
int main(int nbArgs, char *arg[])
{
char *nomEquipes, *nomCoureurs;
char ligne[MAXLIGNE]; /* pour lecture du fichier des équipes */
FILE *fEquipes;
FILE *fCoureurs;
Coureur c;
char Equipe[4];
char *s;
/* Analyse des arguments */
switch (nbArgs)
{
case 1: /* pas d'arguments : valeurs par défaut */
nomEquipes = FICHIER_EQUIPES;
nomCoureurs = FICHIER_COUREURS;
break;
case 2: /* fichier des équipes fourni en argument */
nomEquipes = arg[1];
nomCoureurs = FICHIER_COUREURS;
break;
case 3: /* fichier des équipes et fichier des coureurs
* fournis */
nomEquipes = arg[1];
nomCoureurs = arg[2];
break;
default:
Usage();
}
printf("Création du fichier %s à partir du fichier %s\n",
nomCoureurs, nomEquipes);
fEquipes=fopen("equipes.txt","r");
/*test*/
if (fEquipes==0)
printf("Erreur d'ouverture du fichier");
else
{
fCoureurs=fopen("coureurs.dat","wb");
/*test*/
if (fCoureurs==0)
printf("Erreur d'ouverture du fichier");
else
{
printf("***************ENREGISTREMENT***************\n");
fgets(ligne,MAXLIGNE,fEquipes);
c.temps.h=0;
c.temps.m=0;
c.temps.s=0;
while (!feof(fEquipes))
{
if (ligne[0]!='\t')
{
/*traitement pour une équipe*/
strncpy(Equipe,ligne,3);
Equipe[3]=NUL;
fgets(ligne,MAXLIGNE,fEquipes);
}
else
{
/*traitement pour un coureur*/
/*on mémorise son dossard*/
sscanf(ligne,"%d",&(c.dossard));
/*on mémorise le nom*/
/*on recherche la fin du nom*/
s=strchr(ligne,'(');
/*on insère une marque NUL*/
*(s-1)=NUL;
strcpy(c.nom,ligne+5);
/*on mémorise le pays*/
strncpy(c.pays,s+1,3);
c.pays[3]=NUL;
/*on mémorise l'équipe*/
strcpy(c.equipe,Equipe);
fgets(ligne,MAXLIGNE,fEquipes);
affCoureur(c,stdout);
fwrite(&c,sizeof(Coureur),1,fCoureurs);
}
}
fclose(fCoureurs);
printf("*****************FIN***********\n");
afficheCoureurs("coureurs.dat",stdout);
fclose(fEquipes);
}/*test des ouvertures*/
}
return EXIT_SUCCESS;
}
/*
* Affichage du mode d'emploi et sortie du programme
* Sorties : affichage sur la sortie erreur standard */
void Usage(void)
{
fprintf(stderr, "Usage : \n");
fprintf(stderr, "\ttxt2dat [[EQUIPES=equipes.txt [COUREURS=coureurs.dat]]\n");
exit(EXIT_FAILURE);
}
******************************************************************************
******************************************************************************
COUREURS
******************************************************************************
******************************************************************************
/* ---------------------------------------------------------------------------
* Module de gestion des coureurs.
* Auteur(s) :DESPORTES BONIN
* Groupe TP :1 H
* Création :
* Avancement : TERMINE
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "temps.h"
#define COUREURS_C
#include "coureurs.h"
/* Affichage d'un coureur sur un fichier texte
* Entrées : un coureur, out : fichier texte supposé ouvert en écriture
* Sorties : écriture du coureur sur out
* Exemple d'utilisation : (affichage sur l'écran)
* affCoureur(c, stdout); */
void affCoureur(Coureur c, FILE *out)
{
fprintf(out,"%d %s %s %s ",c.dossard,c.nom,c.equipe,c.pays);
affTemps(c.temps,out);
fprintf(out,"\n");
}
/* Affichage d'un fichier de coureurs sur un fichier texte
* Entrées : nomCoureurs, fichier binaire de coureurs ;
* out : fichier texte supposé ouvert en écriture
* Sorties : écriture du contenu de nomCoureurs sur out
* Exemple d'utilisation : (affichage sur l'écran)
* afficheCoureurs("coureurs.dat", stdout); */
void afficheCoureurs(char nomCoureurs[], FILE *out)
{
FILE* Fc;
Coureur c;
Fc=fopen(nomCoureurs,"rb");
/*A TEST*/
if (Fc==0)
printf("Erreur d'ouverture du fichier");
else
{
/*lecture*/
fread(&c,sizeof(Coureur),1,Fc);
while (!feof(Fc))
{
fprintf(out,"%d %s %s %s ",c.dossard,c.nom,c.equipe,c.pays);
affTemps(c.temps,out);
fprintf(out,"\n");
fread(&c,sizeof(Coureur),1,Fc);
}
fclose(Fc);
}
}
/* Recherche d'un coureur dans un fichier binaire de coureurs
* Entrées : le numéro de dossard du coureur ;
* coureurs : fichier binaire supposé ouvert en lecture ;
* Sorties : rang du coureur dans le fichier ou -1 s'il n'existe pas */
int chercheCoureur(int dossard, FILE *coureurs)
{
int rang=0;
Coureur c;
/*on se positionne au début*/
fseek(coureurs,0,SEEK_SET);
fread(&c,sizeof(Coureur),1,coureurs);
while (!feof(coureurs))
{
if (c.dossard==dossard)
break;
else
{
fread(&c,sizeof(Coureur),1,coureurs);
rang++;
}
}
if (feof(coureurs))
return -1;
else return rang;
}
******************************************************************************
******************************************************************************
TRI
******************************************************************************
******************************************************************************
/* ---------------------------------------------------------------------------
* Programme de tri d'un fichier de coureurs selon le numéro de dossard, tri
* par insertion en chargeant le fichier dans une table. La taille maximum
* de la table est fixée par constante.
* Auteur(s) :
* Groupe TP :
* Création :
* Entrées : le fichier de coureurs donné sur la ligne de commande, défaut
* coureurs.dat (voir module coureurs).
* Sorties : le même fichier trié.
* Avancement :
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "temps.h"
#include "coureurs.h"
void Usage(void);
/* ---------------------------------------------------------------------
* Programme principal :
* . Chargement du fichier à trier dans un table avec insertion dans
* l'ordre du numéro de dossard.
* . Réécriture du fichier trié sur disque
*/
int main(int nbArgs, char *arg[])
{
char *nomCoureurs;
int j,nbcoureur;
FILE* Fc;
Coureur c;
Coureur T[200];
switch (nbArgs)
{
case 1: /* pas d'arguments */
nomCoureurs = FICHIER_COUREURS;
break;
case 2: /* fichier des coureurs fourni en argument */
nomCoureurs = arg[1];
break;
default:
Usage();
}
c.temps.h=0;
c.temps.m=0;
c.temps.s=0;
/* chargement du fichier dans la table avec insertion à la volée */
Fc=fopen(nomCoureurs,"rb");
/*test*/
if (Fc==0)
printf("Erreur d'ouverture du fichier");
else
{
fread(&c,sizeof(Coureur),1,Fc);
j=0;nbcoureur=0;
while (!feof(Fc))
{
/*selon les differents cas*/
/*le tableau est vide*/
if (nbcoureur==0)
{
T[0]=c;nbcoureur++;
}
/*le tableau contient au moins un élément*/
else
{
/*insertion en fin de tableau*/
if (T[nbcoureur-1].dossard < c.dossard)
{ T[nbcoureur]= c;nbcoureur++;
}
/*insertion avec décalage*/
else
{
j=nbcoureur-1;
while ((j>=0) && (T[j].dossard > c.dossard))
{
T[j+1]=T[j];
j--;
}
T[j+1]=c;
nbcoureur++;
}
}
fread(&c,sizeof(Coureur),1,Fc);
}
fclose(Fc);
Fc=fopen(nomCoureurs,"wb");
/*a tester*/
/* Réécriture de la table dans le fichier */
for(j=0;j<nbcoureur;j++)
fwrite(&T[j],sizeof(Coureur),1,Fc);
fclose(Fc);
Fc=fopen(nomCoureurs,"rb");
/* Réaffichage pour trace */
afficheCoureurs("coureurs.dat",stdout);
fclose(Fc);
}
return EXIT_SUCCESS;
}
/*
* Affichage du mode d'emploi et sortie du programme
* Sorties : affichage sur la sortie erreur standard */
void Usage(void)
{
fprintf(stderr, "Usage : \n");
fprintf(stderr, "\ttri [COUREURS=coureurs.dat]\n");
exit(EXIT_FAILURE);
}
******************************************************************************
******************************************************************************
TEMPS
******************************************************************************
******************************************************************************
/* ---------------------------------------------------------------------------
* Module de gestion du temps en heure, minutes, secondes.
* Auteur(s) : Damien Genthial
* Création : 10 juillet 2000
*/
#include <stdio.h>
#include <time.h>
#define TEMPS_C
#include "temps.h"
/* Affichage d'un temps sur un fichier texte
* Entrées : un temps t, out : fichier texte supposé ouvert en écriture
* Sorties : écriture du temps sur out
* Exemple d'utilisation : (affichage sur l'écran)
* affTemps(t, stdout); */
void affTemps(Temps t, FILE *out)
{
fprintf(out, "%02d:%02d:%02d", t.h, t.m, t.s);
}
/* Addition des deux temps t1 et t2 */
Temps addTemps(Temps t1, Temps t2)
{
Temps res = {0, 0, 0};
res.s = t1.s + t2.s;
if (res.s >= 60)
{
res.s = res.s - 60;
res.m = 1;
}
res.m = res.m + t1.m + t2.m;
if (res.m >= 60)
{
res.m = res.m - 60;
res.h = 1;
}
res.h = res.h + t1.h + t2.h;
return res;
}
/* Différence gd - pt (on suppose gd >= pt) */
Temps diffTemps(Temps gd, Temps pt)
{
Temps res = {0, 0, 0};
res.s = gd.s - pt.s;
if (res.s < 0)
{
res.s = res.s + 60;
res.m = -1;
}
res.m = res.m + gd.m - pt.m;
if (res.m < 0)
{
res.m = res.m + 60;
res.h = -1;
}
res.h = res.h + gd.h - pt.h;
return res;
}
/* Comparaison de deux temps, retourne -1 si t1 < t2, 0 si t1 = t2 et
* 1 si t1 > t2 */
int compareTemps(Temps t1, Temps t2)
{
if (t1.h < t2.h)
return -1;
if (t1.h > t2.h)
return 1;
if (t1.m < t2.m)
return -1;
if (t1.m > t2.m)
return 1;
if (t1.s < t2.s)
return -1;
if (t1.s > t2.s)
return 1;
return 0;
}
/* Retourne l'heure système */
Temps Heure(void)
{
struct tm *temps;
time_t timer;
Temps res;
timer = time(NULL);
temps = localtime(&timer);
res.h = temps->tm_hour;
res.m = temps->tm_min;
res.s = temps->tm_sec;
return res;
}
******************************************************************************
******************************************************************************
BONIFICATION
******************************************************************************
******************************************************************************
/* ---------------------------------------------------------------------------
* Programme de bonification (on enlève un temps donné au temps d'un coureur)
* Auteur(s) : DESPORTES BONIN
* Groupe TP :1 H
* Création :
* Entrées : le fichier des coureurs (coureurs.dat par défaut)
* une liste de numéros de coureur et la bonification associée,
* terminée par le numéro 0
* Sorties : le fichier des coureurs mis à jour,
* des traces à l'écran.
* Avancement :
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "temps.h"
#include "coureurs.h"
void Usage(void);
/* ---------------------------------------------------------------------
* Programme principal :
* . Pour chaque numéro de coureur lu au clavier :
* .. recherche du rang dans le fichier
* .. saisie de la bonification (nombre de secondes)
* .. affichage de la valeur avant bonification et de valeur après
* bonification
* .. mise à jour du fichier
*/
int main(int nbArgs, char *arg[])
{
char *nomCoureurs;
FILE *fCoureurs;
int n, rang;
Temps bonif;
Coureur c;
char *r;
switch (nbArgs)
{
case 1: /* pas d'arguments, valeur par défaut (voir coureurs.h) */
nomCoureurs = FICHIER_COUREURS;
break;
case 2: /* fichier des coureurs fourni en argument */
nomCoureurs = arg[1];
break;
default:
Usage();
}
fCoureurs=fopen(nomCoureurs,"rw+b");
if (fCoureurs==0)
printf("Erreur d'ouverture du fichier");
else
{
/*saisie controlée*/
while (1)
{
printf("***************\nEntrez un numéro de dossard (0 pour STOP):");
scanf("%d",&n);
if (n==0)
break;
else
{
printf("\n");
rang=chercheCoureur(n,fCoureurs);
/*pour etre sure d'etre au debut -->*/
fseek(fCoureurs,0,SEEK_SET);
if (rang != -1)
{
/*deplacement de la taille de la structure*/
fseek(fCoureurs,rang*sizeof(Coureur),SEEK_SET);
/*mise en mémoire du coureur*/
fread(&c,sizeof(Coureur),1,fCoureurs);
/*vérification visuel pour l utilisateur*/
printf("DOSSARD [%d] TEMPS:",c.dossard);
affTemps(c.temps,stdout);
fseek(fCoureurs,-1*sizeof(Coureur),SEEK_CUR);
bonif.h=0;
bonif.m=0;
printf("\nENTRZ LA BONIFICATION : ");
scanf("%d",&(bonif.s));
c.temps=diffTemps(c.temps, bonif);
printf("nouveau temps :");
affTemps(c.temps,stdout);
printf("\n");
fwrite(&c,sizeof(Coureur),1,fCoureurs);
affCoureur(c,stdout);
}
/*AIDE A LA SAISIE DU DOSSARD*/
else
{ printf("Vérifier le numéro de dossard!! Voulez vous voir la liste ?(o/n)");
scanf("%s",r);
printf("\n*********\n");
if ((*r=='o') || (*r=='O'))
afficheCoureurs(nomCoureurs,stdout);
}
}
}
fclose(fCoureurs);
}
return EXIT_SUCCESS;
}
/*
* Affichage du mode d'emploi et sortie du programme
* Sorties : affichage sur la sortie erreur standard */
void Usage(void)
{
fprintf(stderr, "Usage : \n");
fprintf(stderr, "\ttri [COUREURS=coureurs.dat]\n");
exit(EXIT_FAILURE);
}
******************************************************************************
******************************************************************************
MAKEFILE
******************************************************************************
******************************************************************************
#Makefile pour les programmes du stage C
#Auteurs :
#Groupe TP :
#Pour compiler les modules
CC=cc -g -ansi -c -Wall
txt2dat: txt2dat.o coureurs.o temps.o
cc -g -o txt2dat txt2dat.o coureurs.o temps.o -Wall
#Module Principale
txt2dat.o: txt2dat.c coureurs.h temps.h
$(CC) txt2dat.c
#Module tri
tri: tri.o coureurs.o temps.o
cc -g -o tri tri.o coureurs.o temps.o -Wall
tri.o: tri.c coureurs.h temps.h
$(CC) tri.c
#Module bonification
bonification: bonification.o coureurs.o temps.o
cc -g -o bonification bonification.o coureurs.o temps.o -Wall
bonification.o: bonification.c coureurs.h temps.h
$(CC) bonification.c
#Module coureurs
coureurs.o: coureurs.c coureurs.h temps.h
$(CC) coureurs.c
#Module temps
temps.o: temps.c temps.h
$(CC) temps.c
#Pour faire le ménage
clean:
rm -f *.o txt2dat bonification tri
#Pour faire le compte rendu
cptrd:
@cat txt2dat.c > CR_TP
@echo -e "\f" >> CR_TP
@cat coureurs.c >> CR_TP
@echo -e "\f" >> CR_TP
@cat tri.c >> CR_TP
@echo -e "\f" >> CR_TP
@cat temps.c >> CR_TP
@echo -e "\f" >> CR_TP
@cat bonification.c >> CR_TP
@echo -e "\f" >> CR_TP
@echo -e "MAKEFILE\n" >> CR_TP
@cat Makefile >> CR_TP
@echo -e "\f" >> CR_TP
@echo -e "TRACE" >> CR_TP
@echo -e "TXT2DAT\n" >> CR_TP
@txt2dat >> CR_TP
@echo -e "\f" >> CR_TP
@echo -e "TRI" >> CR_TP
@tri >> CR_TP
@random >> CR_TP
@echo -e "\f" >> CR_TP
@bonification<test>test.txt >> CR_TP
#Pour ouvrir tout les programmes en arrière plan
open:
nedit txt2dat.c &
nedit coureurs.h &
nedit temps.h &
nedit coureurs.c &
nedit temps.c &
nedit bonification.c &
nedit tri.c &
TRACE
TXT2DAT
Création du fichier coureurs.dat à partir du fichier equipes.txt
***************ENREGISTREMENT***************
151 BROCHARD Laurent A2R FRA 00:00:00
152 ASTARLOZA Mikel A2R ESP 00:00:00
153 BOTCHAROV Alexandre A2R RUS 00:00:00
154 CHAURREAU Inigo A2R ESP 00:00:00
155 FLICKINGER Andy A2R FRA 00:00:00
156 KIRSIPUU Jaan A2R EST 00:00:00
157 ORIOL Christophe A2R FRA 00:00:00
158 PORTAL Nicolas A2R FRA 00:00:00
159 TURPIN Ludovic A2R FRA 00:00:00
201 DUFAUX Laurent ALS SUI 00:00:00
202 BALDATO Fabio ALS ITA 00:00:00
203 BERTOLINI Alessandro ALS ITA 00:00:00
...........
5 HINCAPIE George USP USA 00:00:00
6 LANDIS Floyd USP USA 00:00:00
7 PADRNOS Pavel USP CZE 00:00:00
8 PENA Victor-Hugo USP COL 00:00:00
9 RUBIERA José-Luis USP ESP 00:00:00
*****************FIN***********
151 BROCHARD Laurent A2R FRA 00:00:00
152 ASTARLOZA Mikel A2R ESP 00:00:00
153 BOTCHAROV Alexandre A2R RUS 00:00:00
154 CHAURREAU Inigo A2R ESP 00:00:00
155 FLICKINGER Andy A2R FRA 00:00:00
...........
26 KLÖDEN Andréas TEL GER 00:00:00
27 NARDELLO Daniele TEL ITA 00:00:00
28 VINOKOUROV Alexandre TEL KAZ 00:00:00
29 ZABEL Erik TEL GER 00:00:00
1 ARMSTRONG Lance USP USA 00:00:00
2 HERAS Roberto USP ESP 00:00:00
3 BELTRAN Manuel USP ESP 00:00:00
4 EKIMOV Vjatceslav USP RUS 00:00:00
5 HINCAPIE George USP USA 00:00:00
6 LANDIS Floyd USP USA 00:00:00
7 PADRNOS Pavel USP CZE 00:00:00
8 PENA Victor-Hugo USP COL 00:00:00
9 RUBIERA José-Luis USP ESP 00:00:00
TRI
1 ARMSTRONG Lance USP USA 00:00:00
2 HERAS Roberto USP ESP 00:00:00
3 BELTRAN Manuel USP ESP 00:00:00
4 EKIMOV Vjatceslav USP RUS 00:00:00
5 HINCAPIE George USP USA 00:00:00
6 LANDIS Floyd USP USA 00:00:00
7 PADRNOS Pavel USP CZE 00:00:00
8 PENA Victor-Hugo USP COL 00:00:00
9 RUBIERA José-Luis USP ESP 00:00:00
11 BELOKI Joseba ONE ESP 00:00:00
12 ANDRLE René ONE CZE 00:00:00
13 AZEVEDO José ONE POR 00:00:00
14 GONZALEZ-GALDEANO Alvaro ONE ESP 00:00:00
..............
214 EDALEINE Christophe DEL FRA 00:00:00
215 FINOT Frédéric DEL FRA 00:00:00
216 GOUBERT Stephane DEL FRA 00:00:00
217 KRIVTSOV Yuriy DEL UKR 00:00:00
218 LEFEVRE Laurent DEL FRA 00:00:00
219 NAZON Jean-Patrick DEL FRA 00:00:00
( 1) ARMSTRONG Lance (USP, USA) : 05:46:43
( 2) HERAS Roberto (USP, ESP) : 05:55:57
( 3) BELTRAN Manuel (USP, ESP) : 05:55:53
( 4) EKIMOV Vjatceslav (USP, RUS) : 05:12:46
( 5) HINCAPIE George (USP, USA) : 05:01:09
( 6) LANDIS Floyd (USP, USA) : 05:07:02
( 7) PADRNOS Pavel (USP, CZE) : 05:19:50
( 8) PENA Victor-Hugo (USP, COL) : 05:46:23
( 9) RUBIERA José-Luis (USP, ESP) : 05:06:00
( 11) BELOKI Joseba (ONE, ESP) : 05:16:52
( 12) ANDRLE René (ONE, CZE) : 05:08:11
..............
(207) MIHOLJEVIC Vladimir (ALS, CRO) : 05:55:12
(208) NOE Andrea (ALS, ITA) : 05:04:14
(209) PELLIZOTTI Franco (ALS, ITA) : 05:29:59
(211) HALGAND Patrice (DEL, FRA) : 05:56:33
(212) BOURQUENOUD Pierre (DEL, SUI) : 05:55:30
(213) DUMOULIN Samuel (DEL, FRA) : 05:22:40
(214) EDALEINE Christophe (DEL, FRA) : 05:04:59
(215) FINOT Frédéric (DEL, FRA) : 05:25:13
(216) GOUBERT Stephane (DEL, FRA) : 05:07:41
(217) KRIVTSOV Yuriy (DEL, UKR) : 05:13:44
(218) LEFEVRE Laurent (DEL, FRA) : 05:14:01
(219) NAZON Jean-Patrick (DEL, FRA) : 05:39:06
***************
Entrez un numéro de dossard (0 pour STOP):
DOSSARD [1] TEMPS:05:46:43
ENTRZ LA BONIFICATION : nouveau temps :05:45:43
1 ARMSTRONG Lance USP USA 05:45:43
***************
Entrez un numéro de dossard (0 pour STOP):
DOSSARD [2] TEMPS:05:55:57
ENTRZ LA BONIFICATION : nouveau temps :05:55:27
2 HERAS Roberto USP ESP 05:55:27
***************
Entrez un numéro de dossard (0 pour STOP):
Conclusion
amusez vous
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|