|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Radice digitale
Ciao
Dovrei scrivere questo programma usando la ricorsione: Scrivere un programma C che dato un numero n in input ne calcoli la radice digitale. La radice digitale di un numero è data dalla somma delle sue cifre finché non si riducono ad una sola cifra. Esempio: 2365 prima somma = 16 seconda somma = 7 Ho provato a buttare giù qualcosa, però non mi viene per niente il passo ricorsivo. Codice:
int radicedigitale(int n){
int result=0;
int tmp=0;
if(n/10==0)
return n;
else
tmp+=(n%10)+radicedigitale(n/10);
result=tmp;
if(result/10!=0)
return radicedigitale(result);
}
Ultima modifica di Manugal : 07-11-2005 alle 15:28. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Forse ci sono riuscito, però per un particolare numero che gli avevo dato non era venuto correttamente
Codice:
int radicedigitale(int n){
int tmp=0;
if(n/10==0)
return n;
else
while(n>0){
tmp+=(n%10);
n/=10;
}
return radicedigitale(tmp);
}
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
|
Ciao,
Ho l'impressione che faresti prima ad utilizzare delle stringhe/array di caratteri... Diciamo che una funzione che calcola la somma delle cifre (e rende un intero) potrebbe essere: Codice:
int ottieni_somma(char *str)
{
int result=0;
while(*str){result+=(*str)-'0';str++;}
return result;
}
Codice:
sprintf(s,"%d",valore_intero)
while(strlen(s)>1)
{
int i=ottieni_somma(s);
sprintf(s,"%d",i);
}
//A questo punto in s hai un numero ad una cifra...
//se specificavi valori diversi per il confronto con strlen ottenevi numeri
//a più cifre...
//Per riconvertirlo (se serve) in intero puoi utilizzare atoi
//o qualsiasi altra funzione di conversione...
Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com Bottomap is a proud Masterdrive.it moderator |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
|
Ciao,
Beh... se è così, il secondo codice apparentemente è giusto... qual'è il numero su cui ti pare abbia dato risultati errati? Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com Bottomap is a proud Masterdrive.it moderator |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Non mi ricordo più
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:44.



















