fcamuso

Corso C++ 23 - lezione 31 (funzioni seconda parte)

May 24th, 2026
84
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #pragma region IntelliSense_Fix
  2. #ifdef __INTELLISENSE__
  3. #include <print>
  4. #include <string>
  5. #include <chrono>
  6. #endif
  7. #pragma endregion
  8. import std;
  9.  
  10. int valuta_fattore(std::string_view expr = "");
  11.  
  12. int  valore_assoluto(int n);
  13. int stima_ampiezza();
  14. void riga_divisoria(char simbolo, int lunghezza=stima_ampiezza());
  15.  
  16.  
  17. //Definizione di una funzione
  18. //  Intestazione
  19. //  {  
  20. //     dichiarazione/definizione di VARIABILI LOCALI
  21. //     corpo con istruzioni
  22. //  }
  23. //  
  24.  
  25. //versioni legacy e moderne
  26.  
  27.  
  28. //INTESTAZIONE LEGACY per funzione con valore di ritorno
  29.  
  30. //   tipo_valore_restituito nome_funzione(lista parametri, anche vuota)
  31. //   {
  32. //      istruzioni
  33. //
  34. //      return espressione_tipo_restituito
  35. //   }
  36.  
  37.  
  38. int f() { return 200;}
  39.  
  40.  
  41.  
  42. //void f2(int p1, int p2 = 10, int p3 = 20, int p4=56);
  43.  
  44. //void disegnaRettangolo(int base, int altezza, int colore = NERO, int spessore = 1, int livello = 0);
  45.  
  46.  
  47. int valuta_espressione(std::string_view& expr) {
  48.     // Un'espressione inizia sempre con un fattore
  49.     int risultato = valuta_fattore(expr);
  50.  
  51.     //... ecc
  52.  
  53.     return risultato;
  54. }
  55.  
  56. int valuta_fattore(std::string_view expr) {
  57.     if (expr.empty()) return 0;
  58.  
  59.     // Caso 1: Trova una parentesi. La delega torna all'espressione.
  60.     if (expr.front() == '(') {
  61.         expr.remove_prefix(1); // Consuma '('
  62.  
  63.         int risultato = valuta_espressione(expr); // Chiamata mutuamente ricorsiva
  64.     //... ecc
  65.     }
  66. }
  67.  
  68. //emula la funzione abs della STL (ma solo per gli int)
  69. int  valore_assoluto(int n)
  70. {
  71.     //if (n < 0)
  72.     //{
  73.     //    n = -n;
  74.     //}
  75.     //
  76.     //return n;
  77.  
  78.     return n >= 0 ? n : -n;
  79. }
  80.  
  81. int stima_ampiezza() { return 60; }
  82.  
  83. void riga_divisoria(char simbolo, int lunghezza)
  84. {
  85.     std::println("{}", std::string(lunghezza, simbolo));
  86.     return;
  87. }
  88.  
  89. auto main() -> int
  90. {
  91.     //f2(10,20);
  92.  
  93.     int risultato = -100;
  94.     std::println("{}", valore_assoluto(34));
  95.     riga_divisoria('-');
  96.  
  97.     std::println("{}", risultato);
  98.  
  99.     int v = valore_assoluto(-9);
  100.     if (valore_assoluto(risultato) > 80)
  101.     {
  102.         std::println("Soglia sicurezza superata!!");
  103.     }
  104.  
  105.     riga_divisoria('-');
  106.  
  107.    
  108. }
  109.  
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment