Jump to content

Ajuda C


Ziro360
 Share

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
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
 Share

×
×
  • Create New...

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.