TransWikia.com

Contador adicionando um valor a mais no vetor com ponteiro

Stack Overflow em Português Asked by user117670 on December 16, 2021

Eu estou tentando terminar um exercício que pede 4 idades e o output fala quantas das idades inseridas são maiores ou igual a 18 mas o contador adiciona sempre um valor superior a 18 no final e não entendo o porquê.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int vetor[3], *pvetor = &vetor[0],i,cont=0;
for(i=0;i<4;i++)
{
    printf("Introduza a %d idade: ",i+1);
    scanf("%d",&vetor[i]);
}
while(*pvetor != NULL)
{
    if(*pvetor >= 18)
        cont++;
    pvetor++;
}
printf("Das %d idades inseridas, %d sao maiores de idade.",4,cont);
}

One Answer

Se é para receber 4 idades o array deve ter tamanho 4. Pode fazer a contagem já na entrada. Não precisa de ponteiro. Se sabe que é 4 idades não tem porque parametrizar isto. E isto é C e não C++.

#include <stdio.h>

int main() {
    int vetor[4], cont=0;
    for (int i = 0; i < 4; i++) {
        printf("Introduza a %da. idade: ", i + 1);
        scanf("%d", &vetor[i]);
        if (vetor[i] >= 18) cont++;
    }
    printf("Das 4 idades inseridas, %d sao maiores de idade.", cont);
}

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Answered by Maniero on December 16, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP