Ir ao conteúdo

Posts recomendados

Postado

Saudações,

 

Estou realizando um exercicio onde se deve pedir o valor de um carro, o seu ano, com estes dois valores, caso o carro seja de 2000 para baixo, devera conter 12% de desconto, caso seja acima de 2000, 7% de desconto. O algoritmo deverá retornar o Valor a pagar, o desconto que foi oferecido, a quantidade de carros até o ano 2000, e a quantidade total, depois de informado os resultados, o algoritmo pergunta se o usuario quer continuar ou não. Eu estabeleci que o usuario deve digitar 1 para continuar, e 2 para sair.

 

O problema é que o algoritmo não esta entrando na função for, mesmo com o valor de "parar" já estabelecido em 1. Onde está o erro ?

 

Segue o algoritmo:

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

/* Digitar o preço do carro, calcular o desconto e o valor a ser pago, Carros < 2000 - 12% de desconto, Carros > 2000 - 7% de desconto
o sistema pergunta se deve continuar a calcular até a resposta ser N, no final, informa total de carros com ano até 2000 e total geral */
float ValorPago (float valor_carro, float valor_desconto){
    float valor_pago;
    valor_pago = valor_carro - valor_desconto;
    return valor_pago;
}
float ValorDescontoMenor2000 (float valor_carro){
    float valor_desconto;
    valor_desconto = valor_carro * 0.12;
    return valor_desconto;
}
float ValorDescontoMaior2000 (float valor_carro){
    float valor_desconto;
    valor_desconto = valor_carro * 0.07;
    return valor_desconto;
}

int main() {
    float valor_carro, valor_desconto, valor_pago;
    int ano_carro, parar, qtd_2000, qtd_total;
    
    setlocale (LC_ALL, "");
    
    qtd_2000 = 0;
    qtd_total = 0;
    parar = 1;
    
    for (parar = 1; parar >= 2; qtd_total ++){
        
        printf("\n Digite o valor do carro \t");
        scanf ("%f", & valor_carro);
        printf("\n Digite o ano do carro\t");
        scanf ("%d", & ano_carro);
        if (ano_carro <= 2000){
            valor_desconto = ValorDescontoMenor2000 (valor_carro);
            valor_pago = ValorPago (valor_carro, valor_desconto);
            printf("O valor a ser pago é: %.2f \n Desconto:%.2f", valor_pago, valor_desconto);
            qtd_2000 ++;
        }
        else{
                valor_desconto = ValorDescontoMaior2000 (valor_carro);
                valor_pago = ValorPago (valor_carro, valor_desconto);
                printf("O valor a ser pago é: %.2f \n Desconto: %.2f", valor_pago, valor_desconto);        
            }
        
        printf("\n Digite 1 para continuar ou 2 para sair \t");
        scanf("%d", & parar);
    } 
    printf("Quantidade de carros total: %d \n Quantidade de carros com ano até 2000: %d", qtd_total, qtd_2000);
    return 0;
}

 

"

 

  • Curtir 1
Postado

@Marcos William M    exatamente o que o @Xaws  disse, esse for assim não funciona ,  creio que seja melhor usar o do /  while .

  então seu código ficaria assim :

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

/* Digitar o preço do carro, calcular o desconto e o valor a ser pago, Carros < 2000 - 12% de desconto, Carros > 2000 - 7% de desconto
o sistema pergunta se deve continuar a calcular até a resposta ser N, no final, informa total de carros com ano até 2000 e total geral */
float ValorPago (float valor_carro, float valor_desconto){
    float valor_pago;
    valor_pago = valor_carro - valor_desconto;
    return valor_pago;
}
float ValorDescontoMenor2000 (float valor_carro){
    float valor_desconto;
    valor_desconto = valor_carro * 0.12;
    return valor_desconto;
}
float ValorDescontoMaior2000 (float valor_carro){
    float valor_desconto;
    valor_desconto = valor_carro * 0.07;
    return valor_desconto;
}

int main() {
    float valor_carro, valor_desconto, valor_pago;
    int ano_carro, parar, qtd_2000, qtd_total;

    setlocale (LC_ALL, "");

    qtd_2000 = 0;
    qtd_total = 0;
    parar = 1;

    do{
        parar=1;
        printf("\n Digite o valor do carro \t");
        scanf("%f",&valor_carro);
        printf("\n Digite o ano do carro\t");
        scanf("%d",&ano_carro);
        qtd_total++;
        valor_desconto = ValorDescontoMenor2000 (valor_carro);
        valor_pago = ValorPago (valor_carro, valor_desconto);
        printf("O valor a ser pago é: %.2f \n Desconto:%.2f", valor_pago, valor_desconto);
        if(ano_carro <= 2000){
            qtd_2000 ++;
        }
        printf("\n Digite 1 para continuar ou 2 para sair \t");
        scanf("%d",&parar);
    }while(parar != 2);
    printf("\n Quantidade de carros total: %d \n Quantidade de carros com ano até 2000: %d", qtd_total, qtd_2000);
    printf("\n     Tecle");
    getch();
    printf("\n\n");
    return 0;
}

 

  • Curtir 1
Postado
17 horas atrás, Xaws disse:

@Marcos William M   O erro ta aqui
 


 for (parar = 1; parar >= 2; qtd_total ++){

O certo devia ser 
 for (parar = 1; parar >= 1; qtd_total ++){

 

 

Fazendo deste jeito, o Loop fica infinito, independente do valor que tu digitar quando ele pergunta se tu deseja continuar ou  nao.

 

Conseguir fazer o codigo funcionar desta maneira :

 

for (parar = 1; parar < 2; qtd_total ++){
		
		printf("\n Digite o valor do carro \t");
		scanf ("%f", & valor_carro);
		printf("\n Digite o ano do carro\t");
		scanf ("%d", & ano_carro);
		if (ano_carro <= 2000)

No entanto, o que ainda não entendi é que com esta linha de comando, decifrando o for seria: Começar quando parar seja igual a 1, parar quando o parar for menor que 2, acrescentar 1 unidade em qtd_total. Certo ?

Postado

@Marcos William M  Da forma que eu falei funcionou normal, eu testei aqui (uso o devc++)

"No entanto, o que ainda não entendi é que com esta linha de comando, decifrando o for seria: Começar quando parar seja igual a 1, parar quando o parar for menor que 2, acrescentar 1 unidade em qtd_total. Certo ?"

Não entendi direito sua pergunta, mais se for o que faz o for nesse caso: for (parar = 1; parar < 2; qtd_total ++){
 Sempre que parar for menor que 2 ele vai add

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!