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,519
425
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.
 

gronag

Utente Èlite
20,784
7,062
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:

Entra

oppure Accedi utilizzando

Hot: Quale crypto per il futuro?

  • Bitcoin

    Voti: 66 48.9%
  • Ethereum

    Voti: 52 38.5%
  • Cardano

    Voti: 17 12.6%
  • Polkadot

    Voti: 6 4.4%
  • Monero

    Voti: 12 8.9%
  • XRP

    Voti: 12 8.9%
  • Uniswap

    Voti: 4 3.0%
  • Litecoin

    Voti: 10 7.4%
  • Stellar

    Voti: 8 5.9%
  • Altro (Specifica)

    Voti: 19 14.1%

Discussioni Simili