Ir ao conteúdo

Posts recomendados

Postado

por algum motivo a primeira multiplicação está dando errado e eu não sei o que fazer, todo o resto está correto menos a primeira, alguém sabe como resolvo isso?

#include<stdio.h>
#include<stdlib.h>
int main()

{
	float sal;
	
	printf("Digite o valor do seu salario: \n");	
	scanf("%f",&sal);
	
	if(sal<=800) {
		sal = sal*1.1; //primeira multiplicaçao
	}
	
	if(sal<=1200) {
		sal = sal*1.08;	
	}
	
	else {
		sal = sal*1.05;
	}
	
	printf("\n O salario foi de:%.1f",sal);

	return 0;	
}

 

 

 

 

 


 

Postado

o dando errado é a primeira multiplicação, ela está dando outro resultado do que deveria de fato dar, não percebi a falta de um else, tentarei colocar e ver se agora vai, sim eu sei que é menor que 800 também é menos que 1200 porém eu preciso separar os dois pra conseguir fazer um calculo 

o dando errado é a primeira multiplicação, ela está dando outro resultado do que deveria de fato dar, não percebi a falta de um else, tentarei colocar e ver se agora vai, sim eu sei que é menor que 800 também é menos que 1200 porém eu preciso separar os dois pra conseguir fazer um calculo.

coloquei o else que faltava e deu certo, obrigado

  • Curtir 1
Postado

@CaioBMeyer Se postar o enunciado vai ficar mais fácil ajudar, mas parece que está tentando acrescentar 10% ao salário se <= 800; 8% se > 800 e <= 1200; E 5% nos outros casos. Em vez de apenas if, faça else if no teste do 1200.

  • Amei 1
Postado
4 minutos atrás, Midori disse:

e postar o enunciado vai ficar mais fácil ajudar, mas parece que está tentando acrescentar 10% ao salário se <= 800; 8% se > 800 e <= 1200; E 5% nos outros casos. Em vez de apenas if, faça else if no teste do 1200

Como eu disse o else está faltando no if anterior, que compara o salario lido com 800 ;) 

@CaioBMeyer

  • Não precisa de chaves se tem apenas uma expressão no if. Elas mais atrapalham que ajudam nesse caso
  • TESTE SEMPRE o retorno de scanf(). Qual o sentido de seguir se não leu o salário?
  • o padrão para uma constante como 1.05 é double e não float. Você declarou sal como float. E está comparando com 800 que é int e multiplicando por valores que são float. Seu compilador deve ter avisado sobre isso e se não avisou aprenda a usar -Wall ou /W3 ao compilar seu programa para ver esses avisos. Evite conversões implícitas

Prefira algo como

 

#include <stdio.h>

int main(void)
{
    float sal = 0.f;
    printf("Digite o valor do seu salario: \n");
    if (scanf("%f", &sal) != 1) return -1;

    if (sal <= 800.f)
        sal *= 1.1f;
    else if (sal <= 1200.f)
        sal *= 1.08f;
    else
        sal *= 1.05f;

    printf("\nSalario corrigido: %.2f", sal);
    return 0;
}

 

  • Amei 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!