Ir para conteúdo
Fórum Script Brasil
  • 0

Exercício Livro "C Como Programar - Deitel"


invader_zim

Pergunta

exemploc.jpg

O exercício está descrito na imagem acima.

Estou tentando sempre melhorar meus códigos para deixá-los mais legíveis e otimizados; por isso resolvi postar este aqui no fórum.

A ideia é discutir o código e aprender com isso. Acho até que seria interessante criar mais uma subcategoria em "C/C++" só para discussão de códigos em C.

#include <stdio.h>
#define FLAG -1

int main(void) {
   int codigo, quantidade;
   float acumulado = 0;

   do {
      printf("\n\nInforme o codigo do produto (1/2/3/4/5) ");
      printf("\n(-1 para sair) ----> ");
      scanf("%d", &codigo);

      if (codigo == FLAG)
         break;

      printf("Informe a quantidade do produto %d vendida: ", codigo);
      scanf("%d", &quantidade);

      switch (codigo) {
         case 1:
            acumulado += quantidade * 2.98;
            break;
         case 2:
            acumulado += quantidade * 4.50;
            break;
         case 3:
            acumulado += quantidade * 9.98;
            break;
         case 4:
            acumulado += quantidade * 4.49;
            break;
         case 5:
            acumulado += quantidade * 6.87;
            break;
         default:
            printf("Codigo informado não é valido!\n");
      }
   } while (1);

   printf("\n----------------------------------------");
   printf("\nValor de revenda total da semana: %.2f\n", acumulado);
   printf("\n----------------------------------------");

   return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Código bom...

Eu faria algo assim (sem switch):

#include <stdio.h>
#define FLAG -1

int main(){
   short int codigo, quantidade;
   float acumulado = 0, precos[5] = {2.98, 4.50, 9.98, 4.49, 6.87};

   do {
        printf("Informe o codigo do produto (1/2/3/4/5)\n(-1 para sair) ----> ");
        scanf("%hi", &codigo);

        if (codigo == FLAG)
            break;

        printf("Informe a quantidade do produto %d vendida: ", codigo);
        scanf("%hi", &quantidade);

        acumulado += (quantidade) ? quantidade * precos[codigo - 1] : 0;

   }while(1);

   printf("\nValor de revenda total da semana: R$ %.2f\n", acumulado);

   return (0);
}

Basicamente, trocaria as variáveis 'int' por 'short int'. Este tipo ocupa menos espaço (16 bits), e serve ao propósito.

E adicionaria os valores á um vetor.

Editado por mJi
Link para o comentário
Compartilhar em outros sites

  • 0

É mesmo! Nesse caso o short faria bem o seu papel e ocuparia menos espaço em memória.

Achei que o seguinte trecho de código com o operador condicional ficaria mais legível desta forma:

acumulado += (quantidade ? quantidade * precos[codigo - 1] : 0);

Assim o programador não é induzido a crer que tudo o que aparece antes do sinal de interrogação faz parte da expressão condicional.

Editado por invader_zim
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...