Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define Lung 24 //lunghezza complessiva cognome e nome
- #define Dim 20 //numero massimo studenti
- typedef struct{
- int anno;
- int mese;
- int giorno;
- } data; //data: identificatore di tipo
- //
- typedef struct{
- char nominativo[Lung] ; //identifica cognome e nome:
- data dataN; //data di nascita
- char sesso; // 'm' o 'f '
- }studente; //studente: identificatore di tipo
- void leggi(studente a[],int m);
- void visualizza(studente a[],int m);
- void salvasufile(FILE*out,studente a[],int m);
- void leggidaanagrafe(studente a[],int m);
- void leggifile(FILE*out);
- void ordina(studente a[],int m);
- void stampa(studente a[],int m);
- int main()
- {
- studente anagrafe[Dim];
- int n;
- FILE*fp;
- printf("quanti studenti vuoi inserire? ");
- scanf("%d",&n);
- leggi(anagrafe,n);
- visualizza(anagrafe,n);
- fp=fopen("studenti.txt","w");
- salvasufile(fp,anagrafe,n);
- fclose(fp);
- leggidaanagrafe(anagrafe,n);
- fp=fopen("studenti.txt","r");
- leggifile(fp);
- fclose(fp);
- ordina(anagrafe,n);
- stampa(anagrafe,n);
- system("PAUSE");
- return 0;
- }
- void leggi(studente a[],int m)
- {
- int i;
- printf("\n\nINSERISCI GLI STUDENTI\n\n");
- getchar();
- for(i=0;i<m;i++)
- {
- printf("inserisci nominativo (cognome e nome)\n");
- gets(a[i].nominativo);
- printf("inserisci data di nascita\ngiorno\n");
- scanf("%d",&a[i].dataN.giorno);
- printf("inserisci mese\n");
- scanf("%d",&a[i].dataN.mese);
- printf("inserisci anno\n");
- scanf("%d",&a[i].dataN.anno);
- printf("inserisci sesso (m o f)\n");
- scanf("%s",&a[i].sesso);
- printf("\n");
- getchar();
- }
- }
- void visualizza(studente a[],int m)
- {
- int i;
- printf("\n******STUDENTI INSERITI******\n\n");
- for(i=0;i<m;i++)
- {
- printf("nominativo: %s\n",a[i].nominativo);
- printf("data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
- printf("sesso: %c\n",a[i].sesso);
- printf("\n");
- }
- }
- void salvasufile(FILE*out,studente a[],int m)
- {
- if(out==NULL)
- {
- printf("errore nell'apertura del file in scrittura\n");
- }
- else
- {
- printf("\nSALVATAGGIO SU FILE IN CORSO....\n\n");
- int i;
- for(i=0;i<m;i++)
- {
- fprintf(out,"nominativo: %s\n",a[i].nominativo);
- fprintf(out,"data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
- fprintf(out,"sesso: %c\n",a[i].sesso);
- fprintf(out,"\n");
- }
- }
- }
- void leggidaanagrafe(studente a[],int m)
- {
- printf("\n******VETTORE ANAGRAFE******\n\n");
- int i;
- for(i=0;i<m;i++)
- {
- printf("nominativo: %s\n",a[i].nominativo);
- printf("data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
- printf("sesso: %c\n",a[i].sesso);
- printf("\n");
- }
- }
- void leggifile(FILE*out)
- {
- if(out==NULL)
- {
- printf("errore nell'apertura del file in scrittura\n");
- }
- else
- {
- printf("\n******CONTENUTO FILE******\n\n");
- char c;
- c=fgetc(out);
- while(!feof(out))
- {
- putchar(c);
- c=fgetc(out);
- }
- }
- }
- void ordina(studente a[],int m)
- {
- studente w;
- int i,j,imin;
- for(i=0;i<m-1;i++)
- {
- imin=i;
- for(j=i+1;j<m;j++)
- {
- if(strcmp(a[imin].nominativo,a[j].nominativo)>0)
- {
- imin=j;
- w=a[i];
- a[i]=a[imin];
- a[imin]=w;
- }
- }
- }
- }
- void stampa(studente a[],int m)
- {
- printf("\n******PRIMO STUDENTE IN ORDINE ALFABETICO******\n\n");
- int i;
- i=0;
- printf("nominativo: %s\n",a[i].nominativo);
- printf("data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
- printf("sesso: %c\n",a[i].sesso);
- printf("\n");
- }
Add Comment
Please, Sign In to add comment