fattoriale_somma/Program.cs
2024-11-06 19:54:33 +01:00

60 lines
2.2 KiB
C#

namespace fattoriale_somma;
class Program
{
static void Main(string[] args)
{
//dichiarazione e inizializzazione variabili
int num;
ulong fattoriale, somma;
//inizio programma
//input e input sanitization
do{
Console.Write("Inserire un numero: ");
num=Convert.ToInt32(Console.ReadLine());
if(num<0){
Console.WriteLine("Il numero non può essere negativo");
}
else if(num>65){//Gestione dell'overflow, se viene inserito num>65 viene restituito 0, ovviamente è scorretto
Console.WriteLine("Il numero inserito è troppo grande");
}
}
while(num<0 || num>65);
//gestione caso 0 e 1
if (num<=1){
fattoriale=1;
}
else{
fattoriale=Convert.ToUInt64(num);
//ciclo calcolo fattoriale
int i=2;
while(i<num){//inizio a eseguire i prodotti da due in modo da saltare la moltiplicazione per 1
somma=0;//resetto somma per inserirci il valore della moltiplicazione intermedia
int j=0;
// eseguo "fattoriale * i" con una serie di somme
while(j<i){
somma=somma+fattoriale;
j++;
}
fattoriale=somma; // assegna il risultato della "moltiplicazione" alla variabile fattoriale
i++;
}
//^^^^Per fare questo ciclo ho chiesto aiuto a dei miei amici
//Questo di seguito è il ciclo che avevo scritto da solo
/*for(i=1; i>num-1; i--){
//calcolo fattoriale
Console.WriteLine(fattoriale);
Console.WriteLine(i);
fattorialeSupporto=fattoriale;
for(j=i; j>0; j--){
fattorialePrec=fattoriale;
fattoriale=fattorialeSupporto+fattorialePrec;
Console.WriteLine(fattoriale);
}*/
}
//output finale
Console.Write("Il fattoriale di " +num);
Console.WriteLine(" è " +fattoriale);
}
}