fork download
  1. /* Realizzare un programma basato sul record 'studente', composto dai campi:
  2. - 'nome' di tipo 'string';
  3. - 'cognome' di tipo 'string';
  4. - 'voto' di tipo 'int';
  5.  
  6. Definire un vettore ("allievo") di tipo 'studente' che e' un array
  7. di '5' studenti e '8' verifiche.
  8.  
  9. * Azzerare tutti i campi 'voto' dell'array creato.
  10. * Fare un loop (ciclo infinito) che termina se si preme '0', con questo menu:
  11. - '1' inserisci i voti di una verifica;
  12. - '2' calcola la media di una verifica;
  13. - '3' calcola la media di uno studente;
  14. - '0' per uscire;
  15.  
  16. + se premiamo '0' il ciclo termina (gia' detto);
  17. + se premiamo '1' viene chiesta che numero di verifica considerare e poi
  18.   chiede il voto per ciascuno studente;
  19. + se premiamo '2' viene chiesta che numero di verifica considerare e poi
  20.   viene calcolata la media. Se non sono stati immessi voti (voto=0) dice
  21.   "Nessun voto presente per la verifica scelta";
  22. + se premiamo '3' viene chiesta che numero di allievo considerare e poi
  23.   viene calcolata la media contando solo le verifiche inserite (se non sono
  24.   stati immessi voti (voto=0) non tiene conto di quei valori) e comunica
  25.   quante verifiche sono state considerate per arrivare a quella media. Se non
  26.   ci sono voti, lo comunica con "Nessun voto attribuito all'allievo"
  27.   "Nessun voto presente per la verifica scelta";
  28.  
  29. Se si finisce, aggiungere le opzioni (sempre numeriche) per il calcolo del
  30. massimo e del minimo voto (maggiore di '0') per ciascna verifica/Alunno
  31.  
  32. Se si vuol far altro, migliorare il software affidandosi a nome e cognome di
  33. ciascun allievo
  34. */
  35.  
  36. #include <cstdlib>
  37. #include <iostream>
  38. #include <string>
  39.  
  40. using namespace std;
  41.  
  42. #define STUDENTI 5 // numero di allievi
  43. #define VERIFICHE 8 // numero di prove
  44.  
  45. int main(){
  46. struct studente{
  47. string nome;
  48. string cognome;
  49. int voto;
  50. };
  51.  
  52. studente allievo[STUDENTI][VERIFICHE];
  53. int i, j, k, n, minni, macsi, somma, scelta, m;
  54.  
  55. cout<<"\n Programma avviato";
  56.  
  57. //Azzera tutti i voti della matrice allievo
  58. for(i=0;i<STUDENTI;i++){
  59. for(j=0;j<=VERIFICHE;j++)
  60. allievo[i][j].voto=0;
  61. }
  62.  
  63. cout<<"\nVoti azzerati";
  64.  
  65. do{
  66. cout<<"\nEntrato nel ciclo do-while";
  67. system("CLS"); // clears screen
  68. cout << "Premi:" << endl;
  69. cout << "'1' per inserire i voti di una verifica" << endl;
  70. cout << "'2' per calcolare la media di una verifica" << endl;
  71. cout << "'3' per calcolare la media di uno studente" << endl;
  72. cout << "'4' per calcolare il minimo voto di uno verifica" << endl;
  73. cout << "'5' per calcolare la minimo voto di una studente" << endl;
  74. cout << "'6' per calcolare il massimo voto di uno verifica" << endl;
  75. cout << "'7' per calcolare il massimo voto di una studente" << endl;
  76. cout << "'8' per visualizzare il nome dell'allievo a cui appartiene il minimo/massimo voto" << endl;
  77. cout << "'9' per inserire i nomi degli allievi di una classe" << endl;
  78. cout << "'0' per uscire" << endl;
  79.  
  80. cin >> scelta;
  81.  
  82. switch(scelta){
  83. case 1:
  84. cout << "Di che numero di verifica vuoi inserire i voti (1 - " << VERIFICHE << ")?: ";
  85. cin >>i; // verifica di cui voglio assegnare i voti
  86. i = i-1;
  87. for(j=0;j<STUDENTI;j++){
  88. cout << "Inserisci il voto dell'allievo " <<j+1<< " ('0' se assente): ";
  89. cin >> allievo[j][i].voto;
  90. }
  91. break;
  92.  
  93. case 2:
  94. cout << "Di che verifica vuoi calcolare la media (1 - " << VERIFICHE << ")? ";
  95. cin >> i;
  96. i = i-1;
  97.  
  98. somma = 0; // variabile di accumulo
  99. k=0; // allievi che han svolto la verifica
  100. for(j=0;j<STUDENTI;j++){
  101. if(allievo[j][i].voto > 0){
  102. k++; // considero l'allievo
  103. somma = somma + allievo[j][i].voto;
  104. }
  105. }
  106. cout << "\nLa media dei voti della verifica "<<(i+1)<<" vale: "<< (float) somma/k << endl;
  107. break;
  108.  
  109. case 3:
  110. cout << "Di che allievo vuoi calcolare la media (1 - " << STUDENTI << ")?: ";
  111. cin >> i;
  112. i = i-1;
  113.  
  114. somma = 0; // variabile di accumulo
  115. k=0; // VERIFICHE che l'allievo ha svolto
  116. for(j=0;j<VERIFICHE;j++){
  117. if(allievo[i][j].voto > 0){
  118. k++; // considero l'allievo
  119. somma = somma + allievo[i][j].voto;
  120. }
  121. }
  122.  
  123. cout << "\n La media dei voti dell'allievo " <<(i+1)<< " nelle verifiche svolte vale: " << (float) somma/k << endl;
  124. break;
  125.  
  126. case 4:
  127. cout << "Di che verifica vuoi calcolare il minimo (1 - " << VERIFICHE << ")? ";
  128. cin >> i;
  129. i = i-1;
  130.  
  131. minni = allievo[i][0].voto; // OKKIO!!! Il primo allievo deve aver svolto la verifica
  132. for(j=0;j<STUDENTI;j++){
  133. if((allievo[j][i].voto > 0) && (allievo[j][i].voto < minni)) // se voto presente e minore del minimo
  134. minni = allievo[j][i].voto; // l'attuale e' il nuovo minimo
  135. }
  136.  
  137. cout << "Il minimo voto nella verifica " <<(i+1)<<" vale: " << minni << endl;
  138. break;
  139.  
  140. case 5:
  141. cout << "Di che allievo vuoi calcolare il minimo (1 - " << STUDENTI << ")?: ";
  142. cin >> i;
  143. i = i-1;
  144.  
  145. minni = allievo[i][0].voto; // OKKIO!!! La prima verifica deve aver un voto
  146. for(j=0;j<VERIFICHE;j++){
  147. if((allievo[i][j].voto > 0) && (allievo[i][j].voto < minni)) // se voto presente e minore del minimo
  148. minni = allievo[i][j].voto; // l'attuale e' il nuovo minimo
  149. }
  150.  
  151. cout << "\n Il minimo voto dell'allievo " << i+1 << " nelle verifiche svolte vale: " << minni << endl;
  152. break;
  153.  
  154. case 6:
  155. cout << "Di che verifica vuoi calcolare il massimo (1 - " << VERIFICHE << ")? ";
  156. cin >> i;
  157. i = i-1;
  158.  
  159. macsi = allievo[i][0].voto; // OKKIO!!! Il primo allievo deve aver svolto la verifica
  160. for(j=0;j<STUDENTI;j++){
  161. if(allievo[j][i].voto > macsi) // se voto maggiore del massimo
  162. macsi = allievo[j][i].voto; // l'attuale e' il nuovo minimo
  163. }
  164. cout << "Il massimo voto nella verifica " << i+1 << " vale: " << macsi << endl;
  165. break;
  166.  
  167. case 7:
  168. cout << "Di che allievo vuoi calcolare il massimo (1 - " << STUDENTI << ")? ";
  169. cin >> i;
  170. i = i-1;
  171.  
  172. macsi = allievo[0][i].voto; // OKKIO!!! La prima verifica deve aver un voto
  173. for(j=0;j<STUDENTI;j++){
  174. if(allievo[i][j].voto > macsi) // se voto presente e minore del minimo
  175. macsi = allievo[i][j].voto; // l'attuale e' il nuovo minimo
  176. }
  177. cout << "Il massimo voto dell'allievo " << i+1 << " nelle verifiche svolte e' " << macsi << endl;
  178. break;
  179.  
  180. case 8:
  181. cout<<"\nVuoi calcolare a chi appartiene il minimo o il massimo voto di una verifica? (MIN=0, MAX=1): ";
  182. cin>>m; //<<-- SE COMMENTO QUESTA RIGA IL PROGRAMMA SI AVVIA ALTRIMENTI MI RESTA LO SCHERMO VUOTO
  183.  
  184. /*cout<<"\n mm = "<<mm;
  185.  
  186.   cout << "Di che verifica (1 - " << VERIFICHE << ")?: ";
  187.   cin >> i;
  188.   i = i-1;
  189.  
  190.   cout<<"\n Verifica scelta: "<<i;
  191.  
  192.   if(mm == 0){
  193.   minni = allievo[0][i].voto; // OKKIO!!! Il primo allievo deve aver svolto la verifica
  194.   for(j=0;j<STUDENTI;j++){
  195.   if((allievo[j][i].voto > 0) && (allievo[j][i].voto < minni)){ // se voto presente e minore del minimo
  196.   minni = allievo[j][i].voto; // l'attuale e' il nuovo minimo
  197.   k = j;
  198.   cout<<"\nNuovo MINIMO: "<<minni<<" di allievo: "<<allievo[k][i].voto;
  199.   }
  200.   }
  201.   cout << "Il minimo voto nella verifica " << i+1 << " vale: "<< minni << " e appartiene a " << allievo[k][i].nome << endl;
  202.   }
  203.  
  204.   if(mm == 1){
  205.   macsi = allievo[0][i].voto; // OKKIO!!! Il primo allievo deve aver svolto la verifica
  206.   for(j=0;j<STUDENTI;j++){
  207.   if(allievo[j][i].voto > macsi){ // se voto maggiore del massimo
  208.   macsi = allievo[j][i].voto; // l'attuale e' il nuovo minimo
  209.   k = j;
  210.   cout<<"\nNuovo MASSIMO: "<<minni<<" di allievo: "<<allievo[k][i].voto;
  211.   }
  212.   }
  213.   cout << "Il massimo voto nella verifica " << i+1 << " vale: " << k << " e appartiene a " << allievo[k][i].nome << endl;
  214.   }*/
  215. break;
  216.  
  217. case 9:
  218.  
  219. for(int x=0;x<VERIFICHE;x++){
  220. for(int y=0;y<STUDENTI;y++){
  221. cout << "Qual e' il nome dell'allievo " << y+1 << "?: ";
  222. cin >> allievo[y][x].nome;
  223. }
  224. }
  225.  
  226. cout<<"\n Nomi studenti:";
  227. for(int y=0;y<VERIFICHE;y++){
  228. for(int x=0;x<STUDENTI;x++){
  229. cout<<"\n Studente "<<x+1<<": "<<allievo[x][y].nome;
  230. }
  231. }
  232. cout << "Inseriti i nominativi richiesti" << endl;
  233. break;
  234.  
  235. default:
  236. break;
  237. }
  238. system("PAUSE");
  239. }while(scelta!=0);
  240. return 0;
  241. }
Runtime error #stdin #stdout #stderr 0s 3480KB
stdin
Standard input is empty
stdout
 Programma avviato
Voti azzerati
Entrato nel ciclo do-whilePremi:
'1' per inserire i voti di una verifica
'2' per calcolare la media di una verifica
'3' per calcolare la media di uno studente
'4' per calcolare il minimo voto di uno verifica
'5' per calcolare la minimo voto di una studente
'6' per calcolare il massimo voto di uno verifica
'7' per calcolare il massimo voto di una studente
'8' per visualizzare il nome dell'allievo a cui appartiene il minimo/massimo voto
'9' per inserire i nomi degli allievi di una classe
'0' per uscire
stderr
sh: 1: CLS: not found
sh: 1: PAUSE: not found