Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ziro360

Ajuda C

Mensagens Recomendadas

Ziro360

Bom dia.

Estou aqui com um problema num trabalho, tenho basicamente que fazer um prog que de para inserir numa struct varios dados referentes a uma possivel empresa de gestão de projectos.

Fiz esta estrutura:

#define MAXP 100  
#define MAXT 100
typedef struct sAvaliador{
  char orig;
  char qualid;
  char idonei;
  char exequib;
} Avaliador;

typedef struct sOrcamento{
  int compraeq;
  int pag;
  int despconsu;
  int despconsult;
  int desloc;
  int gastos;
} Orcamento;

typedef char Area[100];

typedef struct sProjecto{
  char titulo[MAXT];
  char instituicao[MAXT];
  char investigador[MAXT];
  char duracao[2];
  Area larea[5];
  Orcamento orc;
  Avaliador lavali[3];
} Projecto;

typedef struct sLProjecto{
  Projecto lproj[MAXP];
  int nproj;
} Lprojecto;

E o meu problema é que quando executo a função para ler e inserir dados na struct ele não insere na parte de avaliadores nem areas,  a não ser para o primeiro projecto.

funcao ler :

int ler(Lprojecto *lp,int i){
  int j=0,k=0;
  
  printf("Projecto nº %d\n",i);
  printf("Introduza o Titulo\n");
  ler_string(lp->lproj[i].titulo,MAXT);
  
  printf("Introduza a Instituição\n");
  ler_string(lp->lproj[i].instituicao,MAXT);
  
  printf("Introduza o Investigador responsavel.\n");
  ler_string(lp->lproj[i].investigador,MAXT);
  
  printf("Introduza a duração\n");
  ler_string(lp->lproj[i].duracao,2);
  
  printf("introduza as areas, até 5.(<Enter> to skip)\n");
  while(j<=4){
  ler_string(lp->lproj[i].larea[j],MAXT);
  j++;
  }
  printf("\nIntroduza o orcamento:\n");
  printf("\tCompra de Equipamento.\n");
  scanf("\t%d",&lp->lproj[i].orc.compraeq);
  printf("\tPagamento de tarefeiros.\n");
  scanf("\t%d",&lp->lproj[i].orc.pag);
  printf("\tDespesas com consumiveis.\n");
  scanf("\t%d",&lp->lproj[i].orc.despconsu);
  printf("\tDespesas com consultores.\n");
  scanf("\t%d",&lp->lproj[i].orc.despconsult);
  printf("\tDeslocações.\n");
  scanf("\t%d",&lp->lproj[i].orc.desloc);
  printf("\tGastos gerais.\n");
  scanf("\t%d",&lp->lproj[i].orc.gastos);
  printf("\nIntroduza a Avaliação (Use: N, M, S, B, E).\n\n");
  while(k<=2){
    printf("\tAvaliador nº%d\n",k);
    printf("\t\tOriginalidade.\n");
    scanf("\t\t%c",&lp->lproj[i].lavali[k].orig);
    printf("\t\tQualidade.\n");
    scanf("\t\t%c",&lp->lproj[i].lavali[k].qualid);
    printf("\t\tIdoneidade da equipa\n");
    scanf("\t\t%c",&lp->lproj[i].lavali[k].idonei);
    printf("\t\tExequibilidade\n");
    scanf("\t\t%c",&lp->lproj[i].lavali[k].exequib);
    k++;
  }
  i++;
  return i;
}

Se alguem pudesse dar uma ajuda agradecia já que sou novo na area da programação.

obrigado pelo tempo.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Strabush

Tenta fazer o seguinte. Na main(), passas também o endereço das restantes structs para a função, para isso terás de criar novos tipos para ela. E na função vais ter de receber um numero de ponteiros equivalente ao numero de structs.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.