[Risolto] Scomporre un numero in cifre

di il
4 risposte

[Risolto] Scomporre un numero in cifre

Ciao, sto imparando ora a programmare C.

Voglio scrivere un programma per scomporre un numero tra 1 e 32767 nelle cifre reparate da 2 spazi (esempio 4562 deve essere stampato come 4 5 6 2).

Per ora ho trovato questa soluzione.


int a, i;

main(){

   printf("Inserisci un numero ( tra 1 e 32767): \n");
   scanf("%d", &a);
   
   for (i = 10000; i >= 1; i /= 10) //cicla a scalare i multipli di 10
   {
      // riduce i fino a ottenere quoziente divero da 0
      if( a / i == 0){
         a %= i;

      }
      else{
      
      
      printf("%d  ", a / i);
      a %= i;
      //a == a % i; // questa forma non funziona??
      }
   }
}

Come si potrebbe fare meglio?

Non capisco perchè se utilizzo l'ultima istruzione invece della penultima il risultato è sbagliato:

sul numero 4562 ottengo

4 45 456 4562.

Grazie

4 Risposte

  • Re: [Risolto] Scomporre un numero in cifre

    Non capisco perchè se utilizzo l'ultima istruzione invece della penultima il risultato è sbagliato:
    Perchè dovresti prendere solo la cifra, ovvero fare un %10.

    Un metodo molto più semplice per fare il tutto è:
    - definisci una stringa, es. char buffer[80];
    - fai una sprintf(buffer,"%d",valore);
    - fai un ciclo su buffer per stampare ogni singolo carattere e per ogni carattere stampare gli spazi in più
  • Re: [Risolto] Scomporre un numero in cifre

    Perchè dovresti prendere solo la cifra, ovvero fare un %10.
    Ok, ma le istruzioni
    a %= i

    e
    a = a % i 
    Per quello che ho capito entrambe producono il resto tra a e le potenze di 10 a scalare e lo salvano in a.

    non devrebbero essere uguali? non capisco perchè una funziona in modo giusto e l'altra no.

    Un metodo molto più semplice per fare il tutto è:
    - definisci una stringa, es. char buffer[80];
    - fai una sprintf(buffer,"%d",valore);
    - fai un ciclo su buffer per stampare ogni singolo carattere e per ogni carattere stampare gli spazi in più
    Ci guardo ma ancora non ho imparato ad usare i buffer e sprintf.

    Grazie
  • Re: [Risolto] Scomporre un numero in cifre

    Questa è il problema che devo risolvere.
    Allegati:
    15014_5498b01beac01aca44f3b08783ba3045.png
    15014_5498b01beac01aca44f3b08783ba3045.png
  • Re: [Risolto] Scomporre un numero in cifre

    Trovatoil problema.

    decisamente da novellino.

    l'istruzione era

    a = a % i;

    io avevo scritto

    a == a % i;


    Grazie
Devi accedere o registrarti per scrivere nel forum
4 risposte