Ir ao conteúdo

Dúvidas no programa em C


Air-Gear

Posts recomendados

Postado

Olá pessoal! O exercício pede o seguinte:

Para pagamentos a vista, uma loja concede 5% de desconto para clientes comuns, 10% de desconto para funcionários e 15% de desconto para clientes especiais. Para pagamentos parcelados em duas vezes, a loja cobra um acréscimo de 2,5% de juros para clientes comuns, 2% de juros para funcionários e não cobra juros de clientes especiais. Para pagamentos parcelados em 3 vezes, a loja cobra um acréscimo de 3% de juros para clientes comuns, 2,5% de juros para funcionários e 1,5% de juros de clientes especiais.A loja não aceita parcelamentos maiores que os apresentados acima. Escreva um algoritmo que calcule o valor total a ser pago por uma pessoa. O algoritmo deverá ler o valor total da compra efetuada, a forma de pagamento e um código que identifique se o comprador é um cliente comum, um funcionário ou um cliente especial.

Bem, eu fiz esse programa:

#include <stdio.h>

float cliente_comum (float valor)

{

float desconto, parcelado2, parcelado3;

desconto = valor*0.95;

parcelado2 = (valor/2)*1.025;

parcelado3 = (valor/2)*1.03;

printf ("O valor com desconto: %.2f \n",desconto);

printf ("O valor em duas vezes: %.2f \n",parcelado2);

printf ("O valor em três vezes: %.2f \n",parcelado3);

return (0);

}

float funcionario (float valor)

{

float desconto, parcelado2, parcelado3;

desconto = valor*0.90;

parcelado2 = (valor/2)*1.02;

parcelado3 = (valor/2)*1.025;

printf ("O valor com desconto: %.2f \n",desconto);

printf ("O valor em duas vezes: %.2f \n",parcelado2);

printf ("O valor em três vezes: %.2f \n",parcelado3);

return (0);

}

float cliente_especial (float valor)

{

float desconto, parcelado2, parcelado3;

desconto = valor*0.90;

parcelado2 = (valor/2);

parcelado3 = (valor/2)*1.015;

printf ("O valor com desconto: %.2f \n",desconto);

printf ("O valor em duas vezes: %.2f \n",parcelado2);

printf ("O valor em três vezes: %.2f \n",parcelado3);

return (0);

}

int main()

{

float valor, compra;

int opcao;

printf ("Entre com o valor \n");

scanf ("%f",&valor);

printf (" \n MENU \n\n");

printf ("1) Para cliente comum \n");

printf ("2) Para funcionario \n");

printf ("3) Para cliente especial \n\n");

printf ("Digita o codigo do tipo de comprador: ");

scanf ("%i",opcao);

if (opcao == 1)

compra = cliente_comum(valor);

else if (opcao == 2)

compra = funcionario(valor);

else if (opcao == 3)

compra = cliente_especial(valor);

else printf ("Erro! Codigo Invalido! \n");

system ("pause");

return (0);

}

O programa está rodando, mas ele não ler as opções. Imprime logo a mensagem "Erro! Codigo invalido!". Estou no começo da aprendizagem da linguagem C, por isso não conheço muitos códigos para melhorar o programa. Alguém pode me ajudar?

EDIT: Eu achei o erro, esqueci de colocar o "&" ao ler "Opcao". Mesmo assim, alguém tem alguma dica pra melhorar o meu código?

Postado

Bom, você nao precisa usar a variavel "compra". Dentro dos "if", chame simplesmente a função referente a cada caso, por exemplo "cliente_comum(valor);" ao invés de "compra = cliente_comum(valor);". E tb torne suas funções "void" ao invés de "float", já q nao é necessario q elas retornem nada.

Para o caso de menus, você pode utilizar um "switch".

Acho que é isso o que eu tenho a acrescentar.

Abraço

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!