Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Ziro360

Ajuda C

Recommended Posts

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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.