Originariamente inviato da Crow©
il numero viene inserito dall'utente tramite la scanf, per cui ci si può trovare anche di fronte a un intero com 400000, o 56793
il metodo da te consigliato funzia solo per numeri >=999.
poi ho il vincolo di usare il for e
solo due variabili, esempio x,y dove x è la variabile a cui verrà assegnato il numero inserito dall'utente e in y verra assegnato il risultato che devo ottenere,
se inserisco 3456, il programma deve effettuare questa somma 3+4+5+6=18, allora y=18
e poi mi dovra stampare ecc ecc.
Eccoti una possibile soluzione, utilizzando due sole variabili, tediosa proprio per il limite imposto.
codice:
#include <iostream>
#include <cmath>
int main (){
//
// Compiled and tested with:
// i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
//
// Only 2 variables request,
// that's why repeating usually unnecessary call to log10 and pow.
//
// Examples tested:
// input: 345, output 12;
// input: 3456, output 18;
// input: 56793, output 30;
//
int aNum, aSigma = 0; // the only 2 variables admitted
std::cin >> aNum;
while (static_cast <int> (std::log10 (aNum)) >= 0){
aSigma += aNum/std::pow (10.0, static_cast <int> (std::log10 (aNum)));
aNum -= static_cast <int> (aNum/std::pow (10.0, static_cast <int> (std::log10 (aNum))))*std::pow (10.0, static_cast <int> (std::log10 (aNum)));
}
std::cout << aSigma;
return 0;
}
edit: ops è in C++, convertirlo in C è proprio facile facile ;-)