PDA

View Full Version : [C] Piccolo aiuto...


Manugal
08-11-2005, 14:35
Ho scritto un programmino ricorsivo che mi stampa le cifre date in input in ordine inverso. Questo è il codice:



#include <stdio.h>

int numinvertito(int);

int main(void){

int num;
printf("Inserisci il numero: ");
scanf("%d", &num);
printf("%d", numinvertito(num));
return 0;
}

int numinvertito(int n){

int tmp;

if(n==0)
return n;
else{
tmp=n%10;
printf("%d", tmp);
return numinvertito(n/10);
}
}



Il problema è che mi stampa anche 0 alla fine della sequenza (anche se io in input metto solo per dire 123.... lui mi stampa 3210). Il problema credo che sia nel caso base, ma non so come cambiarlo in maniera corretta. Chi mi può aiutare? Grazie.

Qu@ker
08-11-2005, 15:01
int numinvertito(int n)
{
if ((n / 10) == 0)
return n;
else {
printf("%d", n % 10);
return numinvertito(n / 10);
}
}

Manugal
08-11-2005, 15:06
Grazie posso sapere perché hai messo n/10 nel caso base?


Perfetto scusa ci sono arrivato :D Grazie ancora

Qu@ker
08-11-2005, 15:13
Perche' tu vuoi ritornare l'ultima (cioe', la prima) cifra. Ma ero distratto: in effetti basta scrivere if (n < 10)...

bottomap
08-11-2005, 23:02
Ciao,

Non so se hai problemi ad utilizzare le stringhe (in un paio di post precedenti la cosa era una sorta di "compito per casa" e non si potevano utilizzare le stringhe)... ad ogni modo per ribaltare un input (di qualsiasi genere... numerico/alfabetico o quant'altro) puoi:

Invertire la stringa con strrev()... la lettura ovviamente con scanf("%s") o meglio con gets().

Scrivere una funzione che scorre la stringa all'inverso a partire da strlen()-1 fino ad arrivare a 0 e stampi via via il carattere n-esimo...

Ci guadagni parecchio in calcoli...

Ciaociao :)