Ir para conteúdo
Fórum Script Brasil
  • 0

estrutura e union


Vick

Pergunta

Oi pessoal, estou aqui com mais uma dúvida. Tem que fazer um programa para:

• Cadastrar os habitantes de uma cidade

• Para representar dados sobre diversos habitantes,

precisamos definir um tipo HABITANTE

já tenho o seguinte e o não sei o que está faltando:

#include <stdio.h>
#include <conio.h>
#define N1 30
#define N2 20
/* Declaracoes dos tipos enumerativos */
enum escolaridade {nehn, pgrau, sgrau, sup};
typedef enum escolaridade escolaridade;
enum tseggrau {col, mag, tec};
typedef enum tseggrau tseggrau;
enum tsuperior {eng, med, adv, arq, econ, fil, odont};
typedef enum tsuperior tsuperior;
enum tengenharia {aer, mec, civ, elet, eletron, comp};
typedef enum tengenharia tengenharia;
enum tmedicina {ped, cir, gin, card, endocr, otorr, psiq};
typedef enum tmedicina tmedicina;

/* Declaracoes das estruturas */
struct primgrau { int ano_term; };
typedef struct primgrau primgrau;
struct seggrau { int ano_term; tseggrau tipo; };
typedef struct seggrau seggrau;
union fsuperior { tengenharia teng; tmedicina tmed; };
typedef union fsuperior fsuperior;
struct superior{
int ano_term; char nome_escola[N1];
tsuperior tipo; fsuperior form;
};
typedef struct superior superior;

/* Declaracoes das estruturas */
struct data { int dia, mes, ano; };
typedef struct data data;
union formacao { primgrau pg; seggrau sg; superior sp;
};
typedef union formacao formacao;
struct habitante {
char nome[N1]; char ender[N1];
char cid_natal[N2]; data data_nasc;
escolaridade esc; formacao form;
};
typedef habitante habitante;
struct

/* Inicio dos comandos; leitura do numero de habitantes */
int main (void) {
FILE *fl, *f2; habitante hab[10]; int i, n;
fl = fopen("infile2.cpp", "r");
f2 = fopen("outfile2", "w");
fscanf (fl, "%d",&n);
/* Leitura dos dados sobre os habitantes */

/* Leitura dos dados sobre os habitantes */
for (i = 0; i < n; i++) {
fscanf (fl, "%s %s %s %d %d %d %d", hab[i].nome,
hab[i].ender,ab[ ].e de ,hab[i].cid_natal,&hab[i].data_nasc.dia,
&hab[i].data_nasc.mes, &hab[i].data_nasc.ano,
&hab[i].esc);
switch (hab[i].esc){
case pgrau: fscanf(fl,"%d",&hab[i].form.pg.ano_term);
break;
case sgrau: fscanf(fl,"%d%d",&hab[i].form.sg.ano_term,
&hab[i].form.sg.tipo); break;
case sup: fscanf(fl,"%d%s%d",&hab[i].form.sp.ano_term,
hab[i].form.sp.nome_escola,&hab[i].form.sp.tipo);
switch (hab[i].form.sp.tipo){
case eng:
fscanf(fl,"%d",&hab[i].form.sp.form.teng);
break;
case med:
fscanf(fl,"%d",&hab[i].form.sp.form.tmed);
}
}
}

/* Saida dos resultados */
for (i = 0; i < n; i++) {
fhparbi[nit]f. no(mfe2,,h a"b\[ni%]-.1e5nsd e%r-,15s %-10s%3d/%2d/%4d%3d",
hab[i].datah_anba[sic]..mceisd,_natal, hab[i].data_nasc.dia,
hab[i].data_nasc.ano, hab[i].esc);
switch (hab[i].esc){
case pgrau: fprintf (f2, "%5d",hab[i].form.pg.ano_term); break;
case sgrau: fprintf (f2, "%5d%3d", hab[i].form.sg.ano_term,
hab[i].form.sg.tipo); break;
case sup: fprintf (f2, "%5d%3d %-10s", hab[i].form.sp.ano_term,
hab[i].form.sp.tipo, hab[i].form.sp.nome_escola);
switch (hab[i].form.sp.tipo) {
case eng: fprintf (f2, "%3d",hab[i].form.sp.form.teng);
break;
case med: fprintf (f2, "%3d",hab[i].form.sp.form.tmed);
break;
}
}
}
return 0;
}

Esqueci de incluir que tem ter a seguinte ordem:

• Habitante

– Nome, Endereço, Cidade-nasc, Data-nasc

– Escolaridade

• Nenhuma

• 1° grau

– Ano-término

• 2° grau

– Ano-término

– Tipo

» Colegial

» Magistério

» Técnico

• Superior

– Ano-término

– Nome-escola

– Tipo

» Engenharia (Era, Mec, Civ, Elet, Eletron, Comp)

» Medicina (Ped, Cirurg, Ginec, Card, Endocr, Otorr, Psiq)

» Advocacia

» Arquitetura

» Economia

» Filosofia

» Odontologia

Esqueci de incluir que tem ter a seguinte ordem:

• Habitante

– Nome, Endereço, Cidade-nasc, Data-nasc

– Escolaridade

• Nenhuma

• 1° grau

– Ano-término

• 2° grau

– Ano-término

– Tipo

» Colegial

» Magistério

» Técnico

• Superior

– Ano-término

– Nome-escola

– Tipo

» Engenharia (Era, Mec, Civ, Elet, Eletron, Comp)

» Medicina (Ped, Cirurg, Ginec, Card, Endocr, Otorr, Psiq)

» Advocacia

» Arquitetura

» Economia

» Filosofia

» Odontologia

Esqueci de incluir que tem ter a seguinte ordem:

• Habitante

– Nome, Endereço, Cidade-nasc, Data-nasc

– Escolaridade

• Nenhuma

• 1° grau

– Ano-término

• 2° grau

– Ano-término

– Tipo

» Colegial

» Magistério

» Técnico

• Superior

– Ano-término

– Nome-escola

– Tipo

» Engenharia (Era, Mec, Civ, Elet, Eletron, Comp)

» Medicina (Ped, Cirurg, Ginec, Card, Endocr, Otorr, Psiq)

» Advocacia

» Arquitetura

» Economia

» Filosofia

» Odontologia

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...