1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Stock Laboratorio em C

Discussão em 'Programação' iniciada por So_SiMpLe_, 27 de Janeiro de 2008. (Respostas: 30; Visualizações: 1667)

  1. So_SiMpLe_

    So_SiMpLe_ Power Member

    Boas pessoal! :confused:
    Tou aqui com um problema.
    Tenho um trabalho para fazer de gestao de stocks de laboratorio. So que tou aqui a empancar com uma estrutura.

    O seguinte excerto:

    typedef struct
    {
    char nome_utente[60];
    long int numero_bi;
    char morada_utente[60];
    long int telefone_utente;
    }utente;

    contador_utentes = 0;

    utente utente[10];

    Tenho problemas aqui, porque ao compilar o programa primeiro dá erro com o contador_utentes (Defaulting to int) e nao percebo porque, o objectivo de tar sozinho é para abranger todas as funções.
    Depois dá erro com o utente, alias 3 erros:
    -illegal use of type name 'utente'
    -operands of + have illegal types 'untente' and 'int'
    -type error:pointer expected
    Não tou msm a perceber como resolver isto e pela nOObidade :lol: da questao não consigo passar daqui.
    Alguem me pode ajudar please?
    Abraço!
     
  2. AragTey

    AragTey Power Member

    Código:
    [B]int[/B] contador_utentes = 0; // falta declarares a variável do tipo int
    
    utente [B]list_utente[10];[/B]    // nao podes ter variáveis com o mesmo nome de estruturas.
    
     
  3. So_SiMpLe_

    So_SiMpLe_ Power Member

    Boas!
    Desde já obrigado!
    O problema do contador já nao da erro, mas o utente ainda dá o mesmo.

    tenho nas funções quando vai buscar o nome_utente tenho assim:
    gets (utente[contador_utentes].nome_utente);

    é aqui que ele me da aqueles erros que referi acima.
    :mad:
    Abraço!
     
  4. Ace-_Ventura

    Ace-_Ventura Power Member

    utente utente[10] só pode dar problemas. É como criares 1 variável chamada int (se fosse possível). Altera para utente utentes[10].
     
  5. So_SiMpLe_

    So_SiMpLe_ Power Member

    Ace mas isso ja foi explicado pelo Aragtey que disse para por utente list_utente[10].
    Tou msm a atrofiar com isto :mad:. tks anyway
    Abraço!
     
  6. Baderous

    Baderous Banido

    E já mudaste aqui?

    Código:
      gets ([B]utente[/B][contador_utentes].nome_utente);
     
  7. So_SiMpLe_

    So_SiMpLe_ Power Member

    Mudar para qual Baderous? o utente tem de passar para list_utente?
    Abraço!
     
  8. Baderous

    Baderous Banido

    Claro!
     
  9. So_SiMpLe_

    So_SiMpLe_ Power Member

    Isso msm! já ta a funcar! :x2: desceumpem la sou mta noob nisto é um trabalho de faculdade eng mecanica. Tks!
    Abraços!
     
  10. So_SiMpLe_

    So_SiMpLe_ Power Member

    Boas!
    Bem pelo menos a parte dos utentes já funca!
    Tenho é um problema agora: Quando consulto os dados, aparece numeros como 43000 e tal para o nome e morada que tao em %d e 0 (zero) para os long ints do numero de telefone e BI.
    Isto em vez de aparecer o nome, morada, telefone e BI mesmo do utente.
    Deixo aqui o codigo para verem:

    Código:
    ////REGISTO DE UTENTES
    int regist_utente (void)
    {
     system("cls");
     printf("nome?");
     fflush(stdin);
     gets(list_utente[contador_utentes].nome_utente);
     printf("morada?");
     fflush(stdin);
     gets(list_utente[contador_utentes].morada_utente);
     printf("telef?");
     scanf("%ld",list_utente[contador_utentes].telefone_utente);
     printf("bi?");
     fflush(stdin);
     scanf("%ld",list_utente[contador_utentes].numero_bi);
     contador_utentes++;
     system("pause");
     return gest_utente();
    }
     
    ////INFO DE UTENTES
     
    int info_utente (void)
    {
    int numero;
    system("cls");
    printf("introduza o numero de utente: ");
    scanf ("%d", &numero);
    printf("%d\n", list_utente[numero-1].nome_utente);
    printf("%d\n", list_utente[numero-1].morada_utente);
    printf("%ld\n", list_utente[numero-1].telefone_utente);
    printf("%ld\n", list_utente[numero-1].numero_bi);
    system("pause");
    return gest_utente();
    }
    Obrigado pessoal!!
    Abraço!
     
    Última edição pelo moderador: 29 de Janeiro de 2008
  11. AragTey

    AragTey Power Member

  12. Baderous

    Baderous Banido

    Então queres imprimir uma string e metes %d? Acho melhor meteres %s.
     
  13. So_SiMpLe_

    So_SiMpLe_ Power Member

    É isso msm! tks! :D
    já agora o prog ta.me a dar um erro quando pede o BI do tipo:

    exception segment violation
    Adress 0x4054bd

    isto aparece noutra janela.
    Sabem do que se trata?
    Abraço!
     
  14. AragTey

    AragTey Power Member

    Que faz isto ... return gest_utente(); ??
     
  15. So_SiMpLe_

    So_SiMpLe_ Power Member

    Isso volta ao menu de gestao de utentes, onde tem mais opcoes:

    Código:
    int gest_utente (void)
    {
     int utente;
     do{
     system("cls");
      printf("                   GESTAO DE UTENTES\n\n\n");
      printf("                1- Ver informacao de um utente\n\n");
      printf("                2- Registar novo utente\n\n");
      printf("                3- Alterar dados do utente\n\n");
      printf("                4- Listar informacao de utentes\n\n");
      printf("                5- Regressar ao menu anterior\n\n\n");
      printf("                       Escolha uma opcao: ");
      scanf("%d" , &utente);
    
     switch (utente)
     {
      case 1 : info_utente();
      break;
      case 2 : regist_utente();
      break;
      case 3 : printf("oi"); //alterar_utente();
      break;
      case 4 : printf("oi"); //listar_utente();
      break;
      case 5 : main();
      break;
     }
    }while (utente<1 || utente>5);
    return 0;
    }
    onde tenho o printf("oi"); é onde ainda nao fiz as funcoes correspondentes á alteração e lista de utentes.
    Abraço!

    Já descobri o porquê mas nao percebo. o problema de aparecer os numero ja ficou resolvido, agora quando pede o numero de telefone, bi ou algum que possua long int, ao pedir no programa as informações, se ponho caracteres ele segue, se puser numeros ele dá esse erro. 8|. De resto ta tdo a funcar!
    Alguem me pode so dar uma ajudinha?
    Mto obrigado!
    Cumps
     
    Última edição pelo moderador: 29 de Janeiro de 2008
  16. AragTey

    AragTey Power Member

    Experimenta por o '&'. Não sei se irá funcionar, o melhor é teres uma variável para ler e depois igualas.
     
  17. Baderous

    Baderous Banido

    Isso assim vai mostrar o endereço de memória e não o que ele quer.
     
  18. AragTey

    AragTey Power Member

    Ups tens razão...copiei mal...queria copiar o scanf que ele faz. Obrigado pelo aviso.
     
  19. So_SiMpLe_

    So_SiMpLe_ Power Member

    Boas!
    Já deu! já nao da erro e aceita os numeros e mostra sem problema!
    mto obrigado pessoal!!
    abraços!
     
  20. JarimbaG1S

    JarimbaG1S Power Member

    Estou com um trabalho muito parecido, para não dizer igual, e preciso de ajuda.
    Como altero os dados do utente? (pergunta para o So_SIMple_)
    Sou um autêntico noob nisto...
     

Partilhar esta Página