Guest User

Untitled

a guest
Jun 24th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.23 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define Lung 24 //lunghezza complessiva cognome e nome
  4. #define Dim 20 //numero massimo studenti
  5.  
  6. typedef struct{
  7. int anno;
  8. int mese;
  9. int giorno;
  10. } data; //data: identificatore di tipo
  11. //
  12. typedef struct{
  13. char nominativo[Lung] ; //identifica cognome e nome:
  14. data dataN; //data di nascita
  15. char sesso; // 'm' o 'f '
  16. }studente; //studente: identificatore di tipo
  17.  
  18. void leggi(studente a[],int m);
  19. void visualizza(studente a[],int m);
  20. void salvasufile(FILE*out,studente a[],int m);
  21. void leggidaanagrafe(studente a[],int m);
  22. void leggifile(FILE*out);
  23. void ordina(studente a[],int m);
  24. void stampa(studente a[],int m);
  25.  
  26.  
  27. int main()
  28. {
  29. studente anagrafe[Dim];
  30. int n;
  31. FILE*fp;
  32.  
  33. printf("quanti studenti vuoi inserire? ");
  34. scanf("%d",&n);
  35.  
  36. leggi(anagrafe,n);
  37.  
  38. visualizza(anagrafe,n);
  39.  
  40. fp=fopen("studenti.txt","w");
  41. salvasufile(fp,anagrafe,n);
  42. fclose(fp);
  43.  
  44. leggidaanagrafe(anagrafe,n);
  45.  
  46. fp=fopen("studenti.txt","r");
  47. leggifile(fp);
  48. fclose(fp);
  49.  
  50. ordina(anagrafe,n);
  51.  
  52. stampa(anagrafe,n);
  53.  
  54. system("PAUSE");
  55. return 0;
  56. }
  57.  
  58.  
  59. void leggi(studente a[],int m)
  60. {
  61. int i;
  62. printf("\n\nINSERISCI GLI STUDENTI\n\n");
  63. getchar();
  64. for(i=0;i<m;i++)
  65. {
  66. printf("inserisci nominativo (cognome e nome)\n");
  67. gets(a[i].nominativo);
  68. printf("inserisci data di nascita\ngiorno\n");
  69. scanf("%d",&a[i].dataN.giorno);
  70. printf("inserisci mese\n");
  71. scanf("%d",&a[i].dataN.mese);
  72. printf("inserisci anno\n");
  73. scanf("%d",&a[i].dataN.anno);
  74. printf("inserisci sesso (m o f)\n");
  75. scanf("%s",&a[i].sesso);
  76. printf("\n");
  77. getchar();
  78. }
  79. }
  80.  
  81.  
  82. void visualizza(studente a[],int m)
  83. {
  84. int i;
  85. printf("\n******STUDENTI INSERITI******\n\n");
  86. for(i=0;i<m;i++)
  87. {
  88. printf("nominativo: %s\n",a[i].nominativo);
  89. printf("data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
  90. printf("sesso: %c\n",a[i].sesso);
  91. printf("\n");
  92. }
  93. }
  94.  
  95. void salvasufile(FILE*out,studente a[],int m)
  96. {
  97. if(out==NULL)
  98. {
  99. printf("errore nell'apertura del file in scrittura\n");
  100. }
  101. else
  102. {
  103. printf("\nSALVATAGGIO SU FILE IN CORSO....\n\n");
  104. int i;
  105. for(i=0;i<m;i++)
  106. {
  107. fprintf(out,"nominativo: %s\n",a[i].nominativo);
  108. fprintf(out,"data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
  109. fprintf(out,"sesso: %c\n",a[i].sesso);
  110. fprintf(out,"\n");
  111. }
  112. }
  113. }
  114.  
  115. void leggidaanagrafe(studente a[],int m)
  116. {
  117. printf("\n******VETTORE ANAGRAFE******\n\n");
  118. int i;
  119. for(i=0;i<m;i++)
  120. {
  121. printf("nominativo: %s\n",a[i].nominativo);
  122. printf("data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
  123. printf("sesso: %c\n",a[i].sesso);
  124. printf("\n");
  125. }
  126. }
  127.  
  128.  
  129.  
  130. void leggifile(FILE*out)
  131. {
  132. if(out==NULL)
  133. {
  134. printf("errore nell'apertura del file in scrittura\n");
  135. }
  136. else
  137. {
  138. printf("\n******CONTENUTO FILE******\n\n");
  139. char c;
  140. c=fgetc(out);
  141. while(!feof(out))
  142. {
  143. putchar(c);
  144. c=fgetc(out);
  145. }
  146. }
  147. }
  148.  
  149.  
  150. void ordina(studente a[],int m)
  151. {
  152. studente w;
  153. int i,j,imin;
  154. for(i=0;i<m-1;i++)
  155. {
  156. imin=i;
  157. for(j=i+1;j<m;j++)
  158. {
  159. if(strcmp(a[imin].nominativo,a[j].nominativo)>0)
  160. {
  161. imin=j;
  162. w=a[i];
  163. a[i]=a[imin];
  164. a[imin]=w;
  165. }
  166. }
  167. }
  168. }
  169.  
  170.  
  171. void stampa(studente a[],int m)
  172. {
  173. printf("\n******PRIMO STUDENTE IN ORDINE ALFABETICO******\n\n");
  174. int i;
  175. i=0;
  176. printf("nominativo: %s\n",a[i].nominativo);
  177. printf("data di nascita: %d/%d/%d\n",a[i].dataN.giorno,a[i].dataN.mese,a[i].dataN.anno);
  178. printf("sesso: %c\n",a[i].sesso);
  179. printf("\n");
  180. }
Add Comment
Please, Sign In to add comment