Advertisement
informaticage

Bri Bro software engineering parte 1

Mar 17th, 2021
867
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.48 KB | None | 0 0
  1. #include <iostream>
  2. #define LIMITE_PRELIEVI 10000
  3. #define LIMITE_VERSAMENTI 10000
  4.  
  5. void prelievo();
  6. void versamento();
  7. void statistiche();
  8. void descrivi_menu();
  9.  
  10. // DRY!! DONT REPEAT YOURSELF
  11.  
  12. double prelievi[LIMITE_PRELIEVI], versamenti[LIMITE_VERSAMENTI];
  13. int prelievi_effettuati = 0, versamenti_effettuati = 0;
  14. double saldo = 0;
  15.  
  16. int main() {
  17.   // finchè non voglio uscire
  18.   descrivi_menu();
  19.  
  20.   int scelta;
  21.   do {
  22.     std::cout << "Seleziona operazione: ";
  23.     std::cin >> scelta;
  24.  
  25.     switch (scelta) {
  26.     case 1:
  27.       prelievo();
  28.       break;
  29.  
  30.     case 2:
  31.       versamento();
  32.       break;
  33.  
  34.     case 3:
  35.       statistiche();
  36.       break;
  37.  
  38.     case 4:
  39.       std::cout << "cY@ Nerds! :D" << std::endl;
  40.       break;
  41.  
  42.     default:
  43.       std::cout << "Scelta non valida" << std::endl;
  44.     }
  45.  
  46.     std::cout << std::endl;
  47.   } while (scelta != 4);
  48.  
  49.   std::cout << "";
  50.   return 0;
  51. }
  52.  
  53. void descrivi_menu() {
  54.   std::cout << "1. Prelievo" << std::endl
  55.             << "2. Versamento" << std::endl
  56.             << "3. Statistiche" << std::endl
  57.             << "4. Esci" << std::endl;
  58. }
  59.  
  60. void prelievo() {
  61.   std::cout << "Prelievo: ";
  62.   double importo;
  63.   std::cin >> importo;
  64.  
  65.   if (prelievi_effettuati < LIMITE_PRELIEVI) {
  66.     if (importo <= 0) {
  67.       std::cout << "Non puoi prelevare un numero negativo o nullo di euro."
  68.                 << std::endl;
  69.     } else {
  70.       if (saldo >= importo) {
  71.         // Ho superato il numero di prelievi
  72.         saldo -= importo;
  73.         prelievi[prelievi_effettuati] = importo;
  74.         std::cout << "Hai prelevato " << importo << std::endl
  75.                   << "Ti rimangono " << saldo << " Euro." << std::endl;
  76.       } else {
  77.         // Ho superato il limite di denaro prelevabile
  78.         std::cout << "Puoi prelevare massimo " << saldo << " Euro."
  79.                   << std::endl;
  80.       }
  81.     }
  82.   } else {
  83.     // Avviso del superamento del limite di prelievi
  84.     std::cout << "Hai superato il numero di prelievi massimi." << std::endl;
  85.   }
  86.  
  87.   // .. cose da prelievo
  88.   prelievi_effettuati++;
  89. }
  90.  
  91. void versamento() {
  92.   std::cout << "Versamento: ";
  93.   double importo;
  94.   std::cin >> importo;
  95.  
  96.   if (versamenti_effettuati < LIMITE_VERSAMENTI) {
  97.     if (importo <= 0) {
  98.       std::cout << "Non puoi versare un numero negativo o nullo di euro."
  99.                 << std::endl;
  100.     } else {
  101.       // Ho superato il numero di versamenti
  102.       saldo += importo;
  103.       versamenti[versamenti_effettuati] = importo;
  104.       std::cout << "Hai versato " << importo << std::endl
  105.                 << "Hai accumulato " << saldo << " Euro." << std::endl;
  106.     }
  107.   }
  108.  
  109.   versamenti_effettuati++;
  110. }
  111.  
  112. void statistiche() {
  113.   double massimo = 0, somma = 0;
  114.  
  115.   // Controlliamo massimo e sommiamo tutti i prelievi
  116.   for (int i = 0; i < prelievi_effettuati; i++) {
  117.     // Logica che effettua l'aggiornamento del massimo
  118.     if (prelievi[i] > massimo) {
  119.       massimo = prelievi[i];
  120.     }
  121.  
  122.     // Logica che somma tutti i prelievi
  123.     somma += prelievi[i];
  124.   }
  125.  
  126.   for (int i = 0; i < versamenti_effettuati; i++) {
  127.     // Logica che somma tutti i versamenti
  128.     somma += versamenti[i];
  129.   }
  130.   // Esempio esplicativo:
  131.   // prelievo 5, verso 10, prelievo 20 => 5 + 10 + 20 / 3 => operazione media
  132.   double media_transazioni =
  133.       somma / (prelievi_effettuati + versamenti_effettuati);
  134.  
  135.   std::cout << "Importo massimo prelevato: " << massimo << std::endl
  136.        << "Valore medio delle transazioni: " << media_transazioni << std::endl;
  137. }
  138.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement