Funzione che ritorni il numero di cifre di un numero

di Anonimizzato19537 il
12 risposte
Salve a tutti devo creare una funzione che mi ritorni il numero di cifre di un determinato numero ad esempio se inserisco 1000 il programma mi restituisce 4

int numcifre(int n)
{
   int i;
   
   while(n/10!=0)
   i++;
   
   return i;
}
mi aiutate per favore? Grazie

12 Risposte

  • Da, e' facilissimo: hai iniziato pure con l'idea giusta

    Ora devi solo correggere

    - un errore (le variabili vanno SEMPRE inizializzate, PRIMA di essere usate),
    - una piccola dimenticanza (quando e' che 'n/10' sara' MINORE di 10, se non aggiorni il valore?)
    - un caso SPECIALE (che succede per n = 0?)
  • Grazie per l'aiuto.
    ok ho capito i=0;
    Forse ho capito devo fare una funzione ricorsiva?
  • ilFaraone ha scritto:


    Grazie per l'aiuto.
    ok ho capito i=0;
    Forse ho capito devo fare una funzione ricorsiva?
    Volendo si, ma per ora non fare le cose in modo TROPPO complicato.
    Il ciclo va benissimo, per il momento.
    Poi puoi passare alla versione ricorsiva (un plus non da poco )
  • Il punto è che non riesco a capire come far aggiornare il valore
  • Grazie mille sei stato gentilissimo grazie ai tuoi indizi ho risolto il problema ecco come
    
    int numcrifre(int n)
    {
    int i=1;
       
    if(n=0)
       return 0;
       
       while(n>10)
       {
          n/=10;
          i++;
       }
    	
    return i;
    }
    
  • C'è un refuso qui:
    if(n=0)
  • Mi domandavo se non si potesse utilizzare qualcosa come la seguente:
    #include <stdio.h>
    #include <math.h>
    
    int numcrifre(double n)
    {
    
        int i;
    
        if(n==0)
            return 0;
       
        i = floor(log(n) / log(10.0));
       
        return i;
    
    }
    
    
    int main() {
    
        int i;
    	
        i = numcrifre(1000);
    
        printf("%d\n", i);
    
    	return (0);
    
    }
  • Si, ma non vale
  • migliorabile ha scritto:


    ... ma non vale
    Nel senso che l'intento iniziale è che la funzione da scrivere non deve contenere a sua volta specifiche funzioni ?
  • vuott ha scritto:


    C'è un refuso qui:
    if(n=0)
    cioè?
  • ilFaraone ha scritto:


    vuott ha scritto:


    C'è un refuso qui:
    if(n=0)
    cioè?
    Esamina carattere per carattere di quella if e dicci se per te va bene
  • oregon ha scritto:


    ilFaraone ha scritto:


    vuott ha scritto:


    C'è un refuso qui:
    if(n=0)
    cioè?
    Esamina carattere per carattere di quella if e dicci se per te va bene
    hai pienamente ragione ho scritto male qui sul forum ora cosi il controllo dell'if assegna 0 ad n invece deve essere ==
Devi accedere o registrarti per scrivere nel forum
12 risposte