mi potete aiutare a capire questo comporatmento
outcodice:#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) ; }
array--> ciao
dimensione array-->300
riempimento--> 1.00% //questo è il problema
Confrontandolo con questo
outcodice:#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; ; }
array--> ciao
dimensione array-->300
riempimento--> 1.33% ////questo è il problema

Rispondi quotando
nel ciclo prima dell'uscita (condizione)l'ultimo elemento (o) va a incrementare "giustamente" indi (a=4)
