Salve a tutti sono da poco entrato nel mondo dell'informatica a causa di un'esame all'università. Studiavo gli array e i cicli e mi sono imbattuto in uno spezzone di programma che ho cercato di completare e testare. Il gcc è pulito, tuttavia all'esecuzione il programma non funge correttamente. Per la precisione qualora inserisca più di 4 raggi il risultato ottenuto è scorretto. Posto il file sorgente :

codice:
#include <stdio.h>

float Areacerchio(float raggio);
int main ()
{
    int i = -1, n = 0;
    float raggio [5], area [5];
    printf ("\n Enter 0 to quit.");
              do {  i++;
                      printf("\n Numeri Radius ?");
                      scanf("%f",&raggio[i]);
                      area[i] = Areacerchio(raggio[i]);
                     }
    while ((raggio [i] !=0) && (i<5));
    n = i;
    for( i = 0; i<n; i++)
    {
    printf("\n Radius = %.2f, Area = %.2f\n", raggio [i], area[i]);
    }
return 0;
}
float Areacerchio(float raggio)
{
const float pi=3.14;
float a;
a = pi*raggio*raggio;
return (a);
}


Dove ho sbagliato? Avendo indicato 5 nel valore di Area e raggio non dovrei avere 5 elementi a disposizione?