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

Programa de gestao de stock em C

Discussão em 'Programação' iniciada por mg_anep, 4 de Janeiro de 2008. (Respostas: 13; Visualizações: 5219)

  1. mg_anep

    mg_anep Guest

    Boa tarde.

    Bem precisava de uma ajuda para fazer este programa, segunda feira começam as aulas e nao sei bem como fazer isto.

    Aqui vai:


    Basicamente é este programao para fazer que eu nao sei. :004:

    Se alguem puder ajudar de como começar pelo menos, um esboço, agradecia.
     
  2. HavoC

    HavoC Power Member

    Começa por identificar entidades no enunciado. Podes assumir que existem 2.

    - Produto
    - Armanzem

    Terás implementar as estruturas Produto e Armanzem

    Agora identifica as caracteristicas de cada uma delas:

    Produto:
    -código
    -nome
    -quantidadeEmStock
    -quantidadeMinimaEmStock

    Armanzem
    -numeroMaximoDeTipoDeProdutos
    -Produtos armazenados (estrutura de dados para os armazenar)

    Já é um ponto de partida... o resto é algoritmia.

    Basta iterares a estrutura de dados que contem os produtos (por exemplo um array) com um ciclo e consultas os campos da struct (instância de Produto) presente em cada posição do array. É só if's e for's. Depois podes fazer um menu.

    Espero ter ajudado... fica bem.
     
  3. mg_anep

    mg_anep Guest

    Muito OBRIGADO mesmo



    Ajudou sim.

    cump.
     
  4. mg_anep

    mg_anep Guest

    Bem estou aqui com um problema.

    Queria uma funcao que se introduzir S(Sim) ele continua para introduzir os produtos, e quando introduzo N(Nao) ele para e volta ao menu.

    Eu fiz assim como mostro em baixo, só que se introduzo N ele continua para introduzir outro produto, ou seja é igual se introduzir S ou N, ele continua sempre.


    Se alguem puder ajudar agradeço.
     
  5. Aparicio

    Aparicio /dev/mod
    Staff Member

    Deverá ser if((more == 'n') || (more == 'N')), e no sim a mesma coisa.
    Se puseres && significa que só faz break quando o more for n e N ao mesmo tempo, coisa que é impossível, com o || faz break quer ponhas n ou N.

    Se tens o tens o if((more == 'n') && (more == 'N')) break; não precisas de ter a condição no while.
     
  6. mg_anep

    mg_anep Guest

    Obrigado por estares a ajudar confesso que nao percebo muito de programaçao:lol:, mas continua com o mesmo problema ou seja mudei o && para || no if e ele continua igual, mesmo que carregue no N ele diz para introduzir outro produto.>( Terei de mudar mais alguma coisa além do && para || nos if's??

    Se puderes ajudar obrigado.
     
  7. AragTey

    AragTey Power Member

    Isot deve'ra fazer o que precisas


    Código:
       
    do
       {
          fflush(stdin);
          printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
          scanf("%c",&more);
          printf("\n");
          if((more == 'n') || (more == 'N'))
             break;
       } while ((more == 's') || (more == 'S'));
    
    mas pelo que parece nao vale a pena testares o 'n' porque só quando for 's' é que implica registar um novo produto.

    Agora se quiseres aceitar só respostas 's' ou 'n', tens de por um outro ciclo dentro do while.
     
  8. mg_anep

    mg_anep Guest


    Como tu dizes aragtey, o programa quando introduzo 'N' ele continua para introduzir novo produto, e se puser o 'S' ele repete sempre o printf "(Para introduzir novo produto prima 'S' caso contrario prima 'N')", ate eu introduzir o 'N' que o faz continuar.
    Já nao sei mais como tentar.Não tou a ver onde falha, se quiserem posso mandar o algoritmo.

    Obrigado
     
  9. slack_guy

    slack_guy Power Member

    Já agora, um pormenor: simplifica as mensagens com o utilizador, evita 'entrares em diálogo' com o utilizador quando lhe fazes uma pergunta, sê sucinto e objectivo nas questões que lhe coloques.

    Por exemplo, em vez de:
    "Para introduzir novo produto prima 'S' caso contrario prima 'N' "
    poderia ser:
    "Adicionar produto? s/n "

    Se quisesses assinalar uma opção 'default', poderia ser:
    "Adicionar produto? S/n "
    ou
    "Adicionar produto? s/n "

    Repara: as opções Sim/Não só fazem sentido quando fazes uma pergunta ao utilizador, não quando fazes uma afirmação.
    Sendo uma afirmação, seria qualquer coisa como:
    "Para adicionar novo produto prima 'N', para sair prima 'S'"

    Quando tratares as respostas, e de acordo com a lógica da tua aplicação, provavelmente não vais verificar se o utilizador respondeu 'n'. Bastaria verificares se respondeu 's' ou 'S'. Qualquer outra resposta deveria ser considerada como 'n'ão.

    Por último, se fosse comigo, aceitava como 's'im as seguintes respostas:
    s, S, sim, si, SIM, Sim, SiM, SIm, siM
    Qualquer outra resposta seria 'n'ão :-)
     
  10. Baderous

    Baderous Banido

    Faltava a opção do 'n' ou 'N' no while (está a repetir o printf, agora arranja à tua maneira):

    Código:
    void outro_prod() {
         char more;
         do {
             fflush(stdin);
             printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
             scanf("%c",&more);
             if (more=='n' || more=='N')
                break;
             } [COLOR=Red]while (more!='s' || more!='S' || more!='n' || more!='N');[/COLOR]
             }
     
  11. Aparicio

    Aparicio /dev/mod
    Staff Member

    Código:
    void outro_prod() {
         char more;
         while (1) {
             fflush(stdin);
             printf("Para introduzir novo produto prima 'S' caso contrario prima 'N'\n");
             scanf("%c",&more);
             if (more=='n' || more=='N')
                break;
             }
             }
    
    Isto faz exactamente a mesma coisa.
     
  12. AragTey

    AragTey Power Member

    Todas as solucoes estão correctas se continua a fazer a mesma coisa o problema é de fora, ou seja é de como chamas a rotina void outro_prod().
     
  13. mg_anep

    mg_anep Guest

    Obrigado a todos.

    Ainda nao consegui por isto a funcionar bem, mas já percebi e ja sei que o erro nao está ai.

    cump.
     
  14. Boa Tarde

    Tb estou a faxer o mxm trabalho :( e n tenho muito conhecimento sobre a linguagem c visto n ter tempo para me dedicar apenas ao curso. N consigo faxer a 3ª,4ª,5ª,6ª e 8ª opcao. So sei mxm o basico desta linguagem e tenho imensa dificuldades nestas funcoes.
    Será k me podem ajudar... please :confused:
     

Partilhar esta Página