problema com structs aninhadas [RESOLVIDO]

1. problema com structs aninhadas [RESOLVIDO]

Felipe dos Santos Pinheiro
fellkevin

(usa Ubuntu)

Enviado em 16/03/2009 - 18:32h

ola pessoal sera q alguem pode me ajudar com esse algoritmo?????
Trata-se de cadastrar em uma empresa um determinado numero de funcionarios.No final devera ser impresso o funcionario com a respctiva data de nascimento o programa compila mas na hora de imprimir não imprime correrto alguem pode me ajudar....
eis o codigo fonte q eu estou utilizando

#include <stdio.h>
#include <conio.h>
#define MFUNC 2
#define MAX 100
typedef struct
{
int dia, mes, ano;
}tdata;
typedef struct
{
char nome[MAX];
tdata dtnasc;
}tpessoa;
typedef struct
{
tpessoa func;
tdata dtadm, dtdem;
}tfunc;
void lefunc (tfunc *pfunc);
void ledata (tdata *pdata);

void main (void)
{
tfunc funcionario[MFUNC];
int cont;
clrscr();
for(cont=0;cont<MFUNC;cont++)
{
lefunc(&funcionario[cont]);
}

for(cont=0;cont<MFUNC;cont++)
{
printf("%s",funcionario[cont].func.nome);
printf("%d",funcionario[cont].func.dtnasc.dia);
printf("%d",funcionario[cont].func.dtnasc.mes);
printf("%d",funcionario[cont].func.dtnasc.ano);

}
getch();
}
void ledata (tdata *pdata)
{
printf("dia");
scanf("%d",&pdata->dia);
printf("mes");
scanf("%d",&pdata->mes);
printf("ano");
scanf("%d",&pdata->ano);
}
void lefunc (tfunc *pfunc)
{
printf("digite o nome nome");
gets(pfunc->func.nome);
printf("digite a data de nascimento");
ledata(&pfunc->func.dtnasc);
}



  


2. Re: problema com structs aninhadas [RESOLVIDO]

César Frias
btc_cesar

(usa Fedora)

Enviado em 16/03/2009 - 18:50h

Na verdade, seu código estava imprimindo corretamente sim, só tava sem formatação...

Dei uma mexida básica onde pude, mas lembre-se de dar um tratamento ao seu código porque os os dias têm que ir até no máximo 31 e os meses até 12.

Segue abaixo o seu código com algumas modificações:



#include <stdio.h>
#include <conio.h>
#define MFUNC 2
#define MAX 100

typedef struct
{
int dia, mes, ano;
}tdata;

typedef struct
{
char nome[MAX];
tdata dtnasc;
}tpessoa;

typedef struct
{
tpessoa func;
tdata dtadm, dtdem;
}tfunc;

void lefunc (tfunc *pfunc);
void ledata (tdata *pdata);

main()
{
tfunc funcionario[MFUNC];
int cont;
//clrscr();
for(cont=0;cont<MFUNC;cont++)
{
lefunc(&funcionario[cont]);
}

for(cont=0;cont<MFUNC;cont++)
{
printf("\n%s\n",funcionario[cont].func.nome);
printf("%d\n",funcionario[cont].func.dtnasc.dia);
printf("%d\n",funcionario[cont].func.dtnasc.mes);
printf("%d\n",funcionario[cont].func.dtnasc.ano);
}

getch();

}
void ledata (tdata *pdata)
{
printf("dia: ");
scanf("%d",&pdata->dia);
fflush(stdin);
printf("mes: ");
scanf("%d",&pdata->mes);
fflush(stdin);
printf("ano: ");
scanf("%d",&pdata->ano);
fflush(stdin);
}

void lefunc (tfunc *pfunc)
{
printf("digite o nome: ");
gets(pfunc->func.nome);
fflush(stdin);
printf("digite a data de nascimento\n");
ledata(&pfunc->func.dtnasc);
fflush(stdin);
}



3. Re: problema com structs aninhadas [RESOLVIDO]

César Frias
btc_cesar

(usa Fedora)

Enviado em 17/03/2009 - 12:13h

Opa, ontei esqueci de citar que acrescentei a função fflush(stdin), para limpar o buffer do teclado parando assim com os erros que aconteciam quando voce tentava pegar os dados na segunda passagem do for.

Espero ter ajudado.

Abs


4. Re: problema com structs aninhadas [RESOLVIDO]

Felipe dos Santos Pinheiro
fellkevin

(usa Ubuntu)

Enviado em 17/03/2009 - 14:33h

vlw kra mt obrigado..realmente o professor havia falado sobre a questão do buffer erro meu mesmo q não havia lembrado
brigado






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts