Jump to content
Fórum Script Brasil
  • 0

Exercício Livro "C Como Programar - Deitel"


invader_zim

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

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

Edited by mJi
Link to comment
Share on other 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.

Edited by invader_zim
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...