Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luizinho do Forró

Algoritmo com Struct não funciona

Recommended Posts

A descrição do exercício é essa: fazer uma struct que leia o ano, o mês e o dia de nascimento do avô, do filho e do neto. O algoritmo deve mostrar se a diferença da idade entre o avô e o filho é maior/igual que a diferença entre o filho e o neto. O programa deve evitar que o usuário digite valores no sense, tipo mês 30 e dia -2.

#include "stdio.h"

int main(void){

    int diferenca_avo_filho, diferenca_filho_neto;

    struct nascimento{
        int dia, mes, ano;
    }avo, filho, neto;

        do{
            printf("Digite o dia de nascimento do avo: "); scanf("%d", &avo.dia);
            printf("Digite o mes de nascimento do avo: "); scanf("%d", &avo.mes);
            printf("Digite o ano de nascimento do avo: "); scanf("%d", &avo.ano);

            printf("Digite o dia de nascimento do filho: "); scanf("%d", &filho.dia);
            printf("Digite o mes de nascimento do filho: "); scanf("%d", &filho.mes);
            printf("Digite o ano de nascimento do filho: "); scanf("%d", &filho.ano);

            printf("Digite o dia de nascimento do neto: "); scanf("%d", &neto.dia);
            printf("Digite o mes de nascimento do neto: "); scanf("%d", &neto.mes);
            printf("Digite o ano de nascimento do neto: "); scanf("%d", &neto.ano);
        }while(dia<=0||dia>31||mes<=0||mes>12||ano<1900||ano>2015);

        diferenca_avo_filho=avo.ano-filho.ano;
        diferenca_filho_neto=filho.ano-neto.ano;

        if(diferenca_avo_filho>diferenca_filho_neto){
            printf("A diferenca de idade entre o avo e o filho e maior que a do filho e o neto!\n");
        }else{
            printf("A diferenca de idade entre o avo e o filho e menor que a do filho e o neto!\n");
        }
}

Quando eu compilo recebo uma mensagem dizendo que a variável dia não está declarada. Se repararem na struct, ela está lá.

Alguma luz? <3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

 

Sou iniciante em C, mas acho que posso ajudar . . .

 

 

- aqui o compilador retornou os seguintes erros:

|46|error: ‘dia’ undeclared (first use in this function)|

|46|error: ‘mes’ undeclared (first use in this function)|

|46|error: ‘ano’ undeclared (first use in this function)|

isso se deve ao fato, de não ter especificado dentro do seu laço ( while ) que as variáveis que ele deve acessar estão ( são ) membros de uma estrutura ( struct ), você deve colocar ( avo. ) ( neto. ) ou ( filho. ) na frente da variável que é membro de uma estrutura, e que voce deseja usar como valor para comparação dentro do seu laço, é exatamente a forma como voce faz nos scanf()


- aqui o compilador também retornou o seguinte alerta:

|56|warning: control reaches end of non-void function [-Wreturn-type]|

o compilador está lhe alertando para o fator de voce não ter colocado return 0; no final da função main()

 

 

Bom por hora é só . . . veja se as dicas acima já lhe ajudam em algo . . .

 

 

Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12

 

 

Espero Ter Ajudado ! ! !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.