Ir ao conteúdo

C Faculdade - questão em C com erro


Ir à solução Resolvido por Visitante,

Posts recomendados

  • Solução
Postado

Estou com problemas na parte de escolher o tipo veículo.

Quando digito o valor do veículo, tentei com o valor de R$40.000,00 nesse exemplo, ele pula a escolha do tipo do veículo e finaliza o algoritmo sem poder escolher entre Hatch, Sedan e SUV. E registra no .txt R$40.000,00, no lugar do tipo do veículo

 

 

  Citação

Faça um algoritmo que cadastre os principais dados de identificação de um veículo, que são:
a. Número do Chassi
b. Placa
c. Ano de Fabricação
d. Ano do modelo e. Marca
f. Modelo
g. Versão
h. Potência do motor em cv
i. Valor
j.Tipo de veículo (Hatch, Sedam, SUV...)

Após o cadastro, verificar em qual faixa de percentual de impostos o veículo se enquadra e fazer o
cálculo do imposto a pagar. O imposto é o percentual de imposto sobre o valor total do veículo e os
percentuais estão abaixo

Entre 50 e 99 cv e Hatch – 2% de imposto sobre o preço total do veiculo
Entre 100 e 124 cv e Hatch – 3% de imposto sobre o preço total do veiculo
Entre 125 e 150 cv e Hatch – 5% de imposto sobre o preço total do veiculo
Acima de 150 cv e Hatch – 6% de imposto sobre o preço total do veiculo

Entre 50 e 99 cv e Sedam – 3% de imposto sobre o preço total do veiculo
Entre 100 e 124 cv e Sedam –4% de imposto sobre o preço total do veiculo
Entre 125 e 150 cv e Sedam – 6% de imposto sobre o preço total do veiculo
Acima de 150 cv e Sedam – 7% de imposto sobre o preço total do veiculo

Todos os dados cadastrados e calculados devem ser salvos em um arquivo texto. Apresentar o algoritmo e o programa em código C.

Expandir  

 

 

 

image.png.8bc4a119b94760faa0b6016a95edcdf9.pngimage.png.c9821ac29f0f8ea8406b10483ee32624.png

 

 

Código

#include <stdio.h>

//Hatch=======================================================
int doishatch(float valor)
{
    int imposto;
    imposto = (valor * 2) / 100;
    return(imposto);
}

int treshatch(float valor)
{
    int imposto;
    imposto = (valor * 3) / 100;
    return(imposto);
}

int cincohatch(float valor)
{
    int imposto;
    imposto = (valor * 5) / 100;
    return(imposto);
}

int seishatch(float valor)
{
    int imposto;
    imposto = (valor * 6) / 100;
    return(imposto);
}

//Sedan=======================================================
int tressedan(float valor)
{
    int imposto;
    imposto = (valor * 3) / 100;
    return(imposto);
}

int quatrosedan(float valor)
{
    int imposto;
    imposto = (valor * 4) / 100;
    return(imposto);
}

int seissedan(float valor)
{
    int imposto;
    imposto = (valor * 6) / 100;
    return(imposto);
}

int setesedan(float valor)
{
    int imposto;
    imposto = (valor * 7) / 100;
    return(imposto);
}

//===========================================================
int main ()
{
    int chassi, anofab, anomodelo, potencia, tipo;
    char placa[18], modelo[18], versão[18], marca[18];
    float valor, imposto;

    FILE *arq;

    arq=fopen("carro.txt", "w");

    printf ("Digite o numero do chassi: ");
	scanf ("%d", &chassi);

    printf ("Digite sua placa: ");
	scanf ("%s", &placa);

    printf ("Digite o ano de fabricação: ");
	scanf ("%d", &anofab);

	printf ("Digite o ano do modelo: ");
	scanf ("%d", &anomodelo);

	printf ("Digite a marca do veiculo: ");
	scanf ("%s", &marca);

	printf ("Digite o modelo: ");
	scanf ("%s", &modelo);

	printf ("Digite a versão: ");
	scanf ("%s", &versão);

	printf ("Digite a potencia do motor em CVs: ");
	scanf ("%d", &potencia);

	printf ("Digite o valor do carro: ");
	scanf ("%f", &valor);

    printf ("Digite o tipo do veiculo: 1 = Hatch / 2 = Sedan / 3 = SUV: ");
	scanf ("%d", &tipo);

//Hatch=======================================================

    if (tipo == 1)
    {
        if ((potencia >= 50) && (potencia <= 99))
        {
            imposto = doishatch(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }

        if ((potencia >= 100) && (potencia <= 124))
        {
            imposto = treshatch(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }

        if ((potencia >= 125) && (potencia <= 150))
        {
            imposto = cincohatch(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }

        if (potencia > 150)
        {
            imposto = seishatch(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }
    }

//Sedan=======================================================

    if (tipo == 2)
    {
        if ((potencia >= 50) && (potencia <= 99))
        {
            imposto = tressedan(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }

        if ((potencia >= 100) && (potencia <= 124))
        {
            imposto = quatrosedan(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }

        if ((potencia >= 125) && (potencia <= 150))
        {
            imposto = seissedan(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }

        if (potencia > 150)
        {
            imposto = setesedan(valor);
            printf ("Imposto do veiculo: %f ", imposto);
        }
    }

//SUV
    if (tipo == 3)
    {
        printf ("não encontrado");
    }

    fprintf(arq, "Numero do chassi: %d \n", chassi);
    fprintf(arq, "Placa: %s \n", placa);
    fprintf(arq, "Ano de fabricação: %d \n", anofab);
    fprintf(arq, "Ano do modelo: %d \n", anomodelo);
	fprintf(arq, "Marca do veiculo: %s \n", marca);
	fprintf(arq, "Modelo: %s \n", modelo);
	fprintf(arq, "versão: %s \n", versão);
	fprintf(arq, "Potencia: %d \n", potencia);
	fprintf(arq, "Valor do veiculo: R$%f \n", valor);
	fprintf(arq, "Tipo do veiculo: %d \n", tipo);
	fprintf(arq, "Imposto: R$%f \n", imposto);

	fclose(arq);
}

 

Postado

@Drumm25   lendo o teclado com scanf  isso acontece , por que ele não pega o newline , e tem muitos modos de tentar resolver ,  você pode colocar um 

getchar();

após o scanf ,  ou   

fflush(stdin);

antes do scanf , ou um 

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

   logo após o scanf ..

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!