Ir ao conteúdo
  • Cadastre-se

C++ Simulador de máquina de vendas automática


Ruben Timoteo

Posts recomendados

Elabore um programa em "C++" que simule o funcionamento de uma máquina de venda automática. Deverá ter em conta as seguintes indicações:

- Só aceita moedas de 0.05, 0.10, 0.20, 0.50, 1.00 e 2.00 euros;

- Só dará troco se tiver moedas suficientes para tal;

- Inicialmente a máquina deve ter 5 moedas de 0.05, 0.10, 0.20, 0.50 euros;

- Deve vender 6 produtos diferentes;

- Inicialmente deve estar carregada com 5 unidades de cada produto;

- Deve dar indicações de produto esgotado e troco indisponível.

 

A máquina deve permitir escolher o modo Utilizador ou Manutenção. No primeiro, o utilizador deverá introduzir uma quantia, selecionar produto, receber produto e troco caso seja necessário. No modo manutenção, deverá permitir carregar produtos, carregar moedas, tirar moedas (neste caso deve dizer quantas e o valor total), o acesso a este modo tem que ser feito pela validação de um código de acesso (400855).

 

A parte da manutenção e a parte de dar o troco não estou a conseguir fazer.

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include <conio.h>
extern char resp[ ]="400855";
char rl[40];
int ModoMan(int moe,int cenas)
{

gets(rl);
while(strcmp(rl,resp) !=0)
puts("Resposta errada. Tente de novo.");
gets(rl);

puts("Correcto! ");
}
main()

{
    
    float combeb[5]={1,1.10,1.20,1,0.50};
    int indice,moe,cenas,i;
    float saldo = 0;
    int moeda,creditos;
    int stock[6]={5,5,5,5,5,5};
    float valor[6] = {0.05,0.10,0.20,0.50,1,2};
    int caso = 1;
    int TROCO[6];                                
    float troco;
    int cont;
    int custo=0;
    int quantidade;

system("color 0B");
    printf("%c",201);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",187);
    printf("%c",204);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",185);
    
    while(caso)
    {       
            
            printf("\nSeu saldo Atual e de: euro%.2f\n\n",saldo);
            printf("ESCOLHA A OPCAO:\n\n",186,186);
            printf("0 - Sair\n",186,186);
            printf("1 - Depositar Moeda\n",186,135,198,186);
            printf("2 - Escolher bebidas\n",186,135,198,186);
            printf("3 - Modo Admistrador\n",186,198,186);
            printf("\nOPCAO:",186,186);
            scanf("%i", &caso);

            switch(caso)
            {
                  case 1:
                       {
                           system("cls");
                         printf("\n\nDeposite a sua moeda\n\n");
                         printf("0 - 0.05 centimos\n");
                         printf("1 - 0.10 centimos\n");
                         printf("2 - 0.20 centimos\n");
                         printf("3 - 0.50 centimos\n");
                         printf("4 - 1 Euro\n");
                         printf("5 - 2 Euros\n\n");
                         printf("MOEDA:");
                         scanf("%i",&moeda);
                         saldo = saldo + valor[moeda];
                         break;
                      }
                  case 2:
                      {
                         system("cls");
                         printf("\n\nEscolha a bebida que deseja\n");
                         printf("0 - Sair - 0.50euro\n ");
                         printf("1 - Ice Tea Limao - 1euro\n");
                         printf("2 - Ice tea de pêssego   - 1.10euro\n");
                         printf("3 - Bogo   - 1.20€\n");
                         printf("4 - Agua 1L - 1euro\n -");
                         printf("5 -Bolachas De Agua e sal - 0.50euro\n ");
                         printf("6 -Bolachas  - 0.50euro\n ");
                         printf("bebidas:\n");
                         scanf("%i", &indice);
                         break;
                     }
                   case 3:
                       {
                           printf("Digite o codigo de acesso: ");
                           scanf("%c",&rl);
                           ModoMan(moe,cenas);
                           printf("1- Carregar produtos\n");
        
                           printf("2- Carregar moedas\n");
                           printf("3- Tirar Moedas\n");
               

                        
         
                                  cont = 0; 
                                  printf("\n\nO seu troco e:\n\n");
                                  while(cont<6)
                                  {
                                               printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
                                               cont++;
                                               }    
                                  saldo = 0;                            
                         }
                         
                         {
                                  printf("\n\n====== Saldo Insuficiente ======");

                         }
                       break;
                       }
            if(caso>2)
            {
                      printf("OPCAO INVALIDA!!\n\n");
                      }  
            } 
    if(saldo != 0)
    { 
              cont = 5;
              while (cont >= 0)
              {     
                    TROCO[cont] = 0;
                    while(saldo >= valor[cont])
                    {
                                TROCO[cont] = TROCO[cont]+1;
                                saldo = saldo - valor[cont];
                                }
                    cont = cont -1;
                    }
              cont = 0; 
              printf("\n\nO seu troco e:\n\n");
              while(cont<6)
              {
                           printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
                           cont++;
                           }    
              saldo = 0;  
              }
    printf("\n\nOBRIGADO! VOLTE SEMPRE!\n\n");
    system("PAUSE");

            return 0;
            }

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Ruben Timoteo. Seja bem vindo ao Fórum do Clube do Hardware.

 

1 hora atrás, Ruben Timoteo disse:

A parte da manutenção e a parte de dar o troco não estou a conseguir fazer.

Não está conseguindo é o esperado aqui, concorda? :)

 

Então, qual parte não está conseguindo? onde está com dúvidas? Identifique o problema e em qual parte está com dúvidas para resolver.

 

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Na parte da manuteçao, para carregar os produtos e carregar as moedas e tirar as moedas na maquina, a maquina tem de ter inicialmente 5 moedas de  0.05, 0.10, 0.20, 0.50, 1.00 e 2.00 euros/reais e 5 unidades de cada produto, na parte de dar o troco tambem to com duvida de como fazer, e tenho que entregar tudo feito segunda-feira 

Link para o comentário
Compartilhar em outros sites

Olá @Ruben Timoteo  nesta parte vemos

47 minutos atrás, Ruben Timoteo disse:

to com duvida de como fazer 

é dúvida ou você não sabe fazer? Porque se é dúvida ao menos esboçou solução.

Observo que não examinei teu algoritmo.

Ideia é começa criando um pseudo banco de dados por assim dizer, usando pra isso vetores.

Algo assim:

/** Observe que em ambos os casos o índice é o mesmo na quantidade de moedas
 *  e no detalhe / valores. */
//! Banco de Dados | data base
   unsigned            //< Nos diz: sem-sinal para tipos INT somente positivos.
   int   db_qnt_moedas[6]= {0}; //< contém o número de moedas na máquina.
   float db_lab_moedas[ ]=      //< contém o valor das moedas na máquina.
                           {0.05,0.10,0.20,0.50,1,2};

No momento pensei ser melhor inverter o índice de maneira que o índice 0 represente o maior valor monetário, no caso 2, logo 5 seria o índice de 0.05. Porque assim suponho ser mais produtivo para o algoritmo que seguirá manipulando esse e outro vetores.

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Ruben Timoteo disse:

Nao sei fazer,mas como faço  por exemplo no stock nao tenho moedas e como faço para carregar o stock de moedas de 0.05,0.05,0.10,0.20,0.50,1,2 na manutenao

Neste caso pode ser pelo:

ÍNDICE por meio de um menu e apresentado as opções de moedas, quando optado corretamento do menu solicita após a quantidade a ser adicionada / somada. Exemplo

 

Manutenção - Inserir Moedas

Opções: 0.05[1],0.10[2],0.20[3],0.50[4],1[5],2[6]

Uma variável captura a opção e refaz como índice no vetor stock.

Logo depois solicite uma segunda entrada para quantidade de moedas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Ruben Timoteo, sugiro que inicialmente coloque também para exibir as moedas contidas na máquina e o estoque de cada produto. Dessa forma, ficará mais fácil para acompanhar as atualizações.

obs.: essas informações não necessariamente são para a versão final do programa, a ideia é apenas para o programador ter uma referência dos estoques. Se for o caso, depois é só remover. Vai servir como um "modo desenvolvedor ativado".

 

Sobre:

5 minutos atrás, Ruben Timoteo disse:

Nao sei fazer,mas como faço  por exemplo no stock nao tenho moedas e como faço para carregar o stock de moedas de 0.05,0.05,0.10,0.20,0.50,1,2 na manutenao

Complementando...:

Você precisa atualizar as variáveis que têm os respectivos valores de cada moeda, como citado, lá no vetor stock. É como o cliente inserir moedas na máquina, cada moeda inserida vai para o para o estoque de moedas, correto? E o valor da moeda vai para o saldo do cliente. A diferença da manutenção, é que as moedas inseridas não irão para o saldo, vão apenas atualizar o estoque.

A mesma analogia serve para o produto. Para "vender", a máquina vai subtrair o valor do saldo do cliente E atualizará o estoque do produto. Na manutenção, apenas vai atualizar o produto.

 

 

 

 

Link para o comentário
Compartilhar em outros sites


Epa nao sei se vou conseguir fazer a parte da manutençao eu to no primeiro ano e to a achar complicado essa parte vou ter que fazer aqui case 3:
 

                       {
                           printf("Digite o codigo de acesso: ");
                           scanf("%c",&rl);
                           ModoMan(moe,cenas);
                           printf("1- Carregar produtos\n");
        
                           printf("2- Carregar moedas\n");
                           printf("3- Tirar Moedas\n");

Podem me ajudar no programa ajudando a fazer algumas partes

Link para o comentário
Compartilhar em outros sites

Depurei a primeira parte do teu código @Ruben Timoteo

A função ModoMan contém loop infinito para senha errada.

while(strcmp(rl,resp) != 0)//< #ERRO: Se diferente da senha interna, Loop Infinito.
        puts("Resposta errada. Tente de novo.");//< Output impresso sem limite.

Sei que essa não é a questão, porém veja aí :tw_confounded:

Link para o comentário
Compartilhar em outros sites

Para ser sincero a solução para seu problema é muito simples para nós que já codificamos a muito tempo, entretanto a fórum tem alguns restrições que me impedem de ajudar com eficiência, chega a dar angústia porque me sinto em macha lenta tentando fazer você entender quando na verdade é mais fácil s objetivo demostrar com apenas uma postagem tudo já seria resolvido, contudo esse parece ser o problema aqui. Só lhe desejo melhor sorte.

Desculpe por não ajuda-lo devidamente.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Ruben Timoteo.

 

Poste seu código atual e onde está com dúvidas... se você não disse onde está com problemas, não temos como te ajudar.

 

 

Por exemplo:

 

Sobre:

22 horas atrás, Ruben Timoteo disse:

Epa nao sei se vou conseguir fazer a parte da manutençao eu to no primeiro ano e to a achar complicado essa parte vou ter que fazer aqui case 3:


                       {
                           printf("Digite o codigo de acesso: ");
                           scanf("%c",&rl);
                           ModoMan(moe,cenas);
                           printf("1- Carregar produtos\n");
        
                           printf("2- Carregar moedas\n");
                           printf("3- Tirar Moedas\n");

Veja, você só postou um código e disse que "não sabe se vai conseguir", Ok. Mas o quê você não está conseguindo fazer? é o erro que @Mauro Britivaldo citou?

 

21 horas atrás, Mauro Britivaldo disse:

A função ModoMan contém loop infinito para senha errada.


while(strcmp(rl,resp) != 0)//< #ERRO: Se diferente da senha interna, Loop Infinito.
        puts("Resposta errada. Tente de novo.");//< Output impresso sem limite.

 

Se for isso, você poderia dizer algo como:

Citação

 

Lá no item 3, ao dar uma resposta errada, fica aparecendo a frase de "Resposta errada. Tente de novo." sem parar... o programa não está perguntando novamente. O que pode está errado?".

Entende? você precisa apontar onde você acha que está com erro...

Se for isso, veja:

 

int ModoMan(int moe,int cenas)
{
    gets(rl);
    while(strcmp(rl,resp) !=0)
        puts("Resposta errada. Tente de novo.");
    gets(rl);
    puts("Correcto! ");
}

Você simplesmente esqueceu das { } do while. Ficaria algo como:

int ModoMan(int moe,int cenas)
{
    gets(rl);
    while(strcmp(rl,resp) !=0)
    {
        puts("Resposta errada. Tente de novo.");
        gets(rl);
    }
    puts("Correcto! ");
}

Simples assim. Mas é você que precisa nos indicar. :)

 

 

 

Sobre:

22 horas atrás, Ruben Timoteo disse:

Podem me ajudar no programa ajudando a fazer algumas partes

Sim. Claro, estamos aqui para isso... mas você precisa dizer onde precisa de ajuda e porque. Dizer só algo como "não consegue" não é parâmetro, ou seja, precisamos saber porque e onde.. etc.

 

 

Vamos lá...

Peguei o seu último código completo e apenas reindentei, veja:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include <conio.h>
#include <string.h> //no meu compitlador precisou para poder reconhecer o srtcmp()
extern char resp[]="400855";
char rl[40];
int ModoMan(int moe,int cenas)
{
    gets(rl);
    while(strcmp(rl,resp) !=0) //<-- aqui já inseri as chavas que estavam faltando
    {
        puts("Resposta errada. Tente de novo.");
        gets(rl);
    }
    puts("Correcto! ");
}

main()
{
    float combeb[5]={1,1.10,1.20,1,0.50};
    int indice,moe,cenas,i;
    float saldo = 0;
    int moeda,creditos;
    int stock[6]={5,5,5,5,5,5};
    float valor[6] = {0.05,0.10,0.20,0.50,1,2};
    int caso = 1;
    int TROCO[6];                                
    float troco;
    int cont;
    int custo=0;
    int quantidade;
    system("color 0B");
    printf("%c",201);
    for(i=0;i<30;i++)
        printf("%c",205);
    printf("%c\n",187);
    printf("%c",204);
    for(i=0;i<30;i++)
        printf("%c",205);
    printf("%c\n",185);
    while(caso)
    {      
        printf("\nSeu saldo Atual e de: euro%.2f\n\n",saldo);
        printf("ESCOLHA A OPCAO:\n\n",186,186);
        printf("0 - Sair\n",186,186);
        printf("1 - Depositar Moeda\n",186,135,198,186);
        printf("2 - Escolher bebidas\n",186,135,198,186);
        printf("3 - Modo Admistrador\n",186,198,186);
        printf("\nOPCAO:",186,186);
        scanf("%i", &caso);
        switch(caso)
        {
            case 1:
            {
                system("cls");
                printf("\n\nDeposite a sua moeda\n\n");
                printf("0 - 0.05 centimos\n");
                printf("1 - 0.10 centimos\n");
                printf("2 - 0.20 centimos\n");
                printf("3 - 0.50 centimos\n");
                printf("4 - 1 Euro\n");
                printf("5 - 2 Euros\n\n");
                printf("MOEDA:");
                scanf("%i",&moeda);
                saldo = saldo + valor[moeda];
                break;
            }
            case 2:
            {
                system("cls");
                printf("\n\nEscolha a bebida que deseja\n");
                printf("0 - Sair - 0.50euro\n ");
                printf("1 - Ice Tea Limao - 1euro\n");
                printf("2 - Ice tea de pêssego   - 1.10euro\n");
                printf("3 - Bogo   - 1.20€\n");
                printf("4 - Agua 1L - 1euro\n -");
                printf("5 -Bolachas De Agua e sal - 0.50euro\n ");
                printf("6 -Bolachas  - 0.50euro\n ");
                printf("bebidas:\n");
                scanf("%i", &indice);
                break;
            }
            case 3:
            {
                printf("Digite o codigo de acesso: ");
                scanf("%c",&rl);
                ModoMan(moe,cenas);
                printf("1- Carregar produtos\n");               
                printf("2- Carregar moedas\n");
                printf("3- Tirar Moedas\n");
                cont = 0; 
                printf("\n\nO seu troco e:\n\n");
                while(cont<6)
                {
                    printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
                    cont++;
                }
                saldo = 0;                            
            }
            {
            printf("\n\n====== Saldo Insuficiente ======");    
            }
            break;
        }
        if(caso>2)
        {
            printf("OPCAO INVALIDA!!\n\n");
        }  
    }
    if(saldo != 0)
    { 
        cont = 5;
        while (cont >= 0)
        {     
            TROCO[cont] = 0;
            while(saldo >= valor[cont])
            {
                TROCO[cont] = TROCO[cont]+1;
                saldo = saldo - valor[cont];
            }
            cont = cont -1;
        }
        cont = 0; 
        printf("\n\nO seu troco e:\n\n");
        while(cont<6)
        {
            printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
            cont++;
        }    
        saldo = 0;  
    }
    printf("\n\nOBRIGADO! VOLTE SEMPRE!\n\n");
    system("PAUSE");    
    return 0;
}

obs.: Só alterei a parte do erro citado acima lá no ModoMan().

 

 

 

Em relação à manutenção, lá no item 3, após colocar a senha, aparece::

Em 17/02/2018 às 08:47, Ruben Timoteo disse:

O seu troco e:

MOEDAS DE euro0.05: 40
MOEDAS DE euro0.10: 0
MOEDAS DE euro0.20: 1
MOEDAS DE euro0.50: 0
MOEDAS DE euro1.00: 0
MOEDAS DE euro2.00: 0

Se você observar os números verás que não está batendo, já que deveria ter 5 moedas de cada, correto?  UMA DÚVIDA SUA SERIA ALGO:

 

Citação

Eu coloquei para exibir as moedas, mas está apresentando valores errado. :(

Tá conseguindo entender a linha de raciocínio?

 

Daí, analisaríamos o trecho... veja, se você quer imprimir as moedas, qual vetor precisaria usar? Resp: vetor das moedas! :D. Logo, stock[].

 

O trecho poderia ficar assim:

                while(cont<6)
                {
                    //printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
                    printf("MOEDAS DE %.2f: %i\n", valor[cont], stock[cont]);
                    cont++;
                }

Entende? Foque onde está o erro, tente entender o que está acontecendo.. provavelmente você mesmo veria que estava apenas usando o vetor errado... ai, se não conseguir, posta aqui onde está a dúvida... o que não pode é ficar esperando que alguém procure os possíveis erros e resolva tudo para você. ;)

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Simon Viegas disse:

o que não pode é ficar esperando que alguém procure os possíveis erros e resolva tudo para você. ;)

 

Sim você tem toda a razao o problema e que eu tenho que o entregar amanha e ja tava a ficar nervoso, na parte de comprar as bebidas o meu objetivo é quando o utilizador comprar alguma bebida e nao quiser comprar mais nada ele saia e que a maquina le deia o troco logo e nao ta a aconteer isso:(

Link para o comentário
Compartilhar em outros sites

Ta aqui deve ser no case 2

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include <conio.h>
#include <string.h>
extern char resp[]="400855";
char rl[40];
int ModoMan(int moe,int cenas)
{
    gets(rl);
    while(strcmp(rl,resp) !=0) //<-- aqui já inseri as chavas que estavam faltando
    {
        puts("Resposta errada. Tente de novo.");
        gets(rl);
    }
    puts("Correcto! ");
}

main()
{
    float combeb[5]={1,1.10,1.20,1,0.50};
    int indice,moe,cenas,i;
    float saldo = 0;
    int moeda,creditos;
    int stock[6]={5,5,5,5,5,5};
    float valor[6] = {0.05,0.10,0.20,0.50,1,2};
    int caso = 1;
    int TROCO[6];                                
    float troco;
    int cont;
    int custo=0;
    int quantidade;
    system("color 0B");
    printf("%c",201);
    for(i=0;i<30;i++)
        printf("%c",205);
    printf("%c\n",187);
    printf("%c",204);
    for(i=0;i<30;i++)
        printf("%c",205);
    printf("%c\n",185);
    while(caso)
    {      
        printf("\nSeu saldo Atual e de: euro%.2f\n\n",saldo);
        printf("ESCOLHA A OPCAO:\n\n",186,186);
        printf("0 - Sair\n",186,186);
        printf("1 - Depositar Moeda\n",186,135,198,186);
        printf("2 - Escolher bebidas\n",186,135,198,186);
        printf("3 - Modo Admistrador\n",186,198,186);
        printf("\nOPCAO:",186,186);
        scanf("%i", &caso);
        switch(caso)
        {
            case 1:
            {
                system("cls");
                printf("\n\nDeposite a sua moeda\n\n");
                printf("0 - 0.05 centimos\n");
                printf("1 - 0.10 centimos\n");
                printf("2 - 0.20 centimos\n");
                printf("3 - 0.50 centimos\n");
                printf("4 - 1 Euro\n");
                printf("5 - 2 Euros\n\n");
                printf("MOEDA:");
                scanf("%i",&moeda);
                saldo = saldo + valor[moeda];
                break;
            }
            case 2:
            {
               while(indice<0)
                system("cls");
                printf("\n\nEscolha a bebida que deseja\n");
                printf("0 - Sair - 0.50euro\n ");
                printf("1 - Ice Tea Limao - 1euro\n");
                printf("2 - Ice tea de pêssego   - 1.10euro\n");
                printf("3 - Bogo   - 1.20€\n");
                printf("4 - Agua 1L - 1euro\n -");
                printf("5 -Bolachas De Agua e sal - 0.50euro\n ");
                printf("6 -Bolachas  - 0.50euro\n ");
                printf("bebidas:\n");
                scanf("%i", &indice);
                break;
            }
            case 3:
            {
                printf("Digite o codigo de acesso: ");
                scanf("%c",&rl);
                ModoMan(moe,cenas);
                printf("1- Carregar produtos\n");               
                printf("2- Carregar moedas\n");
                printf("3- Tirar Moedas\n");
                cont = 0; 
                printf("\n\nO seu troco e:\n\n");
                while(cont<6)
                {
                    printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
                    cont++;
                }
                saldo = 0;                            
            }
            {
            printf("\n\n====== Saldo Insuficiente ======");    
            }
            break;
        }
      
}
}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Tá, o que no case 2 não está funcionado???  O que você tentou fazer???

 

 

Vamos lá:

            case 2:
            {
                indice = -1; //inicializa a variável com algum valor para poder entrar no while
                while(indice!=0) //a condição de para é quando escolher SAIR, logo, deve continuar enquanto for diferente de 0
                { //faltou a {} do while
                    system("cls");
                    printf("\n\nEscolha a bebida que deseja\n");
                    printf("0 - Sair - 0.50 euro\n");
                    printf("1 - Ice Tea Limao - 1 euro\n");
                    printf("2 - Ice tea de pêssego   - 1.10 euro\n");
                    printf("3 - Bogo   - 1.20 euro\n");
                    printf("4 - Agua 1L - 1euro\n");
                    printf("5 - Bolachas De Agua e sal - 0.50 euro\n");
                    printf("6 - Bolachas  - 0.50 euro\n");
                    printf("bebidas:\n");
                    scanf("%i", &indice);
                }
                break;
            }

Pronto. Teoricamente o while está corrigido:

- faltou você inicializar a variável indice;

- fatou as {} do while;

- a condição do while estava errada.

 

Alguma dúvida até ai?

 

Pronto. Agora precisa você fazer o mais importante, que é implementar a venda do item. Implemente os passos necessários após ter escolhido um item válido.

 

No aguardo.

 

Link para o comentário
Compartilhar em outros sites

Voltando na parte da manutenção, por exemplo na maquina as bolachas esgotaram se, na parte de carregar produtos como eu carrego as bolachas do stock.

 

         case 3:
                       {
                           printf("Digite o codigo de acesso: ");
                           scanf("%c",&rl);
                           ModoMan(moe,cenas);
                           printf("1- Carregar produtos\n");
                           printf("2- Carregar moedas\n");
                           
                           printf("3- Tirar Moedas\n");
                           
                         }
                       break;
                       }

Código feito ate agora:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include <conio.h>
extern char resp[ ]="400855";
char rl[40];
int ModoMan(int moe,int cenas)
{
    gets(rl);
    while(strcmp(rl,resp) !=0)
    {
        puts("Palavra pass Errada Tente de Novo.");
        gets(rl);
    }
    puts("Correcto! ");
}
main()

{
    
    float combeb[5]={1,1.10,1.20,1,0.50};
    int indice,moe,cenas,i;
    float saldo = 0;
    int moeda,creditos;
    int stock[6]={5,5,5,5,5,5};
    float valor[6] = {0.05,0.10,0.20,0.50,1,2};
    int caso = 1;
    int TROCO[6];                                
    float troco;
    int cont;
    int custo=0;
    int quantidade;

system("color 0B");
    printf("%c",201);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",187);
    printf("%c",204);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",185);
    
    while(caso)
    {       
            
            printf("\nSeu saldo Atual e de: euro%.2f\n\n",saldo);
            printf("ESCOLHA A OPCAO:\n\n",186,186);
            printf("0 - Sair\n",186,186);
            printf("1 - Depositar Moeda\n",186,135,198,186);
            printf("2 - Escolher bebidas\n",186,135,198,186);
            printf("3 - Modo Admistrador\n",186,198,186);
            printf("\nOPCAO:",186,186);
            scanf("%i", &caso);

            switch(caso)
            {
                  case 1:
                       {
                           system("cls");
                         printf("\n\nDeposite a sua moeda\n\n");
                         printf("0 - 0.05 centimos\n");
                         printf("1 - 0.10 centimos\n");
                         printf("2 - 0.20 centimos\n");
                         printf("3 - 0.50 centimos\n");
                         printf("4 - 1 Euro\n");
                         printf("5 - 2 Euros\n\n");
                         printf("MOEDA:");
                         scanf("%i",&moeda);
                         saldo = saldo + valor[moeda];
                         break;
                      }
                   case 2:
            {
                indice = -1; 
                while(indice!=0) 
                { 
                    system("cls");
                    printf("\n\nEscolha a bebida que deseja\n");
                    printf("0 - Para Sair - \n");
                    printf("1 - Ice Tea Limao - 1 euro\n");
                    printf("2 - Ice tea de pêssego   - 1.10 euro\n");
                    printf("3 - Bogo   - 1.20 euro\n");
                    printf("4 - Agua 1L - 1euro\n");
                    printf("5 - Bolachas De Agua e sal - 0.50 euro\n");
                    printf("6 - Bolachas  - 0.50 euro\n");
                    printf("bebidas:\n");
                    scanf("%i", &indice);
                }
                break;
            }
                   case 3:
                       {
                           printf("Digite o codigo de acesso: ");
                           scanf("%c",&rl);
                           ModoMan(moe,cenas);
                           printf("1- Carregar produtos\n");
                           printf("2- Carregar moedas\n");
                           
                           printf("3- Tirar Moedas\n");
                           
                         }
                       break;
                       }
            if(caso>2)
            {
                      printf("OPCAO INVALIDA!!\n\n");
                      }  
            } 
    if(saldo != 0)
    { 
              cont = 5;
              while (cont >= 0)
              {     
                    TROCO[cont] = 0;
                    while(saldo >= valor[cont])
                    {
                                TROCO[cont] = TROCO[cont]+1;
                                saldo = saldo - valor[cont];
                                }
                    cont = cont -1;
                    }
              cont = 0; 
              printf("\n\nO seu troco e:\n\n");
              while(cont<6)
              {
                           printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
                           cont++;
                           }    
              saldo = 0;  
              }
    printf("\n\nOBRIGADO! VOLTE SEMPRE!\n\n");
    system("PAUSE");

            return 0;
            }
    

        

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Ruben Timoteo.

 

Segue o seu código reindentado com pequenas alterações... Favor analisar.

 

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include <conio.h>
#include <string.h>
//extern char resp[ ]="400855";    tem algum motivo para ser "extern"???
char resp[ ]="400855";
char rl[40];
int ModoMan(int moe,int cenas)
{
    gets(rl);
    while(strcmp(rl,resp) !=0)
    {
        puts("Palavra pass Errada Tente de Novo.");
        gets(rl);
    }
    puts("Correto!");
}

main()
{  
    float combeb[5]={1,1.10,1.20,1,0.50};
    int indice,moe,cenas,i;
    float saldo = 0;
    int moeda,creditos;
    int stock[6]={5,5,5,5,5,5};
    float valor[6] = {0.05,0.10,0.20,0.50,1,2};
    int caso = 1;
    int TROCO[6];                                
    float troco;
    int cont;
    int custo=0;
    int quantidade;

    system("color 0B");
    printf("%c",201);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",187);
    printf("%c",204);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",185);    
    while(caso)
    {       
        system("cls");
        printf("\nSaldo Atual: %.2f Euros\n\n",saldo);
        printf("ESCOLHA A OPCAO:\n\n",186,186);
        printf("0 - Sair\n",186,186);
        printf("1 - Depositar Moeda\n",186,135,198,186);
        printf("2 - Escolher bebidas\n",186,135,198,186);
        printf("3 - Modo Admistrador\n",186,198,186);
        printf("\nOPCAO:",186,186);
        scanf("%i", &caso);
        
        switch(caso)
        {
            case 1:
            {
                system("cls");
                printf("\n\nDeposite a sua moeda\n\n");
                printf("1 - 0.05 Euros\n");
                printf("2 - 0.10 Euros\n");
                printf("3 - 0.20 Euros\n");
                printf("4 - 0.50 Euros\n");
                printf("5 - 1.00 Euro \n");
                printf("6 - 2.00 Euros\n\n");
                printf("MOEDA:"); scanf("%i",&moeda);
                if ((moeda>=1) && (moeda<=6)) { //delimita a faixa de códigos válidos
                    saldo = saldo + valor[moeda-1];
                }
                else
                    {
                        printf("MOEDA INVÁLIDA - Favor recolher na bandeja de 'troco'");
                        getch();
                    }
                break;
            }
            
            case 2:
            {
                indice = -1; 
                while (indice!=0) 
                { 
                    system("cls");
                    printf("\n\nEscolha a bebida que deseja       \n");
                    printf("0 - Para Sair -                       \n");
                    printf("1 - Ice Tea Limao          - 1.00 euro\n");
                    printf("2 - Ice tea de pêssego     - 1.10 euro\n");
                    printf("3 - Bogo                   - 1.20 euro\n");
                    printf("4 - Agua 1L                - 1.00 euro\n");
                    printf("5 - Bolachas De Agua e sal - 0.50 euro\n");
                    printf("6 - Bolachas               - 0.50 euro\n");
                    printf("Código : "); scanf("%i", &indice);
                }
                break;
            }
            
            case 3:
            {
                printf("Digite o codigo de acesso: ");
                scanf("%c",&rl);
                ModoMan(moe,cenas);
                printf("1- Carregar produtos\n");
                printf("2- Carregar moedas  \n");
                printf("3- Tirar Moedas     \n");
                break;
            }
        }
        if(caso>2)
        {
            printf("OPCAO INVALIDA!!");
            getch();
        }
    }
    if(saldo != 0)
    { 
        cont = 5;
        while (cont >= 0)
        {     
            TROCO[cont] = 0;
            while(saldo >= valor[cont])
            {
                TROCO[cont] = TROCO[cont]+1;
                saldo = saldo - valor[cont];
            }
            cont = cont -1;
        }
        cont = 0; 
        printf("\n\nO seu troco e:\n\n");
        while(cont<6)
        {
            printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
            cont++;
        }
        saldo = 0;  
    }
    printf("\n\nOBRIGADO! VOLTE SEMPRE!\n\n");
    system("PAUSE");
    return 0;
}

 

Sugiro que faça as novas alterações a partir desse código. Já copia ele e dar uma revisada nas alterações... mantenha a indentação nesse padrão!! Beleza?

 

 

Sobre:

1 hora atrás, Ruben Timoteo disse:

Voltando na parte da manutenção, por exemplo na maquina as bolachas esgotaram se, na parte de carregar produtos como eu carrego as bolachas do stock.

O carregamento do estoque de bolachas itens segue a mesma lógica para o carregamento do estoque de moedas... Vai lá no vetor do estoque de itens atualiza.

 

Vamos focar primeiro no estoque de moedas...

Pronto, após digitar a senha correta, você vai perguntar qual moeda quer inserir... é a mesma lógica do item 1, só que você não vai atualizar o valor, após ler a moeda, vai na posição onde essa moeda está e adiciona mais 1. Algo como:

stock[moeda]+=1

obs.: veja que lá no item 1, você também precisa atualiza a quantidade de moedas!!! Mas deixa pra lá por enquanto... foque apenas em fazer a manutenção de moedas funcionar.

 

 

 

@Ruben Timoteo, tenta implementar a atualização de moedas. Se tiver alguma dúvida, informa onde está... Para posta um código, utilizar o botão <> lá na barra de ferramentas!

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olhe o item 3 como está:

            case 3:
            {
                printf("Digite o codigo de acesso: ");
                scanf("%c",&rl);
                ModoMan(moe,cenas);
                printf("1- Carregar produtos\n");
                printf("2- Carregar moedas  \n");
                printf("3- Tirar Moedas     \n");
                break;
            }

Ou seja, não tá fazendo nada... após ler a senha, imprime 3 linhas e fecha!!! Você precisa implementar o que disse:

 

35 minutos atrás, Simon Viegas disse:

Vamos focar primeiro no estoque de moedas...

Pronto, após digitar a senha correta, você vai perguntar qual moeda quer inserir... é a mesma lógica do item 1, só que você não vai atualizar o valor, após ler a moeda, vai na posição onde essa moeda está e adiciona mais 1. Algo como:

 

O código não se autoconstrói... :D

 

Sobre a mensagem de erro, apague esse trecho:

        if(caso>2)
        {
            printf("OPCAO INVALIDA!!");
            getch();
        }

Depois ajusta isso... se preocupe em fazer o carregamentos das moedas... lembrando, esse item está em construção, você tem que implementar a lógica lá...

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

@Simon Viegas Quando eu digito a senha aparece o que esta ai na imagem, ele nao ta a dar o troco certo ja tive a ver e nao acho qual é o problema

Capturar.PNG

 

 

Codigo Ate Agora
 

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include <conio.h>
#include <string.h>
char resp[ ]="400855";
char rl[40];
int ModoMan(int moe,int cenas)
{
    gets(rl);
    while(strcmp(rl,resp) !=0)
    {
        puts("Palavra pass Errada Tente de Novo.");
        gets(rl);
    }
    puts("Correto!");
}

main()
{  
    float combeb[5]={1,1.10,1.20,1,0.50};
    int indice,moe,cenas,i;
    float saldo = 0;
    int moeda,creditos;
    int stock[6]={5,5,5,5,5,5};
    float valor[6] = {0.05,0.10,0.20,0.50,1,2};
    int caso = 1;
    int TROCO[6];                                
    float troco;
    int cont;
    int custo=0;
    int quantidade;

    system("color 0B");
    printf("%c",201);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",187);
    printf("%c",204);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",185);    
    while(caso)
    {       
        system("cls");
        printf("\nSaldo Atual: %.2f Euros\n\n",saldo);
        printf("ESCOLHA A OPCAO:\n\n",186,186);
        printf("0 - Sair\n",186,186);
        printf("1 - Depositar Moeda\n",186,135,198,186);
        printf("2 - Escolher bebidas\n",186,135,198,186);
        printf("3 - Modo Admistrador\n",186,198,186);
        printf("\nOPCAO:",186,186);
        scanf("%i", &caso);
        
        switch(caso)
        {
            case 1:
            {
                system("cls");
                printf("\n\nDeposite a sua moeda\n\n");
                printf("1 - 0.05 Euros\n");
                printf("2 - 0.10 Euros\n");
                printf("3 - 0.20 Euros\n");
                printf("4 - 0.50 Euros\n");
                printf("5 - 1.00 Euro \n");
                printf("6 - 2.00 Euros\n\n");
                printf("MOEDA:"); scanf("%i",&moeda);
                if ((moeda>=1) && (moeda<=6)) { //delimita a faixa de códigos válidos
                    saldo = saldo + valor[moeda-1];
                }
                else
                    {
                        printf("MOEDA INVÁLIDA - Por Favor digite Novamente ");
                        getch();
                    }
                break;
            }
            
            case 2:
            {
                indice = -1; 
                while (indice!=0) 
                { 
                    system("cls");
                    printf("\n\nEscolha a bebida que deseja       \n");
                    printf("0 - Para Sair -                       \n");
                    printf("1 - Ice Tea Limao          - 1.00 euro\n");
                    printf("2 - Ice tea de pêssego     - 1.10 euro\n");
                    printf("3 - Bogo                   - 1.20 euro\n");
                    printf("4 - Agua 1L                - 1.00 euro\n");
                    printf("5 - Bolachas De Agua e sal - 0.50 euro\n");
                    printf("6 - Bolachas               - 0.50 euro\n");
                    printf("Codigo : "); scanf("%i", &indice);
                }
                break;
            }
            
            case 3:
            {
                printf("Digite o codigo de acesso: ");
                scanf("%c",&rl);
                ModoMan(moe,cenas);
                printf("1- Carregar produtos\n");
                printf("2- Carregar moedas  \n");
                printf("3- Tirar Moedas     \n");
                break;
            }
        }
    
      
    {
    
    if(saldo != 0)
    
        cont = 5;
        while (cont >= 0)
        {     
            TROCO[cont] = 0;
            while(saldo >= valor[cont])
            {
                TROCO[cont] = TROCO[cont]+1;
                saldo = saldo - valor[cont];
            }
            cont = cont -1;
        }
        cont = 0; 
        printf("\n\nO seu troco e:\n\n");
        while(cont<6)
        {
            printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
            cont++;
        }
        saldo = 0;  
    }
    printf("\n\nOBRIGADO! VOLTE SEMPRE!\n\n");
    system("PAUSE");
    return 0;
}
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Estranho... só se alterou alguma coisa por engano.

 

Tome esse código como base:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include <conio.h>
#include <string.h>
//extern char resp[ ]="400855";    tem algum motivo para ser "extern"???
char resp[ ]="400855";
char rl[40];
//int ModoMan(int moe,int cenas)
void verificarSenha()
{
    gets(rl);
    while(strcmp(rl,resp) !=0)
    {
        puts("Palavra pass Errada Tente de Novo.");
        gets(rl);
    }
    puts("Correto!");
}

main()
{  
    float combeb[5]={1,1.10,1.20,1,0.50};
    int indice,moe,cenas,i;
    float saldo = 0;
    int moeda,creditos;
    int stock[6]={5,5,5,5,5,5};
    float valor[6] = {0.05,0.10,0.20,0.50,1,2};
    int caso = 1;
    int TROCO[6];                                
    float troco;
    int cont;
    int custo=0;
    int quantidade;

    system("color 0B");
    printf("%c",201);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",187);
    printf("%c",204);
    for(i=0;i<30;i++)
       printf("%c",205);
    printf("%c\n",185);    
    while(caso)
    {       
        system("cls");
        printf("\nSaldo Atual: %.2f Euros\n\n",saldo);
        printf("ESCOLHA A OPCAO:\n\n",186,186);
        printf("0 - Sair\n",186,186);
        printf("1 - Depositar Moeda\n",186,135,198,186);
        printf("2 - Escolher bebidas\n",186,135,198,186);
        printf("3 - Modo Admistrador\n",186,198,186);
        printf("\nOPCAO:",186,186);
        scanf("%i", &caso);
        
        switch(caso)
        {
            case 1:
            {
                system("cls");
                printf("\n\nDeposite a sua moeda\n\n");
                printf("1 - 0.05 Euros\n");
                printf("2 - 0.10 Euros\n");
                printf("3 - 0.20 Euros\n");
                printf("4 - 0.50 Euros\n");
                printf("5 - 1.00 Euro \n");
                printf("6 - 2.00 Euros\n\n");
                printf("MOEDA:"); scanf("%i",&moeda);
                if ((moeda>=1) && (moeda<=6)) { //delimita a faixa de códigos válidos
                    saldo = saldo + valor[moeda-1];
                }
                else
                    {
                        printf("MOEDA INVÁLIDA - Favor recolher na bandeja de 'troco'");
                        getch();
                    }
                break;
            }
            
            case 2:
            {
                indice = -1; 
                while (indice!=0) 
                { 
                    system("cls");
                    printf("\n\nEscolha a bebida que deseja       \n");
                    printf("0 - Para Sair -                       \n");
                    printf("1 - Ice Tea Limao          - 1.00 euro\n");
                    printf("2 - Ice tea de pêssego     - 1.10 euro\n");
                    printf("3 - Bogo                   - 1.20 euro\n");
                    printf("4 - Agua 1L                - 1.00 euro\n");
                    printf("5 - Bolachas De Agua e sal - 0.50 euro\n");
                    printf("6 - Bolachas               - 0.50 euro\n");
                    printf("Código : "); scanf("%i", &indice);
                }
                break;
            }
            
                case 3:
                {
                    printf("Digite o codigo de acesso: ");
                    scanf("%c",&rl);
                    //ModoMan(moe,cenas);
                    verificarSenha();
                    printf("1- Carregar produtos\n");
                    printf("2- Carregar moedas  \n");
                    printf("3- Tirar Moedas     \n");
                    
                    
                    //aqui você implementa o usuário escolhendo o item 2
                    
                    
                    getch(); //aguardar uma tecla ser pressionada
                    break;
                }
        }
    }
    if(saldo != 0)
    { 
        cont = 5;
        while (cont >= 0)
        {     
            TROCO[cont] = 0;
            while(saldo >= valor[cont])
            {
                TROCO[cont] = TROCO[cont]+1;
                saldo = saldo - valor[cont];
            }
            cont = cont -1;
        }
        cont = 0; 
        printf("\n\nO seu troco e:\n\n");
        while(cont<6)
        {
            printf("MOEDAS DE euro%.2f: %i\n", valor[cont], TROCO[cont]);
            cont++;
        }
        saldo = 0;
    }
    printf("\n\nOBRIGADO! VOLTE SEMPRE!\n\n");
    system("PAUSE");
    return 0;
}

 

Teste o acesso no item 3. Após inserir senha, vai aguardar uma tecla ser pressionada, e vai voltar pro menu.

 

Pronto, aí implementa  a parte para atualizar as moedas.

 

obs.: após editar, poste o item 3 completo aqui para analisarmos.

 

 

No aguardo.

adicionado 6 minutos depois
12 minutos atrás, Ruben Timoteo disse:

Codigo Ate Agora

O código vi depois... É isso mesmo, deve ter alterado algum coisa... mas para não perder tempo, use esse código acima.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas Posso Fazer assim 

case 3:
                {
                    printf("Digite o codigo de acesso: ");
                    scanf("%c",&rl);
                    //ModoMan(moe,cenas);
                    verificarSenha();   
                    printf("2- Carregar moedas e tirar moedas \n:  ",stock);
                    printf("1 - Moedas Disponiveis 0.05 Euros\n:  ",stock);
                    printf("2 - Moedas Disponiveis 0.10 Euros\n:  ",stock);
                    printf("3 - Moedas Disponiveis 0.20 Euros\n:  ",stock);
                    printf("4 - Moedas Disponiveis 0.50 Euros\n:  ",stock);
                    printf("5 - Moedas Disponiveis 1.00 Euro \n:  ",stock);
                    printf("6 - Moedas Disponiveis 2.00 Euros\n\n:  ",stock);
                    
                
                    
                    //aqui você implementa o usuário escolhendo o item 2
                    
                    
                    getch(); //aguardar uma tecla ser pressionada
                    break;
                }

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Ruben Timoteo

 

1) Para postar um código, favor utilizar a tag CODE. Basta pressionar o botão <>. OK?

2)

10 minutos atrás, Ruben Timoteo disse:

Posso Fazer assim 

Pode fazer o que?

O que o código acima deveria fazer? está fazendo o que você quis?

adicionado 30 minutos depois

@Ruben Timoteo, para adiantar, vou responder a sua dúvida:

 

Citação

Por exemplo eu deposito na maquina 2euros/reais,compro uma bebida/refrigerante a 1euro/real, a maquina ta a dar 2 euros/reais ao enves de dar 1 euro/real o troco ta mal,, e depois disso se reparar o saldo da maquina fica la na mesma nao dimunui nao sai fica la os dois euros/reais na mesma

Então, ESTAMOS TRATANDO DA MANUTENÇÃO DAS MOEDAS, isso não tem nada a ver!!! Esqueça isso!!!

 

Cadê o foco?

 

O que está sendo proposto é a atualização das moedas!!! Tem que resolver o que você quer fazer... ou ver essa parte, ou ver as moedas... você que decide.

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...