PDA

Visualizza la versione completa : Conteggio cifre di un numero


Fora91
07-11-2010, 15:46
Ragazzi sono nuovo, buonasera a tutti :)
scrivo perchè sono veramente disperato...sono al primo anno di ingegneria informatica e mi trovo in difficoltà con gli esercizi di programmazione. oggi come compito per casa avrei un esercizio che richiede il conteggio delle cifre di un numero.
la programmazione è c++.

per svolgere l'esercizio ho imposto al programma di dividere il numero inserito dall'utente per 10, finchè il resto della divisione risultasse maggiore o uguale a 10, ma il programma non funziona :dhò:
spero che qualcuno possa aiutarmi! grazie in anticipo!

vi mando il codice che ho scritto:

#include <iostream>
#include <math.h>
using namespace std;

int main () {
int a;
double b = 10,i = 0;

cout << "Inserisci un numero intero positivo: ";
cin >> a;

if (a < 0) {
cout << "Il numero inserito non e' positivo" << endl;

}else{

for (i = 0; a % 1*pow (b,i) <= 9; i++) {

cout;

}
cout << "Il numero inserito ha " << i + 1 << " cifre." << endl;
}
return 0;
}

EDX
07-11-2010, 15:58
Più semplice:

#include <iostream>

using namespace std;

int main()
{
int num = 0;
int i = 0;

cout << "Inserisci un numero intero positivo: ";
cin >> num;

if(num < 0)
return -1;

do
i++;
while(num /= 10);

cout << "Il numero ha " << i << " cifre" << endl;

return 0;
}

Fora91
07-11-2010, 16:04
grazie mille!!:)

posso chiederti solo cosa significa il simbolo "/=" che non ce l'hanno mai fatto vedere a lezione?

grazie ancora!!!

Fora91
07-11-2010, 16:26
ah ok, ho trovato il significato googleando un po':)

adesso però devo capire bene cos'hai fatto nel ciclo do-while...

cioè, hai fatto partire nel do un contatore che aggiunge +1 finchè a non diventa uguale ad a/10, cioè finchè 10 non diventa di potenza 0?

ok, spiegato così non ci capirei niente neanch'io...quello che non capisco è cosa sta eseguendo il programma in questo modo...dopo che operazione non soddisfatta il contatore aggiunge +1?

EDX
07-11-2010, 16:32
Allora, praticamente la variabile i tiene il conto delle cifre, ad ogni ciclo do-while viene incrementata di 1.
Nella condizione while(num /= 10) num viene diviso per 10, e il risultato è posto in num, dopo la divisione, se num è maggiore di 0, il ciclo continua, altrimenti esce.

Fora91
07-11-2010, 16:37
aaah!! ho capito! non mi sarebbe mai venuto in mente, grazie mille per l'aiuto!! :zizi:

Loading