Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    30

    ESERCIZIO SUL C(per voi sicuramente facile...per me quasi impossibile :P)

    Ciao a tutti.... spero mi possiate aiutare su un esercizio sul c.
    Praticamente devo far inserire da tastiera un numero di quante cifre voglio e poi devo scomporre questo numero e scrivere le cifre separatamente. Mi spiego meglio :
    Ad esempio il numero 1234 lo devo scomporre in questo modo: 1 2 3 4.
    Come posso ad esempio chiedere al compilatore se il numero è fornato da quattro , tre , due cifre??? C'e un modo particolare???
    Grazie a tutti per l'attenzione,, spero mi possiate essere d'aiuto.


  2. #2
    Puoi prendere un array di dimensione massima n (dove n è il numero massimo di elementi che hai scelto per il tuo array). Inizializzare l' array con un valore che non utilizzi, ad esempio -1. Una volta inizializzato l' array prendi il numero ed in un corpo while lo dividi per 10 e il resto lo assegni alla posizione i-ma dell' array. Dal momento che i valori saranno nell' ordine inverso rispetto a quello iniziale (ad esempio se hai 1234 ottieni nell array a[0] = 4, a[1] = 3, ...) in un ciclo while stamperai i valori da n-1 a i >= 0. Per conoscere il numero di cifre usi una variabile di tipo int che, nel ciclo while in cui stampi le cifre dell' array, aumenti di 1 se l'elemento dell' array è diverso da -1.

    Codice PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 10

    int main()
    {
       
    int a[MAX];
       
    int num 0;
       
    int i 0count 0;

       
    printf("Inserisci un intero: \n");
       
    scanf("%d", &num);
      
       while(
    MAX){
          
    a[i] = -1
          i
    ++;
       }

       
    0;
       while(
    num != && MAX){
          
    a[i]  = num 10;
          
    num num 10;
          
    i++;
       }

       
    MAX 1;
       while(
    >= 0){
          if(
    a[i] != -1)
          {
            
    printf("%d"a[i]);
            
    count++;
          }
          
    i++;
       }
       
    printf("\nIl numero è formato da cifre: %d"count);
     

       return 
    0;

    HTML.it 4Ever !!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    30
    IL problema è che non devo usare gli array... quindi la mia idea è stata:
    #include<stdio.h>


    int main()
    {
    int n, temp1, temp2, n1, n2, n3, n4;
    int somma=0;


    printf ("Inserisci un numero: ");
    scanf ("%d", &n);

    if(n%1000){
    temp1 = n;
    n1 = temp1 / 1000;
    temp2 = temp1 % 1000;
    n2 = temp2 / 100;
    temp1 = temp2 % 100;
    n3 = temp1 / 10;
    n4 = temp1 % 10;
    printf ("\nle cifre che compongono %d sono %d %d %d %d", n, n1, n2, n3, n4);}

    else if(n%100){
    temp1 = n;
    n1 = temp1 / 100;
    temp1 = temp2 % 100;
    n2 = temp1 / 10;
    n3 = temp1 % 10;
    printf ("\nle cifre che compongono %d sono %d %d %d", n, n1, n2, n3);}

    if(n%10){
    temp1=n;
    n1=temp1/10;
    n2=temp1%10;
    printf("\nle cifre che compongono %d sono %d %d", n, n1, n2);}



    fflush(stdin);
    getchar();
    }

    solo che nell'output non riconosce gli if che io dico separatamente...
    dove sbaglio???
    grazie in anticipo

  4. #4
    Capisco. Però la tua soluzione si limita ad un intero di massimo 4 cifre. E se l' intero fosse di 8 cifre ? Inoltre noto che prima dividi il numero per un multiplo di 10 e poi salvi il resto e nel modo in cui procedi alla prima divisione ottieni già la prima cifra, perdendo le altre come parte decimale.

    n1 = temp1 / 1000; /*es: se hai 1234 / 1000 ===> 1,234 ===> n1 = 1 */
    temp2 = temp1 % 1000; /*temp2 = 1 */
    n2 = temp2 / 100; /* 1 / 100 ===> 0,01*/
    ...
    HTML.it 4Ever !!

  5. #5
    Potresti fare in questo modo (già testato) :

    Codice PHP:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main()
    {
      
    int size 10;                  /*Numero di cifre massimo*/
      
    int num 1234567;          
      
    int copia_num num;            /*Una copia di num usata nel ciclo while*/
      
    int pot 0;                    /*Potenza di 10 alla n*/
      
    int count 0;                  /*Variabile per contare il numero di cifre*/

      
    while(num != && size >= 0)
      {
        
    pot pow(10size);                                 /*Inizio con la potenza maggiore*/
        
    num num pot;                                    
        if(
    num != 0){                                        /*Se num è != 0 stampo la divisione fatta e incremento la variabile count di 1*/
           
    printf("\nDivido per %d: %d"potnum);
           
    count++;
            }
        
    num copia_num;                                     /*Assegno copia_num a num per la divisione successiva*/
        
    size--;                                              /*Decremento size per ottenere una potenza più piccola*/
      
    }

      
    printf("\nIl numero %d è di cifre numero: %d"copia_numcount);
      return 
    0;

    HTML.it 4Ever !!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    30
    beh, in effetti hai ragione. Ti ringrazio tanto tanto!!! Mi sei stato di vero aiuto.....

  7. #7
    Di niente !
    HTML.it 4Ever !!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Sull'esempio di silverfox5010, potresti risolvere anche la cosa ricorsivamente...

    codice:
    #include <stdio.h>
    
    void stampa_cifre(int x) {
         
         if ( x != 0 ) {
              
              stampa_cifre( x/10 );
              
              printf("%d\n", x);
         }
    }
    
    int main(void) {
    
      int x = 14511;
      
      stampa_cifre(x);
    
      return 0;
    }
    every day above ground is a good one

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    Suggerisco di utilizzare titoli migliori e, soprattutto, gli appositi tag CODE o PHP per il codice, come indicato nel Regolamento.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.