PROBLEMA [C++] Fattoriale di un numero

SDM

Nuovo Utente
2
0
Ciao ragazzi, ho bisogno del vostro aiuto. Non riesco a programmare un eseguibile che mi dia il fattoriale di un numero sia con il while che con il for. Mi sapreste dire dove sbaglio e perché?
Grazie a tutti. Vi lascio i due codici qui sotto.

Ciclo While:

C++:
#include <iostream>
#include <cstdlib>

using namespace std;

int main ()
{
    int numero = 0;
    int fattoriale = 1;
    
    cout << "Inserire numero per il calcolo del fattoriale: ";
    cin >> numero;
    
    if (numero > 0)
    {
        while (fattoriale <= numero)
        fattoriale = numero --;
        cout << "Il valore del numero in fattoriale e'= " << numero*fattoriale << endl;
     }
    
    else
    {
        cout << "Inserisci un numero positivo";
    }
    
    return 0;
}

Ciclo For:

C++:
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int n=0;
    int i=0;
    
    cout << "Inserisci numero per il calcolo del fattoriale: ";
    cin >> n;
    
    for (i=1; i<=n; i--)
    cout << "Il fattoriale del numero e': " << n*i << endl;
    
    return 0;
}
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Il fattoriale è il prodotto dai numeri da 1 a n. Quando fai n*i, questo valore lo devi salvare da qualche parte per poi moltiplicarlo per i-1 e cosi via. E ricorda che il fattoriale di 0 o di 1 è 1.
 

SDM

Nuovo Utente
2
0
Grazie per la risposta, puoi mostrarmi il codice cosicché posso capire meglio quello che intendi?
Ti ringrazio.
 
U

Utente 16812

Ospite
Come detto da @rodhellas, è importante considerare anche il caso N=0, vale a dire che venga contemplata la possibilità di non percorrere il ciclo neanche una volta.
Quindi una volta inizializzate le variabili ausiliarie (il contatore C e il fattoriale FATT), per il calcolo progressivo del fattoriale procederei in questo modo (in una pseudo-codifica Pascal-like):

START
leggi N;
C <-- 0;
FATT <-- 1;
while C<N do
begin (inizio del ciclo)
C <-- C+1;
FATT <-- FATT * C;
end; (fine del ciclo)
scrivi FATT;
STOP.

Semplicemente l'algoritmo funziona ?
A presto ?
 
Ultima modifica da un moderatore:

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili