• Source
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. // Prototipi delle funzioni
    5. char menu();
    6. float Potenza(float, int);
    7. unsigned int Fattoriale(int);
    8. void NumeriPrimi(int);
    9. bool ControlloNumeroPrimo(int );
    10.  
    11. //---------------
    12. int main()
    13. {char Scelta;
    14. int N;
    15. unsigned int X;
    16. float A, Pot;
    17. // Presentazione menu ciclicamente fino a quando non si digita x
    18. do
    19. {Scelta= menu();
    20. switch (Scelta)
    21. {case 'a':
    22. // Fattoriale
    23. do {cout << "Calcolo del fattoriale di (<=12): ";
    24. cin >> N;
    25. } while (N < 0 || N > 12);
    26. X = Fattoriale(N); // restituisce il fattoriale di N
    27. cout << "\nIl fattoriale di " << N << " e' " << X << "\n";
    28. system("pause");
    29. break;
    30. case 'b':
    31. // Numeri primi
    32. do { cout << "Calcolo dei numeri primi fino a: ";
    33. cin >> N;
    34. } while (N <= 0);
    35. NumeriPrimi(N); // visualizza tutti i numeri primi e non restituisce niente
    36. system("PAUSE");
    37. break;
    38. case 'c':
    39. // Potenza
    40. do{cout << "Calcolo la potenza di : ";
    41. cin >> A;
    42. if (A==0) cout <<" ----> valore 0 non consentito \n";
    43. }while (A==0);
    44. do {cout << "esponente (>=0): ";
    45. cin >> N;
    46. }while (N<0);
    47. Pot = Potenza (A, N); // restituisce la potenza A elevato alla N
    48. cout << "\nLa potenza " << A << "^"<<N<<" e' " << Pot << "\n";
    49. system("PAUSE");
    50. break;
    51. case 'x': break;
    52. }
    53. } while (Scelta!='x');
    54. }
    55.  
    56.  
    57. // --- Definizione delle funzioni
    58. // Menu
    59. char menu()
    60. {char s;
    61. do
    62. {system ("cls");
    63. cout<<"\n MENU\n"<<endl;
    64. cout<<" a) Fattoriale di un numero (<=12)"<<endl;
    65. cout<<" b) Numeri primi fino a N"<<endl;
    66. cout<<" c) Potenza N-esima (N>=0 intero) di un numero reale A (!=0)"<<endl;
    67. cout<<" x) Fine"<<endl;
    68. cout<<"\nScegli: ";
    69. cin>>s;
    70. }while (s!='a' && s!='b' && s!='c' && s!='x');
    71. return s;
    72. }
    73.  
    74. // Fattoriale
    75. unsigned int Fattoriale(int N)
    76. { unsigned int F = 1;
    77. for (int i = 2; i <= N; i++)
    78. F = F * i;
    79. return F;
    80. }
    81.  
    82. // Numeri primi fino a N
    83. void NumeriPrimi(int N)
    84. {
    85. for (int i = 2; i <= N; i++)
    86. if (ControlloNumeroPrimo(i)==true) // richiama la funzione ControlloNumeroPrimo
    87. cout << i << "; ";
    88. cout << endl;
    89. return;
    90. }
    91.  
    92. bool ControlloNumeroPrimo(int N)
    93. {// Controllo se il numero e' minore o uguale a 1:
    94. // numero non primo, uscita immediata e restituisce false.
    95. if (N <= 1) return false;
    96. // Sfrutta direttamente la definizione di numero primo:
    97. // provo a dividere N per tutti i numeri da 2 a N/2;
    98. // se almeno una divisione ha resto nullo (divisibilità)
    99. // allora il numero NON E' PRIMO, uscita immediata e restituisce FALSE.
    100. // se nessuna divisione ha resto nullo allora il numero E' PRIMO e restituisce TRUE.
    101. for (int i = 2; i <= N/2; i++)
    102. if (N % i == 0) return false;
    103. return true;
    104. }
    105.  
    106. // Potenza
    107. float Potenza(float base, int esponente)
    108. { // Funzione che calcola base elevata a esponente
    109. float Pot = 1; // Inizializza la variabile accumulatore
    110. for(int i = 1; i <=esponente; i++)
    111. Pot = Pot * base;
    112. return Pot;
    113. }