Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

Variável com valores anormais (Estruturas)

$
0
0
Boa Noite, Sou um novo estudante na linguagem C e também neste forum, o qual conheço há algum tempo no entanto esta é a minha primeira participação. Peço desculpa se estou a violar alguma regra. Deixando a participação de lado, num exercício em aula sobre estruturas o qual achei bastante facil (exemplo em aula), decidi adicionar um pouco de complexidade ao exercício proposto e adicionei vetores/arrays(ainda não sei bem o que lhes chamar). No entanto deparei-me com um erro,o qual não concigo resolver. Exercício: Pedir dados ao utilizador como, nome, data de nascimento, género, salário. Com estes dados, informe o utilizador da sua idade atual. Complexidade adicionada: Em vez de ser um utilizador apenas, tentei usar arrays/vetores para que pudesse calcular a idade de vários utilizadores. Usar a data do sistema em véz de data inserida manualmente. Código: #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { typedef struct Data { int dia; int mes; int ano; } DATA; typedef struct Pessoa { char nome[40]; DATA dt_nasc; char genero; float salario; } PESSOA; int i; printf("Quantas pessoas deseja inserir?\n"); scanf("%d",&i); printf("\n\n"); PESSOA p1[i]; int n; for (n=1; n<=i; n++) { printf("Pessoa n.%d\n\n",n); printf("Nome:"); scanf(" %39[^\n]%*c",p1[n].nome); printf("\nData de Nascimento: (formato = dia-mes-ano): "); scanf("%d-%d-%d",&p1[n].dt_nasc.dia,&p1[n].dt_nasc.mes,&p1[n].dt_nasc.ano); // printf("\nGenero: "); // scanf(" %c",&p1[n].genero); // printf("\nSalário: "); // scanf("%f",&p1[n].salario); } /* printf("\n\n| N. Pessoa\t|\tNome da Pessoa\t| Data Nascimento\t | Genero\t| Salário\t |"); for (n=1; n<=i ; n++){ printf("\n\t%d\t\t%s\t%d-%d-%d\t%c\t%.2f", n, p1[n].nome,p1[n].dt_nasc.dia, p1[n].dt_nasc.mes,p1[n].dt_nasc.ano,p1[n].genero, p1[n].salario); } */ time_t t = time(NULL); struct tm tm = *localtime(&t); int mes_at = tm.tm_mon+1; printf("\nData:%d-%d-%d",tm.tm_mday,mes_at,tm.tm_year); for (n=1; n<=i; n++) { int idade; idade=tm.tm_year - p1[i].dt_nasc.ano; printf("\nIdade: %d", idade); if (p1[n].dt_nasc.mes < mes_at) { printf("\n\n\nPessoa n.:%d tem %d anos.\n\n\n",n,idade); } else if (p1[n].dt_nasc.mes == mes_at && p1[i].dt_nasc.dia < tm.tm_mday) { printf("\n\n\nPessoa n.:%d tem %d anos.\n\n\n",n,idade-1); } else if (p1[n].dt_nasc.mes == mes_at && p1[i].dt_nasc.dia == tm.tm_mday) { printf("\n\n\nPessoa n.:%d tem %d anos hoje. PARABÉNS!\n\n\n",n,idade); } else{ printf("\n\n\nPessoa n.:%d tem %d anos.\n\n\n",n,idade-1); } } system("Pause"); return 0; } Problema: a variável "idade" tem valores anormais. Fazendo com que o resultado final do código seja incorreto. Peço então que alguém me aponte onde esta o erro que está a causar o problema Obrigado pelo vosso tempo! Edit: Peço desculpa, algum código está comentado, código esse que não é relevante para o problema (penço).

Viewing all articles
Browse latest Browse all 11336

Trending Articles