Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
dedekid

C Programa de fluxograma de caixa

Recommended Posts

Postado (editado)

Boa tarde galera, comecei a fazer ads no começo do ano, porém meu professor passou uma tarefa para fazer um programa de caixa em C, e eu não estou entendendo muito bem, não vim aqui atrás de código pronto, caso alguém tenha um maior entendimento sobre o assunto, poderia me explicar?

 

Até agora, estou empacado aqui, e não consigo avançar.

 

 

a.png

Editado por dedekid

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde @dedekid

 

Bem seu código está um pouco estranho. Tenta pensar assim, a pessoa ela vai obrigatoriamente ter que digitar um produto? se sim seria uma boa você por o "DO WHILE", se não, seria uma boa você colocar a opção da pessoa não entrar no "WHILE".

Depois dentro do loop "WHILE" você vai ter que pegar o código do produto e dar a escolha dele sair do loop ou não e ai quando ele sair do loop você mostra o "Fim da compra".

 

Se parecer um pouco confuso é só falar que eu tento explicar de outro jeito.

 

Espero ter ajudado :D

 

Off topic: Eu também cursei ADS kkkkkk

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#

1 hora atrás, dedekid disse:

Boa tarde galera, comecei a fazer ads no começo do ano, porém meu professor passou uma tarefa para fazer um programa de caixa em C, e eu não estou entendendo muito bem...

 

Por favor, poste o enunciado completo para termos uma referência.

 

 

 

2#

1 hora atrás, dedekid disse:

[...] caso alguém tenha um maior entendimento sobre o assunto, poderia me explicar?

 

Até agora, estou empacado aqui, e não consigo avançar.

 

a.png

 

Por favor, poste o texto do código (use a tag CODE. basta clicar no botão <> e colar), pois fica complicado copiar a partir da imagem.

 

***

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou escrever aqui o enunciado da questão.( o professor passou essa questão depois de explicar laços com while e o for, porém eu achei melhor usar só o while).

 

Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos e as quantidades desejadas de cada item. Calcule e mostre o valor a ser pago por item (preco*quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e encerre o programa.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
#include <stdio.h>

int main(void)
{
  int cod, cont;
  cod = 0;
  
  printf("           ________________________________\n\n");
  printf("            Especificação     código  preço\n");
  printf("           ________________________________\n\n");
  printf("           Cachorro quente -- |100|  R$1,20\n");
  printf("           Bauru Simples ---- |101|  R$1,30\n");
  printf("           Bauru c/ovo ------ |102|  R$1,50\n");
  printf("           Hamburguer ------- |103|  R$1,20\n");
  printf("           Cheeseburguer ---- |104|  R$1,30\n");
  printf("           Refrigerente ----- |105|  R$1,00\n");
  printf("           ________________________________\n\n");
  

  do{
   printf("\nDigite o código do Lanche:");
   scanf("%d", &cod);
  
   printf("\nDeseja algo mais\n Digite [1] para sim e [2] para não:");
    scanf("%d", &cont);
 }
  while(cont == 1);
  
}

Aqui!!

Editado por dedekid
Modifiquei alguns erros
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ali na primeira imagem que mandei tem a tabela de produtos e cada um com um código diferente, como faço para atribuir valor especifico pra cada código.

ex: código 100 = 1.00

Compartilhar este post


Link para o post
Compartilhar em outros sites
16 minutos atrás, dedekid disse:

Ali na primeira imagem que mandei tem a tabela de produtos e cada um com um código diferente, como faço para atribuir valor especifico pra cada código.

ex: código 100 = 1.00

Usa if/else ou case.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Simon Viegas disse:

Usa if/else ou case.

 

Então ficaria mais ou menos assim pra armazenar o valor?

switch ( cod )
  {
     case 100 :
       1.20;
     break;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1#

Sobre:

11 minutos atrás, dedekid disse:

Então ficaria mais ou menos assim pra armazenar o valor?


switch ( cod )
  {
     case 100 :
       1.20;
     break;
}

Por ai... faltou dizer o que seria esse 1.20... o número está solto. "caso seja 100", o que acontece? ou seja, seria "item cachorro quente", como o que você precisa é o preço, seria algo como "precoItem = 1.20;".

 

 

 

2#
Então, o enunciado é auto explicativo.

1 hora atrás, dedekid disse:

Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos e as quantidades desejadas de cada item. Calcule e mostre o valor a ser pago por item (preco*quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e encerre o programa.

 

Basta seguir as etapas.

 

Segue um esboço:

/*
 Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos
 e as quantidades desejadas de cada item. Calcule e mostre o valor a ser pago por
 item (preco*quantidade) e o total geral do pedido. Considere que o cliente deve
 informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando
 se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e 
 encerre o programa.
*/

#include <stdlib.h>
#include <stdio.h>
#include <locale.h> /* setlocale */

int main(void) {
    setlocale(LC_ALL, "Portuguese"); //habilitar acentos no console
    int codProduto;   //código do produto
    int qtdProdtudos; //quantidade de produtos
    char opcao;
    do {
        system("cls");
        printf("           ________________________________\n\n");
        printf("            Especificação     código  preço\n");
        printf("           ________________________________\n\n");
        printf("           Cachorro quente -- |100|  R$1,20\n");
        printf("           Bauru Simples ---- |101|  R$1,30\n");
        printf("           Bauru c/ovo ------ |102|  R$1,50\n");
        printf("           Hamburguer ------- |103|  R$1,20\n");
        printf("           Cheeseburguer ---- |104|  R$1,30\n");
        printf("           Refrigerente ----- |105|  R$1,00\n");
        printf("           ________________________________\n\n");    
        printf("Código do lanche\n");
        scanf("%d", &codProduto);
        printf("Quantidade\n");
        scanf("%d", &qtdProdtudos);








        printf("\nDeseja algo mais? ([S] ou [N])\n");
        scanf(" %c", &opcao);
        } while ((opcao != 'n') || (opcao == 'N'));
        
}


Ai usa o switch() para verificar qual item foi escolhido, e assim descobrir o preço. Calcula o preço do item ("preco*quantidade") e joga no subtotal. Vai repetindo o processo até sair... no final, o subtotal terá o valor das vendas.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Simon Viegas

 

Valeu cara, usando como base o seu código eu montei um da maneira que eu consegui entender melhor.

#include <stdio.h>

int main(void)
{
  int cod, cont, qtd, pagamento;
  float conta, valor;
  valor = 0;
  qtd = 0;

    printf("           ________________________________\n\n");
    printf("            Especificação     código  preço\n");
    printf("           ________________________________\n\n");
    printf("           Cachorro quente -- |100|  R$1,20\n");
    printf("           Bauru Simples ---- |101|  R$1,30\n");
    printf("           Bauru c/ovo ------ |102|  R$1,50\n");
    printf("           Hamburguer ------- |103|  R$1,20\n");
    printf("           Cheeseburguer ---- |104|  R$1,30\n");
    printf("           Refrigerente ----- |105|  R$1,00\n");
    printf("           ________________________________\n\n");
  
    do{
      printf("\nDigite o código do Lanche:");
      scanf("%d", &cod);
      qtd = qtd + 1;
  
      printf("\nDeseja algo mais?\n\nDigite [1] para sim e [2] para não:");
      scanf("%d", &cont);
      }
      while(cont == 1);
        switch ( cod )
      {
        case 100:
        printf("", valor = 1.20);
        break;
     
        case 101:
        printf("", valor = 1.30);
        break;
     
        case 102:
        printf("", valor = 1.50);
        break;
     
        case 103:
        printf("", valor = 1.50);
        break;
     
        case 104:
        printf("", valor = 1.30);
        break;
     
        case 105:
        printf("", valor = 1.00);
        break;
     
      }

    conta = valor*qtd;
    printf("\n\n\nFim da compra.\n\n", 2);
    printf("O valor a pagar ficou em R$%.2f\n", conta);
  
    printf("\n\nQual a forma de Pagamento?\n\n[1]Crédito [2]Débito [3]Dinheiro:");
    scanf("%d", &pagamento);
  
    if(pagamento == 1){
      printf("\nForma de pagamento selecionada: CRÉDITO\n");
      printf("\nObrigado pelo pagamento!");
    }
      else
        if(pagamento == 2){
          printf("\nForma de pagamento selecionada: DÉBITO\n");
          printf("\nObrigado pelo pagamento!");
      }
        else
          if(pagamento == 3){
            printf("\nForma de pagamento selecionada: DINHEIRO\n");
            printf("\nObrigado pelo pagamento!");
        }
}
  

Agora só me resta uma unica duvida, no while,
como faço para contar quantas vezes ele foi retornado.
É a unica informação que me falta para eu poder fazer a conta do valor final caso mais de um produto seja digitado.

Editado por dedekid
Editei por que consegui resolver e terminar o código kkkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, dedekid disse:

Agora só me resta uma unica duvida, no while,
como faço para contar quantas vezes ele foi retornado.

 

Você pode cotador dentro do while como por exemplo

//Contador de numero de voltas no loop é zerado quando inicia o programa
numVoltas = 0;

do{
      printf("\nDigite o código do Lanche:");
      scanf("%d", &cod);
      qtd = qtd + 1;
  
      printf("\nDeseja algo mais?\n\nDigite [1] para sim e [2] para não:");
      scanf("%d", &cont);
  
      //Contador de numero de voltas no loop
      numVoltas++;

      }
      while(cont == 1);

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu mandei a ali em cima, já resolvi esse b.o

coloquei uma variável pra contar dentro do do while e deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1#
@dedekid, sobre:

3 minutos atrás, dedekid disse:

eu mandei a ali em cima, já resolvi esse b.o

coloquei uma variável pra contar dentro do do while e deu certo.


Posta o código aqui para analisarmos.


**

Eu já estava postando... então segue:

2#

@dedekid, sobre:

1 hora atrás, dedekid disse:

Valeu cara, usando como base o seu código eu montei um da maneira que eu consegui entender melhor.

 

Então, a base do seu código não está seguindo a minha... são estruturas distintas.

 

 

 

3#

1 hora atrás, dedekid disse:

Agora só me resta uma unica duvida, no while,
como faço para contar quantas vezes ele foi retornado.
É a unica informação que me falta para eu poder fazer a conta do valor final caso mais de um produto seja digitado.

 

Então, na minha base o número de loops não tem nada a ver com o cálculo do total.... tentei seguir o enunciado, veja:

 

4 horas atrás, dedekid disse:

Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos e as quantidades desejadas de cada item. Calcule e mostre o valor a ser pago por item (preco*quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e encerre o programa.

 

Fiz essas partes em negrito.


 

***

 

No aguardo.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, tem coisas a mais fora do enunciado que eu coloquei, havia esquecido de mencionar mas o professor disse que poderia adicionar mais coisas além do enunciado para melhorar o código.

segue a baixo o mesmo.

#include <stdio.h>

int main(void)
{
  int cod, cont, qtd, pagamento;
  float conta, valor;
  valor = 0;
  qtd = 0;

    printf("           ________________________________\n\n");
    printf("            Especificação     código  preço\n");
    printf("           ________________________________\n\n");
    printf("           Cachorro quente -- |100|  R$1,20\n");
    printf("           Bauru Simples ---- |101|  R$1,30\n");
    printf("           Bauru c/ovo ------ |102|  R$1,50\n");
    printf("           Hamburguer ------- |103|  R$1,20\n");
    printf("           Cheeseburguer ---- |104|  R$1,30\n");
    printf("           Refrigerente ----- |105|  R$1,00\n");
    printf("           ________________________________\n\n");
  
    do{
      printf("\nDigite o código do Lanche:");
      scanf("%d", &cod);
      qtd = qtd + 1;
  
      printf("\nDeseja algo mais?\n\nDigite [1] para sim e [2] para não:");
      scanf("%d", &cont);
      }
      while(cont == 1);
        switch ( cod )
      {
        case 100:
        printf("", valor = 1.20);
        break;
     
        case 101:
        printf("", valor = 1.30);
        break;
     
        case 102:
        printf("", valor = 1.50);
        break;
     
        case 103:
        printf("", valor = 1.50);
        break;
     
        case 104:
        printf("", valor = 1.30);
        break;
     
        case 105:
        printf("", valor = 1.00);
        break;
     
      }

    conta = valor*qtd;
    printf("\n\n\nFim da compra.\n\n", 2);
    printf("O valor a pagar ficou em R$%.2f\n", conta);
  
    printf("\n\nQual a forma de Pagamento?\n\n[1]Crédito [2]Débito [3]Dinheiro:");
    scanf("%d", &pagamento);
  
    if(pagamento == 1){
      printf("\nForma de pagamento selecionada: CRÉDITO\n");
      printf("\nObrigado pelo pagamento!");
    }
      else
        if(pagamento == 2){
          printf("\nForma de pagamento selecionada: DÉBITO\n");
          printf("\nObrigado pelo pagamento!");
      }
        else
          if(pagamento == 3){
            printf("\nForma de pagamento selecionada: DINHEIRO\n");
            printf("\nObrigado pelo pagamento!");
        }
}
  

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

17 horas atrás, dedekid disse:

Então, tem coisas a mais fora do enunciado que eu coloquei, havia esquecido de mencionar mas o professor disse que poderia adicionar mais coisas além do enunciado para melhorar o código.

 

O enunciado é como uma lei... deve sempre ser seguido. Se o professor liberou fazer a mais, ok, mas "esse mais" poderia está no próprio enunciado!. O que não pode é fazer a menos. (a não ser que o professor também tenha liberado isso, mas veja, isso não seria um enunciado em si, seria uma espécie de "sugestão do que fazer"). Aqui na Bahia diríamos que "seria um mangue". Se querem X+Y, você não pode fazer X*Y.

 

Veja, por exemplo, se no enunciado quer que o fundo da tela seja verde, e a cor do texto seja amarelo, faça assim. Se não concorda, ou acha que é inviável etc, sugira a mudança do enunciado... entrem em acordo antes.. entende?

 

Então, leia o enunciado e compare com seu código.  Mas de qualquer sorte, ele não está funcionando.

 

Abaixo alguns pontos.

 

Vamos lá:

23 horas atrás, dedekid disse:

Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos e as quantidades desejadas de cada item.

Em que momento o código está lendo a quantidade desejada? exemplo, eu quero 3 Baurus e 2 refrigerantes. Como faria o pedido no seu código?

Veja, essa quantidade por item NÃO TEM NADA A VER COM O A QUANTIDADE DE LOOPS. Como sugerido (explícito) no enunciado, e exemplificado no meu esboço, o programa precisa "ler o código e quantidade de CADA ITEM". Exemplo: Eu quero 3 itens 101 (o programa deve me informa quando dá), e 2 itens 105 (o programa deve me informar quanto dá). No caso, eu informaria o código e a quantidade para cada "pedido" (loop).

 

 

23 horas atrás, dedekid disse:

Calcule e mostre o valor a ser pago por item (preco*quantidade) [...]

Em que momento momento está mostrando o valor valor pago por item?

 

 

23 horas atrás, dedekid disse:

total geral do pedido.

O total geral não está batendo... por exemplo, pedi um refrigerante (R$1,00) e um cachorro quente (R$1,20). A minha conta deu R$2,40! (em vez de R$2,20... "o garçom tá tentando me passar a pena")

 

 

23 horas atrás, dedekid disse:

Considere que o cliente deve informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e encerre o programa.

O enunciado especifica a verificação se foi informado "N", mas no seu código tem 1 e 2. Entende? "Se eu quero "N", por que está usando números?"

 

 

Em fim... entendo que a base do programa seria como o esboço citado:

/*
 Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos
 e as quantidades desejadas de cada item. Calcule e mostre o valor a ser pago por
 item (preco*quantidade) e o total geral do pedido. Considere que o cliente deve
 informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando
 se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e 
 encerre o programa.
*/

#include <stdlib.h>
#include <stdio.h>
#include <locale.h> /* setlocale */

int main(void) {
    setlocale(LC_ALL, "Portuguese"); //habilitar acentos no console
    int codProduto;   //código do produto
    int qtdProdtudos; //quantidade de produtos
    char opcao;
    do {
        system("cls");
        printf("           ________________________________\n\n");
        printf("            Especificação     código  preço\n");
        printf("           ________________________________\n\n");
        printf("           Cachorro quente -- |100|  R$1,20\n");
        printf("           Bauru Simples ---- |101|  R$1,30\n");
        printf("           Bauru c/ovo ------ |102|  R$1,50\n");
        printf("           Hamburguer ------- |103|  R$1,20\n");
        printf("           Cheeseburguer ---- |104|  R$1,30\n");
        printf("           Refrigerente ----- |105|  R$1,00\n");
        printf("           ________________________________\n\n");    
        printf("Código do lanche\n");
        scanf("%d", &codProduto);
        printf("Quantidade\n");
        scanf("%d", &qtdProdtudos);








        printf("\nDeseja algo mais? ([S] ou [N])\n");
        scanf(" %c", &opcao);
        } while ((opcao != 'n') || (opcao == 'N'));
        
}

 

Experimente ler o enunciado e ir comparando os códigos. :)

 

 

 

Outro ponto... a parte da forma de pagamento, que entraria sobre o que o professor "liberou":

17 horas atrás, dedekid disse:

o professor disse que poderia adicionar mais coisas além do enunciado para melhorar o código

 

Isso entrar só APÓS fazer a "obrigação", ou seja, de um modo geral, é dica é sempre ir do mais simples, para o mais complexo.. tipo, é necessário primeiro fazer o que se pede (seguir o enunciado), e só após pronto e finalizado, passar a implementar melhorias... a depender, deixa o algoritmo "simples" salvo... e faz uma cópia para implementar as melhorias.. ai teria 2 programas para apresentar. (mesmo que não valha pontos... o foco, de qualquer disciplina de estudo é o aprendizado, nota é só uma burocracia do processo)

 

Ainda nesse sentido do mais simples... seria recomendado primeiro verificar se o pedido itens pela quantidade está funcionado... para só depois verificar se o pedido de várias itens pelas suas quantidades estão batendo... ou seja, testa antes o mais simples, para depois testar o mais complexo...    Não é interessante pensar em por exemplo implementar o troco, sem antes verificar se a conta está correta. Tudo é uma cadeia...

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, no caso do 'N', o Prof liberou eu colocar o 2, ele só quer que deixe de fácil entendimento, qual a opção a se Usar para encerrar a compra. A parte da conta que deveria dar 2,20 e deu 2,40 é porque minha variável (cod), estava como int eu mudei para float e as contas com casa decimal começaram a bater. Agora o que me falta fazer é colocar o valor e a quantidade de cada item por laço, essa parte eu ainda não, mas não foi por esquecimento e sim por que por hora eu ainda não sei como fazer, estou lendo uma apostila aqui pra tentar entender um pouco melhor. E obrigado pelas dicas, apesar de ter 2 pontos a serem feitos para cumprir tudo que é pedido no enunciado estou bem satisfeito. Antes de abrir esse tópico eu não tinha nem passado do cardápio.

adicionado 13 minutos depois

E também estou usando o site https://repl.it/, nele não há necessidade de declarar certas bibliotecas/váriaveis.

adicionado 34 minutos depois
#include <stdio.h>

int main(void)
{
  int cod, cont, qtd, pagamento, produto;
  float conta, valor;
  valor = 0;
  qtd = 0;

    printf("           ________________________________\n\n");
    printf("            Especificação     código  preço\n");
    printf("           ________________________________\n\n");
    printf("           Cachorro quente -- |100|  R$1,20\n");
    printf("           Bauru Simples ---- |101|  R$1,30\n");
    printf("           Bauru c/ovo ------ |102|  R$1,50\n");
    printf("           Hamburguer ------- |103|  R$1,20\n");
    printf("           Cheeseburguer ---- |104|  R$1,30\n");
    printf("           Refrigerente ----- |105|  R$1,00\n");
    printf("           ________________________________\n\n");
  
    do{
      printf("\nDigite o código do Lanche:");
      scanf("%d", &cod);
      qtd = qtd + 1;
      printf("\nInforme a quantidade desejada do item selecionado:");
      scanf("%d", &produto);
      
      if(cod == 100){
        printf("\nVocẽ selecionou: %.1d Cachorro(s) quente(s)\n", produto);
      }
        if(cod == 101){
          printf("\nVocẽ selecionou: %.1d Bauru(s) Simples\n", produto);
        }
          if(cod == 102){
            printf("\nVocẽ selecionou: %.1d Bauru(s) c/Ovo\n", produto);
          }
            if(cod == 103){
              printf("\nVocẽ selecionou: %.1d Hamburguer(s)\n", produto);
            }
              if(cod == 104){
                printf("\nVocẽ selecionou: %.1d Chesseburguer(s)\n", produto);
              }
                if(cod == 105){
                  printf("\nVocẽ selecionou: %.1d Refrigerante(s)\n", produto);
                }
      
      printf("\n\nDeseja algo mais?\n\nDigite [1] para sim e [2] para não:");
      scanf("%d", &cont);
      }
      while(cont == 1);
        switch ( cod )
      {
        case 100:
        printf("", valor = 1.20);
        break;
     
        case 101:
        printf("", valor = 1.30);
        break;
     
        case 102:
        printf("", valor = 1.50);
        break;
     
        case 103:
        printf("", valor = 1.50);
        break;
     
        case 104:
        printf("", valor = 1.30);
        break;
     
        case 105:
        printf("", valor = 1.00);
        break;
     
      }
    conta = valor*produto*qtd;
    printf("\n\n\nFim da compra.\n\n\n", 2);
    printf("O valor a pagar ficou em R$%.2f\n", conta);
  
    printf("\n\nQual a forma de Pagamento?\n\n[1]Crédito [2]Débito [3]Dinheiro:");
    scanf("%d", &pagamento);
  
    if(pagamento == 1){
      printf("\n\nForma de pagamento selecionada: CRÉDITO\n\n");
      printf("\nObrigado pelo pagamento!");
    }
      else
        if(pagamento == 2){
          printf("\n\nForma de pagamento selecionada: DÉBITO\n\n");
          printf("\nObrigado pelo pagamento!");
      }
        else
          if(pagamento == 3){
            printf("\n\nForma de pagamento selecionada: DINHEIRO\n\n");
            printf("\nObrigado pelo pagamento!");
        }
}

Copiei o código que já tinha feito e adicionei o que faltava, agora só não estou consigo acertar a conta, se for o mesmo item selecionado várias vezes a conta dá certo, mas se for dois itens diferentes, o valor decimal continua dando errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Editando... (postou sem querer)

 

adicionado 55 minutos depois

Vamos lá:

1#

Sobre:

2 horas atrás, dedekid disse:

Entendi, no caso do 'N', o Prof liberou eu colocar o 2, ele só quer que deixe de fácil entendimento, qual a opção a se Usar para encerrar a compra.

Beleza. Se ele liberou, tá liberado.

 

 

 

2#

2 horas atrás, dedekid disse:

A parte da conta que deveria dar 2,20 e deu 2,40 é porque minha variável (cod), estava como int eu mudei para float e as contas com casa decimal começaram a bater.

Não, não foi isso. Testei seu último código e está dando exatamente o mesmo erro. A conta não está batendo.

Outra coisa, a variável cod não tem nada a ver com problema.. por sinal, o código pode ser inteiro mesmo. Melhor ainda se usar char[3].

 

O problema está na conta.

Você sabe como deve calcular?

 

Veja, PRIMEIRO você entende o que se deve fazer, depois tenta implementar. Está acontecendo que "a forma que você acha que é para calcular" está errada, daí o que você está tentando implementar, também vai ficar errado...

 

Mais abaixo (4#) fiz outro "esboço" mais completo.

 

 

 

3#

2 horas atrás, dedekid disse:

Agora o que me falta fazer é colocar o valor e a quantidade de cada item por laço, essa parte eu ainda não, mas não foi por esquecimento e sim por que por hora eu ainda não sei como fazer, estou lendo uma apostila aqui pra tentar entender um pouco melhor. E obrigado pelas dicas, apesar de ter 2 pontos a serem feitos para cumprir tudo que é pedido no enunciado estou bem satisfeito. Antes de abrir esse tópico eu não tinha nem passado do cardápio.

 

Foque no enunciado... procure fazer as coisas mais simples. As melhorias devem vir depois!!! Lembre-se disso. Pense assim: como vai melhorar o que ainda não está pronto?

 

Se tem dúvidas sobre alguma parte, tende entender do que se trata e tente resolver. Você precisa entender o problema em si.

 

 

 

4#
Segue:

/*
 Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos
 e as quantidades desejadas de cada item. Calcule e mostre o valor a ser pago por
 item (preco*quantidade) e o total geral do pedido. Considere que o cliente deve
 informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando
 se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e 
 encerre o programa.
*/

#include <stdlib.h>
#include <stdio.h>
#include <locale.h> /* setlocale */

int main(void) {
    setlocale(LC_ALL, "Portuguese"); //habilitar acentos no console
    int codProduto;     //código do produto
    int qtdProdtudos;   //quantidade de produtos
    float precoProduto; //preco unitário do produto
    float totalPorItem; //total por item (preço * quantidade)
    float totalGeral;   //total da compra
    char opcao;
    do {
        system("cls");
        printf("           ________________________________\n\n");
        printf("            Especificação     código  preço\n");
        printf("           ________________________________\n\n");
        printf("           Cachorro quente -- |100|  R$1,20\n");
        printf("           Bauru Simples ---- |101|  R$1,30\n");
        printf("           Bauru c/ovo ------ |102|  R$1,50\n");
        printf("           Hamburguer ------- |103|  R$1,20\n");
        printf("           Cheeseburguer ---- |104|  R$1,30\n");
        printf("           Refrigerente ----- |105|  R$1,00\n");
        printf("           ________________________________\n\n");    
        printf("Código do lanche\n");
        scanf("%d", &codProduto);
        printf("Quantidade\n");
        scanf("%d", &qtdProdtudos);
        switch (codProduto) {
            case 100:
                precoProduto = 1.20;
            break;
            case 101:
                precoProduto = 1.30;
            break;
            case 102:
                precoProduto = 1.50;
            break;
            case 103:
                precoProduto = 1.20;
            break;
            case 104:
                precoProduto = 1.30;
            break;
            case 105:
                precoProduto = 1.00;
            break;
        }
        totalPorItem = precoProduto*qtdProdtudos; //calcula o total do item
        printf("Total do item: R$%.2f ",totalPorItem); //exibe o total do item
        totalGeral  +=  totalPorItem; //acumula o total
        printf("\nDeseja algo mais? ([S] ou [N])\n");
        scanf(" %c", &opcao);
        } while ((opcao != 'n') || (opcao == 'N'));
    printf("TOTAL: R$%.2f ",totalGeral); //exibe o total geral
}

Tente entender o código... e vá adaptando no seu... se tiver dúvidas, é só perguntar.

 

Perceba que a proposta é "fazer o que foi pedido". Veja, não existe uma resposta única, e também essa acima pode está errada... a questão é que inicialmente deve se limitar ao enunciado... Ai, aos poucos vai implementando outros recursos, como: forma de pagamento; o que fazer se digitar um código inválido; exibir o nome do produto ao ser escolhido; etc

 

No aguardo.

Editado por Simon Viegas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, eu acho que entendi seu código, vou arrumar o que está errado no meu e mais tarde já mando aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Terminei!

 

A baixo segue o código(vai abrir direto na plataforma online).

https://repl.it/@DiegoLuis1/UnkemptIckyBsddaemon

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#
Sobre:

2 horas atrás, dedekid disse:

A baixo segue o código(vai abrir direto na plataforma online).

https://repl.it/@DiegoLuis1/UnkemptIckyBsddaemon

 

O link não funcionou aqui. Está retornando:

Citação

404
Not found error: This is not the page you're looking for.

If you think this is a mistake please contact us_


Por favor, além do link correto, poste também o código na forma de texto (com a tag CODE).

 

 

 

2#

Lá testei o código "Cardápio lanchonete(final)", nesta ainda está com alguns probleminhas:
- O "valor a ser pago por item (preco*quantidade)" não está sendo exibido (isso é exigido pelo enunciado);

- Assim como em dinheiro, ao pagar em débito ou crédito, talvez seja melhor também receber o valor que está sendo pago;

- Se pagar em dinheiro um valor menor que a conta, o troco fica negativo. Nesse caso, deveria receber outro pagamento até completar o valor total.


***

No aguardo.

adicionado 22 minutos depois

ADENDO:

Spoiler

O enunciado é a base. Tem que necessariamente fazer o que se está pedindo. Se é permitido "fazer a mais", pode fazer, mas o "mínimo" tem que ser feito antes!!! O foco tem que ser o que se pede, não a criatividade. Minha sugestão continua: faça tão somente o que foi pedido!!!

Não adianta fazer "a mais" em algo que ainda não está terminado, entende? em vez de ser "um plus", passará apenas ser "uma outra coisa".

Só após pronto, aí sim vai pode ir além.

 

Obs. 1: pode ser uma interpretação errada. Entenda que apenas estou expondo o que eu acho.

Obs. 2: pode ficar tranquilo, não vou entrar mais nesse tema.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O valor por cada item nesse caso, pode ser o informado só na tabela a cima, ai no caso o prof° só exigiu que ao finalizar a compra mostre a soma do valor de todos os itens escolhidos, no caso do débito e credito, estou apenas usando uma hipótese de que o valor tenha sido pago por um cartão que foi permitido. E nesse do dinheiro não tinha pensado nisso do negativo, vou mudar a informação do printf pra ficar mais claro que o pagamento só pode ser igual ou maior que o valor final e também um if por garantia para caso o valor pago seja menor que o valor final informar a opção de pagamento novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre:

38 minutos atrás, dedekid disse:

O valor por cada item nesse caso, pode ser o informado só na tabela a cima

 

Vide enunciado:

Em 10/05/2018 às 15:33, Simon Viegas disse:
Em 10/05/2018 às 11:03, dedekid disse:

Faça um programa que exiba o cardápio na tela e leia o código dos itens pedidos e as quantidades desejadas de cada item. Calcule e mostre o valor a ser pago por item (preco*quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado. Faça uma pergunta a ele indagando se deseja mais alguma coisa. Se a resposta for 'N', mostre o valor total e encerre o programa.

 

Eu entendi que é necessário exibir o valor a ser pago por item... mas se não precisa, ok.

 

 

 

Sobre:

40 minutos atrás, dedekid disse:

no caso do débito e credito, estou apenas usando uma hipótese de que o valor tenha sido pago por um cartão que foi permitido. E nesse do dinheiro não tinha pensado nisso do negativo, vou mudar a informação do printf pra ficar mais claro que o pagamento só pode ser igual ou maior que o valor final e também um if por garantia para caso o valor pago seja menor que o valor final informar a opção de pagamento novamente.

Bacana.. tente ajustar o código da melhor forma possível... :)

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Boa tarde.

 

Finalizei meu código.

#include<stdio.h>

int main (){
int cod, produto, cont, pagamento;
float troco, conta, dinheiro, valor, cpf;
cod = 0;
produto = 0;
dinheiro = 0;
conta = 0;
troco = 0;
cpf = 0;

do{
  printf("\n\n");
  printf("           LANCHONETE HIPOTETICA\n");
  printf("      --------------------------------\n");
  printf("       Especificações  Código   Valor\n");
  printf("      --------------------------------\n");
  printf("        Cachoro quente| 100 |R$ 1,20\n");
  printf("        Bauru Simples | 101 |R$ 1,30\n");
  printf("        Bauru c/ovo   | 102 |R$ 1,50\n");
  printf("        Hamburguer    | 103 |R$ 1,20\n");
  printf("        Cheeseburguer | 104 |R$ 1,30\n");
  printf("        Refrigerante  | 105 |R$ 1,00\n");
  printf("      --------------------------------\n");
  printf("\nOlá!");
    do{
      printf("\n\nInforme o código do lanche selecionado:");
        scanf("%d", &cod);
        
      while(cod != 100 && cod != 101 && cod != 102 && cod != 103 && cod != 104 && cod != 105){
        printf("\nInforme um código válido:");
          scanf("%d", &cod);
      }
      switch (cod){
          case 100:
            printf("\n\nVocê selecionou Cachorro Quente.\n");
              valor = 1.20;
          break;
            
          case 101:
            printf("\n\nVocê selecionou Bauru Simples.\n");
              valor = 1.30;
          break;

          case 102:
            printf("\n\nVocê selecionou Bauro c/ovo.\n");
              valor = 1.50;
          break;

          case 103:
            printf("\n\nVocê selecionou Hamburguer.\n");
              valor = 1.20;
          break;

          case 104:
            printf("\n\nVocê selecionou Cheeseburguer.\n");
              valor = 1.30;
            break;
            
          case 105:
            printf("\n\nVocẽ selecionou Refrigerante.\n");
              valor = 1.00;
          break;
       }    
  printf("\nInforme a quantidade:");
    scanf("%d", &produto);
  while(produto <=0){
    printf("\nQuantidade inválidade\nInforme uma quantidade válida:");
      scanf("%d", &produto);
  }
  printf("\nValor: %.2f", produto*valor);
    conta = conta +valor*produto;
  printf("\n\nDeseja registrar outro lanche [1] para sim e [2] para não:");
    scanf("%d", &cont);

    } while (cont == 1);
  printf("\n\nFim da compra.\n");
  printf("\n(contendo 9 números, sem pontos)\n           Informe o CPF:");
    scanf("%f", &cpf);
  printf("\nValor total da compra R$%.2f reais\n", conta);
  printf("\nQual a forma de pagamento [1] para debito [2] para crédito [3] para dinheiro:");
    scanf("%d",&pagamento);

  if(pagamento == 1){
    printf("\nDébito selecionado\n\n");
    }
     else
      if(pagamento == 2){
        printf("\nCrédito selecionado\n\n");
        }
         else
          if(pagamento == 3){
            printf("\nDinheiro selecionado\n\n");
            printf("\nInforme o valor dado pelo cliente: R$");
              scanf("%f", &dinheiro);
                troco = dinheiro - conta;
                  printf("Seu troco é %.2f reais\n\n", troco);
                  }
  printf("\n\nObrigado pela pagamento!\n\n");
  printf("\nDeseja registrar outra compra? [1] para sim [0] para finalizar:");
    scanf("%d", &cont);
} while(cont == 1);
printf("\nFim do programa");
}

 

Online: https://repl.it/@DiegoLuis1/Trabalho-Lanchonete

Editado por Simon Viegas
inserir texto código no corpo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#
Cuidado com a indentação!! Segue um exemplo:
 

#include<stdio.h>
#include <locale.h>

int main () {
    setlocale(LC_ALL, "Portuguese");
    int cod, produto, cont, pagamento;
    float troco, conta, dinheiro, valor, cpf;
    cod = 0;
    produto = 0;
    dinheiro = 0;
    conta = 0;
    troco = 0;
    cpf = 0;	
    do {
        printf("\n\n");
        printf("           LANCHONETE HIPOTETICA\n");
        printf("      --------------------------------\n");
        printf("       Especificações  Código   Valor\n");
        printf("      --------------------------------\n");
        printf("        Cachoro quente| 100 |R$ 1,20\n");
        printf("        Bauru Simples | 101 |R$ 1,30\n");
        printf("        Bauru c/ovo   | 102 |R$ 1,50\n");
        printf("        Hamburguer    | 103 |R$ 1,20\n");
        printf("        Cheeseburguer | 104 |R$ 1,30\n");
        printf("        Refrigerante  | 105 |R$ 1,00\n");
        printf("      --------------------------------\n");
        printf("\nOlá!");
        do {
            printf("\n\nInforme o código do lanche selecionado:");
            scanf("%d", &cod);
            while(cod != 100 && cod != 101 && cod != 102 && cod != 103 && cod != 104 && cod != 105) {
                printf("\nInforme um código válido:");
                scanf("%d", &cod);
            }
            switch (cod) {
                case 100:
                    printf("\n\nVocê selecionou Cachorro Quente.\n");
                    valor = 1.20;
                    break;       
                case 101:
                    printf("\n\nVocê selecionou Bauru Simples.\n");
                    valor = 1.30;
                    break;                
                case 102:
                    printf("\n\nVocê selecionou Bauro c/ovo.\n");
                    valor = 1.50;
                    break;
                case 103:
                    printf("\n\nVocê selecionou Hamburguer.\n");
                    valor = 1.20;
                break;
                case 104:
                    printf("\n\nVocê selecionou Cheeseburguer.\n");
                    valor = 1.30;
                break;                
                case 105:
                    printf("\n\nVoc? selecionou Refrigerante.\n");
                    valor = 1.00;
                    break;
            }    
            printf("\nInforme a quantidade:");
            scanf("%d", &produto);
            while(produto <=0){
                printf("\nQuantidade inválidade\nInforme uma quantidade válida:");
                scanf("%d", &produto);
            }
            printf("\nValor: %.2f", produto*valor);
            conta = conta +valor*produto;
            printf("\n\nDeseja registrar outro lanche [1] para sim e [2] para não:");
            scanf("%d", &cont);
        } while (cont == 1);
        printf("\n\nFim da compra.\n");
        printf("\n(contendo 9 números, sem pontos)\n           Informe o CPF:");
        scanf("%f", &cpf);
        printf("\nValor total da compra R$%.2f reais\n", conta);
        printf("\nQual a forma de pagamento [1] para debito [2] para crédito [3] para dinheiro:");
        scanf("%d",&pagamento);        
        if (pagamento == 1)
            printf("\nDébito selecionado\n\n");
        else
            if (pagamento == 2)
                printf("\nCrédito selecionado\n\n");
            else
                if (pagamento == 3) {
                    printf("\nDinheiro selecionado\n\n");
                    printf("\nInforme o valor dado pelo cliente: R$");
                    scanf("%f", &dinheiro);
                    troco = dinheiro - conta;
                    printf("Seu troco é %.2f reais\n\n", troco);
                }
        printf("\n\nObrigado pela pagamento!\n\n");
        printf("\nDeseja registrar outra compra? [1] para sim [0] para finalizar:");
        scanf("%d", &cont);
    } while(cont == 1);
    printf("\nFim do programa");
}

 

 

 

2#

De um modo geral, o código ficou muito bom... mas a questão da forma de pagamento ainda está com problemas... paguei a menos e recebi um troco negativo (???)

 

 

 

***

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×