Buonasera a tutti quello che vedete qui sotto è il programma che ho fatto, ma manca la parte principale... La partenza degli atleti e l'arrivo e ovviamente il tempo che si deve visualizzare al video e salvare in un archivio ( file di testo ) conservando così la classifica di tutti gli arrivi
Testo del problema:
Simulare una gara di biciclette a cronometro, per esempio la prima tappa del giro d'Italia: memorizzare in una struct atleta,società, numero di maglia, visualizzare e stampare su file di testo in ordine alfabetico rispetto al nome dell'atleta. Avviare inizio gara digitando numero di maglia al momento della partenza dell'atleta, digitare lo stesso numero di maglia all'arrivo memorizzando il tempo trascorso da inizio percorso a fine percorso. Visualizzare e stampare u file di testo gli atleti in ordine per tempo ( ore/minuti/secondi/centesimi di secondo ) hh:mm:ss:c.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#define max 10
typedef struct Atleta{
char Nome[30];
char Maglia[4];
char Societa[30];
long inizio,fine;
char Tempo[15];
} ele;
typedef ele* Pele;
int controllo;
char Menu(void);
void Inserimento(Pele *, int *);
void Modifica(void);
int Ricerca(void);
void InsertSort(Pele *V, int *v, ele x);
void Sistema(char *s1, char *s2);
void ApriArchivio(Pele *, int *);
void SalvaArchivio(Pele , int );
void Visualizza_Atleti(Pele Corsa, int v);
int main(void){
Pele Corsa=(Pele)malloc(sizeof(ele)*max);
int v;
int scelta;
int ciclisti=0;
controllo=0;
if(Corsa==NULL) return 0;
ApriArchivio (&Corsa, &ciclisti);
do{
scelta=Menu();
if(scelta=='1'){
system("cls");
Inserimento(&Corsa, &ciclisti);
}
if(scelta=='2'){
system("cls");
}
if(scelta=='3'){
Visualizza_Atleti(Corsa, ciclisti);
}
if(scelta=='4'){
return;
}
}
while(scelta=='0');
if(controllo)SalvaArchivio(Corsa, ciclisti);
free(Corsa);
getch();
return 1;
}
char Menu(void){
char scelta;
do{
printf("\n1 - Inserisci atleta");
printf("\n2 - Corsa");
printf("\n3 - Visualizza Archivio");
printf("\n4 - Fine");
printf("\nScelta: ");
scelta=getchar();
fflush(stdin);
} while((scelta!='1')&&(scelta!='2')&&(scelta!='3')&&(scelta!='4'));
return scelta;
}
void Inserimento(Pele *V, int *v){
ele x;
if ((*v)==max) {
printf ("\nArchivio pieno");
getchar();
return;
}
printf("\nInserisci nome atleta: "); gets(x.Nome); fflush(stdin);
printf("\nInserisci numero di maglia: "); gets(x.Maglia); fflush(stdin);
printf("\nInserisci nome societa: "); gets(x.Societa); fflush(stdin);
InsertSort(&(*V), &(*v), x);
}
void InsertSort (Pele *V, int *v, ele x) {
char s1[255],s2[255];
controllo = 1;
int f = *v - 1;
Sistema (x.Nome,s1);
while (f>=0) {
Sistema ((*V)[f].Nome,s2);
if(strcmp(s2,s1)>0) {
(*V)[f+1]=(*V)[f];
f--;
}
else {
(*V)[f+1]=x;
(*v)++;
return;
}
}
(*V)[0]=x;
(*v)++;
return;
}
void Sistema(char *s1, char *s2){
char ch;
while(*s1){
ch=*s1;
if((ch>='a')&&(ch<='z'))ch -= 'a'-'A';
if(((ch>='A')&&(ch<='Z'))||((ch>='0')&&(ch<='9'))){*s2=ch;s2++;}
s1++;
}
*s2=0;
}
void ApriArchivio (Pele *V, int *v) {
FILE *F;
F = fopen ("Corsa.Arc", "r");
if (F==NULL) return;
ele x;
while (!feof(F)) {
if (fread(&x,sizeof(ele),1,F)) {
(*V)[*v]=x;
(*v)++;
}
}
fclose(F);
controllo=0;
return;
}
void SalvaArchivio (Pele V, int v){
FILE *F;
F = fopen ("Corsa.Arc","w");
if (F==NULL) return;
int i=0;
ele x;
while (i<v) {
x = V;
fwrite (&x, sizeof(ele),1,F);
i++;
}
fclose(F);
controllo=0;
return;
}
void Visualizza_Atleti(Pele Corsa, int v){
int cont; system("cls");
if (!v) {
printf ("Archivio vuoto");
getchar();
}
for(cont=0;cont<v;cont++){
printf("\nNome atleta: %s",Corsa[cont].Nome);
printf("\nNumero di maglia: %s",Corsa[cont].Maglia);
printf("\nSocieta dell'atleta: %s",Corsa[cont].Societa);
}
getch();
}