Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <string.h>
- /*define*/
- #define N 20
- /*strutture*/
- struct atleti{
- int pettorali;
- char nazione[4];
- char cognome[16];
- char nome[16];
- struct atleti *next;
- };
- /*funzioni*/
- int menu(struct atleti *);
- struct atleti *carica(int *);
- void cerca(struct atleti *);
- void risultati(int);
- void podio(struct atleti *);
- /*main*/
- int main()
- {
- /*inizializzazioni*/
- struct atleti *p=NULL;
- int n;
- /*corpo del main*/
- while(1){
- switch(menu(p)){
- case 0: return 0;
- case 1:{ p=carica(&n); break;}
- case 2:{ cerca(p); break;}
- case 3:{ podio(p); break;}
- }}
- }
- /*Funzione menu'*/
- int menu(struct atleti *p)
- {
- int opz=-1;
- system("cls"); printf("\n");
- while(opz<0 || opz>3){
- if(p==NULL) printf("\n1. carica database\n");
- else printf("\n1. database gia' caricato\n");
- printf("\n2. cerca atleta\n\n3. vincitore\n\n0. esci\t");
- scanf("%d", &opz); if(opz<0 || opz>3){ system("cls");
- printf("!!!Inserire opzione corretta!\n");}}
- return opz;
- }
- /*Funzioni*/
- struct atleti *carica(int *n)
- {
- FILE *atleta;
- struct atleti *p=NULL; struct atleti *pc;
- struct atleti px;
- int m;
- atleta=fopen("atleti.txt", "r");
- if(atleta==NULL){ printf("\n!!!Errore apertura file atleti.txt\n"); getchar(); return NULL;}
- else{
- fscanf(atleta, "%d\n", &(*n));
- printf("N= %d\n", *n);
- while(1){
- m=fscanf(atleta, "%d%s%s%s\n", &px.pettorali, px.nazione, px.cognome, px.nome);
- if(m<0){ printf("\n!Fine lettura file"); getchar(); getchar(); break;}
- else{
- printf("Attleta: %2d (pettorali), nazionalita': %3s, cognome: %10s, nome: %8s\n", px.pettorali, px.nazione, px.cognome, px.nome);
- if(p==NULL){ p=(struct atleti *)malloc(sizeof(struct atleti)); p->next=NULL; pc=p;}
- else{ p->next=(struct atleti *)malloc(sizeof(struct atleti)); p=p->next; p->next=NULL;}
- p->pettorali=px.pettorali; strcpy(p->nazione, px.nazione); strcpy(p->cognome, px.cognome); strcpy(p->nome, px.nome);
- }
- }
- }
- fclose(atleta);
- return pc;
- }
- void cerca(struct atleti *p)
- {
- char cognome[16];
- char nome[16];
- int n;
- printf("inserire cognome atleta\t");
- scanf("%s", cognome); cognome[15]='\n'; //evita errori di overflow
- printf("inserire nome atleta\t");
- scanf("%s", nome); nome[15]='\n'; //evita errori di overflow
- while(p!=NULL && p!=-1){
- printf("%s %s", cognome, p->cognome);
- if(strcmp(cognome, p->cognome)==0){
- if(strcmp(nome, p->nome)==0){printf("%s %s", nome, p->nome);
- n=p->pettorali; risultati(n); p=-1;
- }
- else p=p->next;}
- else p=p->next;
- if(p==NULL){ printf("\nErrore, attleta non trovato"); getchar(); getchar();}
- }
- }
- void risultati(int n)
- {
- int i;
- float j;
- char v;
- FILE *salto;
- salto=fopen("salti.txt", "w");
- if(salto==NULL){ printf("\n!!!Errore apertura file salti.txt\n"); getchar();}
- printf("\nAttleta %d\n", n);
- for(i=0; i<3; i++){
- printf("\nInserire, in centimetri, il salto numero %d\t", i);
- scanf("%f", &j); getchar();
- printf("\nIl salto e' valido? V o N\t");
- scanf("%c", &v);
- fprintf(salto, "%d %c ", n, v);
- if(v=='V') fprintf(salto, "%.2f\n", j);
- else fprintf(salto, "\n");}
- fclose(salto);
- }
- void podio(struct atleti *p)
- {
- FILE *salto;
- char v; char vv=0; char vvv=0;
- float j; float jj=0.0;
- int k, kk, n;
- salto=fopen("salti.txt", "r");
- if(salto==NULL){ printf("\n!!!Errore apertura file salti.txt\n"); getchar();getchar();}
- else{
- while(1){
- n=fscanf(salto, "%d %c ", &k, &v);
- if(n<0){ printf("\nfine lettura file"); getchar(); break;}
- else{
- if(v=='V') fscanf(salto, "%f", &j);
- if(j<jj){ kk=k; jj=j;
- }
- }
- }
- printf("il vincitore รจ %d, con distanza %.2f cm.", k, j); getchar();
- }
- fclose(salto);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement