Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [c] piccola funzione

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56

    [c] piccola funzione

    mi potete aiutare a capire questo comporatmento
    codice:
     #include <stdio.h>
    #define dim 300
    float riempimento_array(char array[],int dimensione);
    int main()
    {
      char array[dim]="ciao";
      printf("array--> %s\n\ndimensione array-->%d\n\nriempimento--> %.2f%%",
              array,dim,riempimento_array(array,dim));
      
      getchar();
      return 0;
    }
    float riempimento_array(char array[],int dimensione)
    {
        int a=0;             //contatore 
        while(array[a]!='\0')
        {
          a++;
          }  
       return ((a-1)*100/dimensione) ;
    }
    out
    array--> ciao

    dimensione array-->300

    riempimento--> 1.00% //questo è il problema

    Confrontandolo con questo
    codice:
    #include <stdio.h>
    #define dim 300
    float riempimento_array(char array[],int dimensione);
    int main()
    {
      char array[dim]="ciao";
      printf("array--> %s\n\ndimensione array-->%d\n\nriempimento--> %.2f%%",
              array,dim,(riempimento_array(array,dim))*100/dim);
      
      getchar();
      return 0;
    }
    float riempimento_array(char array[],int dimensione)
    {
        int a=0;            
        while(array[a]!='\0')
        {
          a++;
          }  
       return a; ;
    }
    out
    array--> ciao

    dimensione array-->300

    riempimento--> 1.33% ////questo è il problema

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perchè in una versione calcoli con

    a-1

    e nell'altra calcoli restituendo

    a

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    errore mio, ma non risolvo, non capisco perchè la percentuale mi da 1,00% se in funzione e facendo gli stessi calcoli nel main 1,33% (risultato corretto), qualcosa che sbaglio o che non conosco?!?
    riscritta con (a-1)
    codice:
    #include <stdio.h>
    #define dim 300
    float riempimento_array(char array[],int dimensione);
    int main()
    {
      char array[dim]="ciao";
      printf("array--> %s\n\ndimensione array-->%d\n\nriempimento--> %.2f%%",
              array,dim,(riempimento_array(array,dim))*100/dim);
      
      getchar();
      return 0;
    }
    float riempimento_array(char array[],int dimensione)
    {
        int a=0;            
        while(array[a]!='\0')
        {
          a++;
          }  
       return (a-1); ;
    }
    out
    array--> ciao

    dimensione array-->300

    riempimento--> 1.00%

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    a-1 vale 3 e la dimensione è 300 ... in questo caso è proprio l' 1.00 %

    C'è un po' di confusione ...

    In ogni caso, nell'espressione scrivi 100.0 al posto di 100 ... e tutto andrà a posto

    return (a*100.0/dimensione) ;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
      
       return (a-1); ;
    xk ci sono due ; ?
    e poi guarda che inizializzando a a 0
    nel while succede questo:
    controllo c
    incremento 1
    controllo i
    incremento 2
    controllo a
    incremento 3
    controllo o
    incremento 4
    controllo \0
    esce dal ciclo...
    ora sottraendo 1 non hai il numero di lettere di ciao, te ne manca una!

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    Confusione mia
    vero oregon e Scara95 ho contato gli elementi array che sono tre ma nel ciclo prima dell'uscita (condizione)l'ultimo elemento (o) va a incrementare "giustamente" indi (a=4)
    Grazie a tutti
    tornando
    codice:
    #include <stdio.h>
    #define dim 300
    float riempimento_array(char array[],int dimensione);
    int main()
    {
      char array[dim]="ciao";
      printf("array--> %s\n\ndimensione array-->%d\n\nriempimento--> %.2f%%",
              array,dim,riempimento_array(array,dim));
      
      getchar();
      return 0;
    }
    float riempimento_array(char array[],int dimensione)
    {
        int a=0;             //contatore 
        while(array[a]!='\0')
        {
          a++;
          }  
       return (a*100/dimensione) ;
    }
    a dovrebbe valere a=4 4*100/300=1,33% non 1
    in output
    array--> ciao

    dimensione array-->300

    riempimento--> 1.00%
    accidenti mi sto confondendo????

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    OT devo aver fatto male a modificare il post sopra!!!
    spero in voi! grazie mille

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma le leggi le risposte ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    100.0
    grazie oregon

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 © 2024 vBulletin Solutions, Inc. All rights reserved.