_di0
(usa FreeBSD)
Enviado em 08/06/2011 - 03:43h
Veja o laço for
for (i=1;i<MAX;i++)
Ou seja, havéra uma contagem iniciada de 1 e terminará em 3, que é menor do que 4(valor de MAX)
Pois bem, note que você começa a contagem dos elementos, já à partir do número 1, o qual representa o índice 1.
Veja no exemplo o que isso quer dizer e quais as consequências:
______________________________________________________________________
v[0] --> nome, id e valor de compra do primeiro cliente
v[1] --> nome, id e valor de compra do segundo cliente
v[2] --> nome, id e valor de compra do terceiro cliente
v[3] --> nome, id e valor de compra do quarto cliente
v[4] --> "Lixo da memória(endereço de memória qualquer)
V[5] --> "Lixo da memória(endereço de memória qualquer)
_______________________________________________________________________
Quando é iniciado o laço for, ele irá ler o campo v[1], que é o valor inicial da variável i(i=1), seguindo seu fluxo, lerá v[2],v[3], v[4]
Com o exemplo acima, já deu pra notar que houve dois problemas.
Primeiro que ele deixou de ler o valor do índice v[0], que contém os dados
do primeiro cliente, e o segundo problema, é que ele leu o índice v[4], retornando assim, "sujeiras".
Como é de conhecimento agora, isso causará portanto, resultados incorretos
em seu programa.
Um outro pequeno problema que pude notar, está nesse fragmento do código:
printf("\n");
Acredito que houve desatenção em sua parte. Use a barra comum, para dizer ao programa que solicita nova linha.
E por fim, também notei as seguintes entradas:
recebedados(vet[MAX]);
imprime(vet[MAX]);
Os dados passados do tipo vetor, são sempre passados como referência. devido a natureza de como a memória opera. Se estiver interessado no motivo, pesquise no GOOGLE. Mas já adianto a maneira correta de se passar os valores acima.
recebedados(vet);
imprime(vet);
Abraços.