Ir ao conteúdo

Posts recomendados

Postado

•    DESENVOLVER UM PROGRAMA.
Descrição da Atividade
Uma loja necessita de um programa que facilite o cálculo de venda de seus produtos. As áreas dos produtos são definidas como:
1) - Informática;
2) - Jogos;
3) - Eletrônicos.
Os produtos de Informática têm 5% de desconto na compra, Os jogos têm 8% e os produtos eletrônicos, 10%.
O Programa terá que receber via teclado o nome do produto, a área do produto (1, 2 ou 3), a quantidade comprada e o valor unitário.
Deverá ser calculado o valor base (quantidade * unitário), o valor do desconto de acordo com o percentual de cada área e o valor total com o desconto.
Baseando-se nos conceitos de vetores, remodele o programa da atividade 1 criando as variáveis:
•     nome_prod: Vetor tipo caractere de 100 posições;
•     quantidade: Vetor tipo float de 100 posições;
•     valor_unitario: Vetor tipo float de 100 posições.
•     percentual: Vetor tipo float de 100 posições;
Sobre a execução do programa:
O programa deverá cadastrar os itens de venda como linhas dos vetores: 
nome_prod, quantidade, valor_unitario e percentual.
A cada item cadastrado, o programa deverá emitir uma mensagem perguntando se o usuário deseja continuar. Como resposta a esta pergunta, o usuário digitará a letra 's' para continuar cadastrando itens ou a letra 'n' para listar o relatório final.
Ao digitar a letra 'n', o programa deverá terminar o cadastro e emitir um relatório dos itens de venda na tela contendo: 
nome do produto, quantidade, valor unitário, percentual de desconto, valor base, valor do desconto e valor final.
Ao listar todos os itens de venda, o programa deverá apresentar o valor total da venda.

AO TENTAR FAZER O PROGRAMA NÃO CONSIGO IMPRIMIR OS RELATÓRIOS, PODEM ME AJUDAR.
SEGUE O PROGRAMA:-

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int indicevetor = 0;
    char nome_prod[100];                //Nome do produto
    float qtde[100];                    //Quantidade do produto
    float vr_unit[100];                 //Valor Unitário do Produto
    float perc[100];                    //Percentual do produto
    int i;                              //Indice do vetor
    int a_prod;                        //Área do produto
    float vr_base[100];                      //Valor Base do Produto [Quantidade * Valor Unitário]
    float vr_desc[100];                      //Valor do desconto do produto [(valor base * 5)/100]
    float vr_total[100];                     //Valor Total do produto [Valor Bse - Valor do Desconto]
    char continuar = 's';                     //Varial para decidir Sim 's' ou Não 'n'
    float vr_total_venda;               //Valor Total das Vendas de todos os produtos

    while (continuar != 'n')
    {


            printf("\nDigite o nome do produto: ");
            scanf("%s",&nome_prod[indicevetor]);

            printf("\nDigite a Area do Produto: \n1 para INFORMATICA - 2 para JOGOS - 3 para ELETRONICOS \n");
            scanf("%i", &a_prod);


            printf("\nDigite a quantidade do produto: ");
            scanf("%f", &qtde[indicevetor]);

            printf("\nDigite o valor Unitario do produto: ");
            scanf("%f", &vr_unit[indicevetor]);

            if (a_prod == 1)
            {
                perc [indicevetor]= 5/100;
                vr_base[indicevetor] = qtde[indicevetor] * vr_unit[indicevetor];
                vr_desc[indicevetor] = (vr_base[indicevetor] * perc[indicevetor]);
                vr_total[indicevetor] = (vr_base[indicevetor] - vr_desc[indicevetor]);
            }
            else
            {
                if (a_prod == 2)
                {
                    perc [indicevetor]= 8/100;
                    vr_base[indicevetor] = qtde[indicevetor] * vr_unit[indicevetor];
                    vr_desc[indicevetor] = (vr_base[indicevetor] * perc[indicevetor]);
                    vr_total[indicevetor] = (vr_base[indicevetor] - vr_desc[indicevetor]);
                }
                else
                {
                    if (a_prod == 3)
                    {
                        perc [indicevetor]= 10/100;
                        vr_base[indicevetor] = qtde[indicevetor] * vr_unit[indicevetor];
                        vr_desc[indicevetor] = (vr_base[indicevetor] * perc[indicevetor]);
                        vr_total[indicevetor] = (vr_base[indicevetor] - vr_desc[indicevetor]);
                    }
                }
            }
            printf("\nDeseja continuar, informe s para sim ou n para abandonar o programa: ");
            scanf("%s",&continuar);

            if (continuar == 's')
            {
                indicevetor++;
            }
}
    for (i = 0; i >= indicevetor; i++)
    {
            printf("\nA Quantidade do produto eh: %f", qtde[indicevetor]);
            printf("\nO Valor Unitario do produto eh: %f", vr_unit[indicevetor]);
            printf("\nO Valor do Desconto do produto eh: %f", perc[indicevetor]);
            printf("\nO Valor Base do produto eh: %f", vr_base[indicevetor]);
            printf("\nO Valor do Desconto do produto eh: %f", vr_desc[indicevetor]);
            printf("\nO Valor Total do produto eh: %f", vr_total);
            vr_total_venda++;
    }

 

  • Curtir 2
  • 2 anos depois...
  • 10 meses depois...
Postado

Bom dia @Mauro Roberto S. Medeiros, o meu código, fiz dessa forma, porém quando listo ele mostra apenas o último valor e não a lista completa de produtos.

 

Segue o código abaixo para alguém dar uma help para resolver. Obrigado pessoal.

#include <stdio.h>
#include <string.h>

int main(void) {

   char nome_prod[100][100];
   char continuar =0;
   char produto;

   float valor_unitario[100];
   float quantidade[100];

   float total[100];
   float desconto[100];
   float subtotal[100];
   float classificao;


   int i;


while(continuar!= 'n'){
for (i=0; i<5;i++);{
   printf( "Insira a classificacao dos produto(s) \n 1 - Informatica \n 2 - Jogos \n 3 - Eletronicos \n Insira o codigo correspondente ao tipo de classificacao:  ");

   scanf("%f", &classificao);

   printf("Insira o nome do produto: ");

   scanf("%s", &nome_prod[i]);

   printf("Insira o valor do produto: ");

   scanf("%f", &valor_unitario[i]);

   printf("Insira a quantidade de unidades a serem compradas: ");

   scanf("%f", &quantidade[i]);

   printf("\nDeseja continuar, informe s para sim ou n para abandonar o programa: ");
   scanf("%s",&continuar);

   puts("\n\n\n");
     }
  }

   if (classificao==1){

 subtotal[i]=valor_unitario[i]*quantidade[i];

 desconto[i]=valor_unitario[i]*0.5;

 total[i]=(subtotal[i]-desconto[i]);

 }else

 if(classificao==2){

 subtotal[i]=valor_unitario[i]*quantidade[i];

 desconto[i]=valor_unitario[i]*0.8;

 total[i]=subtotal[i]-desconto[i];

}else

if(classificao==3){

 subtotal[i]=valor_unitario[i]*quantidade[i];

 desconto[i]=valor_unitario[i]*0.1;

  total[i]=(subtotal[i]-desconto[i]);


  }

for (i=0; i<5;i++);{
  printf("O seu produto e um(a): %s \n",nome_prod[i]);
  printf("Foram comprados(a): %.2f \n",quantidade[i]);
  printf("Valor unitario de:  %.2f\n",valor_unitario[i]);
  printf("Com o desconto aplicado ficou no valor: %.2f", total[i]);

  puts("\n\n");
    }
}


 

 

 

  • Obrigado 1
Postado

@Elizandrotk    seu código não está compilando ,  tem erros de syntaxe ,  não entendi por que você colocou ponto_e_vírgula no loop for , antes da abre  chave , isso cancelou o Loop , e não precisa desse tal Loop , e então seu código poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
    char nome_prod[100][20];                     // ate 100 nomes com 20 letras cada
    char continuar = '0';                        // caractere char de apenas um caractere eh entre aspas simples
    char produto;
    float valor_unitario[100] = {};
    float quantidade[100] = {};
    float total[100] = {};
    float desconto[100] = {};
    float subtotal[100] = {};                    // chaves inicializam as variaveis com valor zero
    float  porcentagem[3] = { 0.05 ,0.08,0.1 };  // as porcentagens dos calculos
    int classificacao = 0;                       // indice de vetor só pode ser int
    int i=0;
    while (toupper(continuar) != 'N')
    {
        printf("Insira a classificacao dos produto(s)\n");
        printf("1 - Informatica\n");
        printf("2 - Jogos\n");
        printf("3 - Eletronicos\n");
        printf("codigo correspondente ao tipo de classificacao ----: ");
        scanf("%d", &classificacao);
        printf("nome do produto -----------------------------------: ");
        scanf("%s", nome_prod[i]);
        printf("valor do produto ----------------------------------: ");
        scanf("%f", &valor_unitario[i]);
        printf("quantidade de unidades a serem compradas ----------: ");
        scanf("%f", &quantidade[i]);
        
        subtotal[i] = valor_unitario[i] * quantidade[i];
        desconto[i] = valor_unitario[i] * porcentagem[classificacao-1];
        total[i] = (subtotal[i] - desconto[i] * quantidade[i]);

        i++;
        while ( char c = fgetc(stdin) != '\n');
        printf("\nDeseja continuar,\nInforme s para sim ou n para abandonar o programa -: ");
        scanf("%c", &continuar);                 // um só caractere é apenas char , sem colchetes
        printf("\n\n");
        if (i > 4)break;
    }
    if (i > 5)printf("\nUltrapassou o Limite de Deposito , que eh cinco produtos . . . !\n\n");
    for(int j=0; j<i; j++)
    {
        printf("O seu produto e um(a) ------------------: %s\n"     , nome_prod     [j] );
        printf("Foram comprados(a) ---------------------: %5.2f\n"  , quantidade    [j] );
        printf("Valor unitario de ----------------------: %5.2f\n"  , valor_unitario[j] );
        printf("Com o desconto aplicado ficou no valor -: %5.2f\n\n", total         [j] );
        printf("\n\n");
    }
    return 0;
}

 

  • 1 ano depois...
Postado

@devair1010 Testei o seu código aqui no meu ambiente, porém quando chega na linha do 
while ( char c = fgetc(stdin) != '\n');

 

Diz ter um erro, "expected expression", saberia me dizer o porque deste erro ocorrer ? 

Abraço e obrigado

  • Obrigado 1
Postado

@kgin Eu to vendo hahaah, eu gosto de ficar fuçando com esses erros nos forums, justamente para aprender. Por aqui ou pelo Stack, da pra pegar bastante coisa e ver como não errar. 

Mais uma vez muito obrigado, eu tinha tentado, mas nem passou pela minha cabeça em tirar o " char c " !

  • Curtir 1
  • Obrigado 1
Postado

Seu programa não está bom, @Mauro Roberto S. Medeiros e ainda está um pouco longe de estar certo.

 

Tem muitos problemas comuns e algo errado com a lógica e com a interpretação do enunciado. 

  • ao postar o código esqueceu a última }
  • O enunciado fala em 4 vetores de 100 posições. Você acrescentou mais 3 sem necessidade. Os outros valores podem e devem ser computados na saída, no tal relatório. Não há razão para ter valor_base valor_desc e valor_total 100 vezes já que é só uma conta e pode ser determinado no relatório.
  •     float vr_total_venda;  // Valor Total das Vendas de

    não acha que devia inicializar um totalizador?

  • 5/100 dá 0. Entenda que divisão por inteiro é assim. Porque não fazer o simples e escrever .05? Se quer usar assim escreva 5.F / 100 para o compilador conventer o 5 para float ANTES de dividir.

  •         if (a_prod == 1)
                if (a_prod == 2)
                    if (a_prod == 3)
    // ...

    provavelmente estaria melhor servido com um switch que é mais legível.

  • não acumulou os totais de venda em vr_total_venda que não inicializou também... Como vai ter o total?

  •         printf(
                "\nDigite a Area do Produto: \n1 para "
                "INFORMATICA - 2 para JOGOS - 3 para "
                "ELETRONICOS \n");


    Ao menos não usou 3 printf() como todo mundo, mas prefira
     

            printf("\
    \n\
      Digite a Area do Produto:\n\
    \n\
        1 para INFORMATICA\n\
        2 para JOGOS\n\
        3 para ELETRONICOS     : ");

     

  • Que mostra
     

    
      Digite a Area do Produto:
    
        1 para INFORMATICA
        2 para JOGOS
        3 para ELETRONICOS     :
    
    

E para o cursor depois do ":". É mais fácil de ler e alinhar no programa. E em geral se espera que a pergunta termine na linha em que o cara vai digitar a resposta.

  • não use um índice com um nome enorme como indicevetor. Só atrapalha você mesmo
  •     for (i = 0; i >= indicevetor; i++)

    nunca escreva isso. Declare a variável de controle DENTROI do for. Em especial se tiver um nominho ingênuo como i. E como apontado por @Simon Viegas e @devair1010 usou o índice errado dentro do for.

  •         scanf("%s", &continuar);

    Teste SEMPRE o retorno de scanf(). Leia o manual

 

12 horas atrás, Gustavo Soriani disse:

while ( char c = fgetc(stdin) != '\n');

 

Diz ter um erro, "expected expression", saberia me dizer o porque deste erro ocorrer ? 

 

C não é C++. Não pode declarar c dentro do comando. E veja essa tabela
 

image.png.ad848b5294e8bd277a21e5f62a57c5bd.png

 

e entenda que  != é avaliado antes de = . [7] e [14]. Na dúvida use parenteses. Mesmo sem a dúvida use parenteses. E evite esse tipo de construção com o loop vazio. Ou ao menos coloque {} ou um comentário para deixar claro que foi de propósito.

 

Alguns compiladores avisam sobre essas coisas. Habilite TODOS os avisos (warnings).

  • Curtir 1

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!