[C++] visualizzare le singole cifre di un numero int.

di il
4 risposte

[C++] visualizzare le singole cifre di un numero int.

Buongiorno a tutti,

ho un problema con un esercizio che mi chiede di programmare un programma che chieda l'inserimento di un numero intero, e mi restituisca le cifre, e la somma di esse, ignorando l'eventuale segno meno...

ora io ho scritto il seguente codice:

int main ()
{
    // dichiarazione variabili 
    int num;
    int sum = 0;
    int cifra = 0;
    
    // richiesta e lettura variabili 
    cout << "inserire un numero intero: \t";
    cin >>num;
    
    
    // enunciato totalmente facoltativo per l'errore possibile nel flusso di ingresso.
    if (!cin) {
        cout << "input non valido! \nil programma terminerà";
        return 0;
    }
    
    // rendo il numero positivo nel caso sia negativo.
    num = abs(num);
    
    // ciclo while per ottenere la visualizzazione e contare la somma delle cifre
        while (num > 0) {
        cifra = num - ((num / 10) * 10);
        sum = sum + cifra;
        num = num / 10;
        cout  << cifra << " ";
    }
    
    cout << "\nla somma di tutte le cifre del numero è:\t"
         << sum;
    return 0;
}
ora il problema è nel ciclo while:
    while (num > 0) {
        cifra = num - ((num / 10) * 10);
        sum = sum + cifra;
        num = num / 10;
        cout  << cifra << " ";
    }
che ovviamente mi scrive le cifre al contrario sullo schermo...
avete qualche consiglio da darmi?

4 Risposte

  • Re: [C++] visualizzare le singole cifre di un numero int.

    In alternativa, puoi usare un vettore (sapendo che le cifre saranno al massimo 9)
    
    int cifra[9], ci = -1;
    
    e scrivere
    
    while (num > 0) {
    		cifra[++ci] = num % 10;
            sum += cifra[ci];
            num /= 10;
        }
        for(; ci>=0; ci--)
    		cout  << cifra[ci] << " ";
    
  • Re: [C++] visualizzare le singole cifre di un numero int.

    oregon ha scritto:


    In alternativa, puoi usare un vettore (sapendo che le cifre saranno al massimo 9)
    
    int cifra[9], ci = -1;
    
    e scrivere
    
    while (num > 0) {
    		cifra[++ci] = num % 10;
            sum += cifra[ci];
            num /= 10;
        }
        for(; ci>=0; ci--)
    		cout  << cifra[ci] << " ";
    
    sapevo della possibilità di usare i vettori ma non posso ancora dato che sto seguendo un libro che non li ha ancora spiegati ho ritenuto fosse d'obbligo non usarli

    i fornisco il codice riparato :

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main ()
    {
        // Dichiarazione variabili
        int num = 0;
        int cifra = 0;
        int exp = 0;
        int sum = 0;
    
        // Richiesta e lettura variabili
        cout << "Inserire un numero intero: " << endl;
        cin >>num;
        cout << endl;
    
        // Enunciato totalmente facoltativo per l'errore possibile nel flusso di ingresso.
        if (!cin) {
            cout << "Input non valido!" << endl << "Il programma terminera'" << endl;
            return 0;
        }
    
        // Rendo il numero positivo nel caso sia negativo.
        num = abs(num);
    
        // Ciclo while per ottenere la visualizzazione e contare la somma delle cifre
        cout << "Cifre: " << endl;
        while (num > 0) {
            exp = (int)log10(num);
            cifra = num / pow(10,exp);
            num %= (int)pow(10,exp);
            sum += cifra;
            cout  <<  cifra << endl;
        }
        cout << endl;
        cout << "La somma di tutte le cifre del numero e':" << endl << sum << endl;
        return 0;
    }
    grazie mille per il codice, funziona perfettamente..
    grazie ancora.
  • Re: [C++] visualizzare le singole cifre di un numero int.

    E il libro ha già spiegato le funzioni

    log10
    pow

    ?
  • Re: [C++] visualizzare le singole cifre di un numero int.

    Infatti, chiedevo a lui (a parte il fatto che se utilizza una funzione non è detto che utilizzi tutte le altre ...) ...

    Ma la questione era di usare codice normale al posto delle funzioni di math.h ...

    Ad esempio
    
        if(num<0) num = -num;
    
    	int ele=1, tmp=num;
    	while(tmp /= 10) ele *= 10;
    	
        cout << "Cifre: " << endl;
        while (num > 0) {
            cifra = num / ele;
            num %= ele;
            ele /= 10;
    		sum += cifra;
    		cout  <<  cifra << endl;
        }
    
Devi accedere o registrarti per scrivere nel forum
4 risposte