Advertisement
Dragu99

Untitled

Nov 18th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <stdlib.h>
  5. #define MAX_STUD 500
  6. #define N_MAT 2
  7. #define VOTOMIN 1
  8. #define VOTOMAX 10
  9. #define SUFF 6
  10. #define TRUE 1
  11. #define FALSE 0
  12. #define STR_LEN 30
  13. // Studenti
  14. struct
  15. { char cognome[STR_LEN +1];
  16. char nome[STR_LEN +1];
  17. int matricola;
  18. //int anno_di_corso;
  19. float voto[N_MAT]; //elenco dei voti dello studente nelle diverse materie
  20. }stud[MAX_STUD];
  21.  
  22. // Materie
  23. struct
  24. { int codice;
  25. char descr[STR_LEN +1];
  26. char docente[STR_LEN +1];
  27. } materia[N_MAT] =
  28. {{1,"Programmazione","Carli"},{2,"Analisi Matematica","Alberti"}};
  29.  
  30. int main()
  31. {
  32. float media, somma, verificafloat;
  33. char trovato;
  34. int i, j, nStud, matricola, num_insuff, scelta, verifica;
  35. // inizializzazione dimensioni
  36. do
  37. {
  38. printf("Quanti studenti (max%d)? ",MAX_STUD);
  39. verifica=scanf("%d",&nStud);
  40. fflush(stdin);
  41. if (verifica!=1)
  42. {
  43. printf("\nErrore...Inserire un numero adatto. ");
  44. }
  45.  
  46. }while(nStud> MAX_STUD||nStud<= 0);
  47.  
  48. // inserimento studenti e voti
  49. printf("\n\nInserimento STUDENTI e VOTI...\n");
  50. for (i = 0; i < nStud; i++)
  51. {
  52. printf("\nStudente[%d]:\n", i);
  53.  
  54. printf("Matricola: ");
  55. verifica=scanf("%d",&stud[i].matricola);
  56. fflush(stdin);
  57. if (verifica!=1)
  58. {
  59. while(verifica!=1)
  60. {
  61. printf("\nErrore...Numero maticola non adatto. Ne inserisca uno corretto: ");
  62. verifica=scanf("%d",&stud[i].matricola);
  63. fflush(stdin);
  64. }
  65. }
  66.  
  67. for (int a=i;a>0;a--)
  68. {
  69. while (stud[i].matricola==stud[a-1].matricola)
  70. {
  71. printf("Matricola gia\' inserita, ne inserisca una nuova:");
  72. scanf("%d",&stud[i].matricola);
  73. fflush(stdin);
  74. }
  75. }
  76.  
  77. printf("Nome: ");
  78. fgets(stud[i].nome, STR_LEN, stdin);
  79.  
  80. printf("Cognome: ");
  81. fgets(stud[i].cognome, STR_LEN, stdin);
  82.  
  83. printf(" Voti studente: \n");
  84. //Harambe vive nei commenti dei programmi
  85. for(j = 0; j < N_MAT; j++)
  86. {
  87. do
  88. {
  89. printf("\t%s: ",materia[j].descr);
  90. //inserisce i voti per ciascuna materia nel vettore dei voti dello studente i-esimo
  91. verificafloat=scanf("%f",&stud[i].voto[j]);
  92. if (verificafloat!=1)
  93. {
  94. while(verificafloat!=1)
  95. {
  96. printf("\nErrore...Voto non adatto. Ne inserisca uno corretto: ");
  97. verificafloat=scanf("%f",&stud[i].voto[j]);
  98. fflush(stdin);
  99. }
  100. }
  101.  
  102. }while(stud[i].voto[j] > VOTOMAX || stud[i].voto[j] < VOTOMIN);
  103. }
  104. }
  105. // Inserimento matricola da cercare
  106.  
  107.  
  108.  
  109.  
  110. for (i=0;i<MAX_STUD;i++)
  111. {
  112. printf("\nScegli l'opzione che vuoi compiere:\n");
  113. printf("(1) per aggiungere un nuovo studente;\n");
  114. printf("(2) per cercare una matricola;\n");
  115. printf("(3) per cercare una matricola e modificarne il piano di studi;\n");
  116. printf("(4) per far terminare il programma;\n");
  117. printf("\nQuale operazione vuoi eseguire? ");
  118. verifica=scanf("%d",&scelta);
  119. fflush(stdin);
  120. //verifica per minore e maggiore di 4 e lettere
  121. if (verifica!=1||scelta<1||scelta>4)
  122. {
  123. while(scelta<1||scelta>4)
  124. {
  125. printf("Errore...Inserire una tra queste 4 possibilita\': ");
  126. scanf("%d",&scelta);
  127. fflush(stdin);
  128. }
  129. }
  130.  
  131. if (scelta==1)
  132. {
  133. for (i=nStud;i<nStud+1; i++)
  134. {
  135. printf("\nStudente[%d]:\n", i);
  136.  
  137. printf("Matricola: ");
  138. verifica=scanf("%d",&stud[i].matricola);
  139. fflush(stdin);
  140. if (verifica!=1)
  141. {
  142. printf("\nErrore...Numero maticola non adatto. ");
  143. }
  144. for (int a=i;a>0;a--)
  145. {
  146. while (stud[i].matricola==stud[a-1].matricola)
  147. {
  148. printf("Matricola gia\' inserita, ne inserisca una nuova:");
  149. scanf("%d",&stud[i].matricola);
  150. fflush(stdin);
  151. }
  152. }
  153.  
  154. printf("Nome: ");
  155. fgets(stud[i].nome, STR_LEN, stdin);
  156.  
  157. printf("Cognome: ");
  158. fgets(stud[i].cognome, STR_LEN, stdin);
  159.  
  160. printf(" Voti studente: \n");
  161. //Harambe vive nei commenti dei programmi
  162. for(j = 0; j < N_MAT; j++)
  163. {
  164. do
  165. {
  166. printf("\t%s: ",materia[j].descr);
  167. //inserisce i voti per ciascuna materia nel vettore dei voti dello studente i-esimo
  168. scanf("%f",&stud[i].voto[j]);
  169. }while(stud[i].voto[j] > VOTOMAX || stud[i].voto[j] < VOTOMIN);
  170. }
  171. nStud++;
  172. }
  173.  
  174. }
  175. else if (scelta==2)
  176. {
  177. trovato = FALSE;
  178. do
  179. {
  180. printf("\n\nInseriscila matricola dello studente da ricercare: ");
  181. scanf("%d",&matricola);
  182. for (i = 0; i < nStud&& !trovato; i++)
  183. {
  184. if(stud[i].matricola==matricola)
  185. trovato=TRUE;
  186. if(!trovato)
  187. printf("La matricola inserita non esiste.");
  188. }
  189. //aggiungere la matricola(s/n) se dice n rifare il ciclo con un continue,se dice s far aggiungere la atriolaa
  190. /***/
  191. }while(!trovato);
  192. // Ricerca insufficienze e calcolo media
  193. somma = 0;
  194. num_insuff= 0;
  195. printf("Nome:%s",stud[i].nome);
  196. printf("Cognome:%s",stud[i].cognome);
  197. printf("Materie insufficienti:\n");
  198. i--;// indice della matricola cercata
  199. for(j = 0; j < N_MAT; j++)
  200. {
  201. somma += stud[i].voto[j];
  202. if(stud[i].voto[j] < SUFF)// verifica materie insufficienti
  203. {
  204. printf("%s (Prof. %s) %.1f\n",materia[j].descr, materia[j].docente, stud[i].voto[j]);
  205. num_insuff++;
  206. }
  207. }
  208. if(!num_insuff)
  209. printf("Nessuna materia insufficiente");
  210. // calcolo media
  211. media = somma/N_MAT;
  212. printf("\nMedia: %.1f\n",media);
  213.  
  214. }
  215. else if (scelta==3)
  216. {
  217.  
  218. }
  219. else if (scelta==4)
  220. {
  221. printf("\nChiusura del programma...\n\n");
  222. exit(1);
  223. }
  224. }
  225.  
  226.  
  227. return 0;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement