Taccid
Codice:
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
int n;
cout << "digita il numero da fattorizzare\n";
cin >> n;
switch (n=0)
{
case true:
{
cout << 1, "\n";
break;
}
case false:
{
int a=n-1;
while (a>0);
{cout << n, "\n";
n*=a;
a--;
}
cout << a, "\n";
break;
}
}
}
solo che qualunque sia l' input, l' output è sempre e solo 0-2.
n=0 è un'assegnazione (assegni ad n il valore 0), invece bisogna fare una comparazione, cioè n==0, che ritorna true se n è uguale a 0 e false altrimenti
detto questo, non ha senso fare uno switch con 2 soli casi, gli if ci sono apposta per questo, quindi:
Codice:
if(n==0)
cout<<1;
else {
...
}
poi non capisco perchè fai quella stampa dentro il ciclo while, questo provoca una serie di stampe in successione, tante quante volte il programma cicla, mentre all'utente si suppone interessi solo il risultato finale, che è n e non a...
altra cosa: qui la libreria math.h non la usi, quindi puoi fare a meno di includerla
EDIT: altro errore è il ; dopo il while, che non ci va, sennò lo blocchi subito
EDIT2: di solito i cout si fanno cosi, ad esempio:
Codice:
cout << "1" << a << "ciao ciao" << n << endl; /* i minori (<<) dividono le varie parti da stampare, endl manda a capo (come \n) */