Adauto Posted September 30, 2020 at 10:03 PM Share Posted September 30, 2020 at 10:03 PM Gostaria da ajuda de vocês para identificar o problema nas minhas condicionais e nos calculos dentro delas. Não importa a combinação(&& ou || ) que eu faça sempre cai no primeiro IF e nao passa disso. A intenção é calcular o IR devido. Obrigado #include <stdio.h> #include <stdlib.h> #include <locale.h> void separadorDeSecao(); int main() { //Permite o uso de acentuação conforme o idioma do sistema setlocale(LC_ALL,"Portuguese"); //Declaração de Variaveis. char nome_funcionario[50]; //Armazena um vetor de char de 50 posições float salario; //Armazena valor do salario //Entrada de Dados solicitados ao usuário printf("Entrar com o nome do Funcionario: "); gets(nome_funcionario); printf("Entrar com o valor do salario: "); scanf("%f", &salario); separadorDeSecao(); printf("Funcionario: %s\n", nome_funcionario ); printf("Salário: %.2fR$\n", salario); //Calculo do IR if(salario > 0 || salario <=1637,11 ) { printf("Insento de IR."); } else if(salario >= 1637,12 || salario <= 2453,50) { salario = (salario * (7,5/100)); printf("O valor do Imposto devido é de %f", salario); }else if(salario >= 2453,51 || salario <= 3271,38) { salario = (salario * (15,0/100)); printf("O valor do Imposto devido é de %f", salario); }else if(salario >= 3271,39 || salario <= 4087,65) { salario = (salario * (22,5/100)); printf("O valor do Imposto devido é de %f", salario); }else if(salario > 4087,65) { salario = (salario * (27,5/100)); printf("O valor do Imposto devido é de %f", salario); } system("pause"); return 0; } void separadorDeSecao() { printf("================================================\n"); } Link to comment Share on other sites More sharing options...
fredericopissarra Posted September 30, 2020 at 11:48 PM Share Posted September 30, 2020 at 11:48 PM Você sequer tentou compilar esse troço, tentou? Link to comment Share on other sites More sharing options...
Adauto Posted October 1, 2020 at 12:11 AM Author Share Posted October 1, 2020 at 12:11 AM 23 minutos atrás, fredericopissarra disse: Você sequer tentou compilar esse troço, tentou? Cara o quanto deve ser amarga e triste a sua vida ao ponto de ao invés tentar ajudar você se da ao trabalho de vim bostejar e vomitar arrogância em cima do post alheio. Já é a segunda vez que eu venho e peço ajuda e você por algum motivo tenta menosprezar tudo que eu fiz. Se você não é capaz de ajudar alguém que esta iniciando e tendo dificuldade passa direto. Mas se isso faz essa tua vida vazia ter algum sentindo ok, eu até entendo, mas deveria se tratar. E tenho certeza que você um dia quando começou teve dificuldade mesmo que nas coisas simples. Agora por favor quando se deparar com algum pedido meu se não foi pedir muito ignore caso não queira ajudar. Se for pra tentar me menosprezar e destilar seu amargor passe longe, por favor. Passa bem. Link to comment Share on other sites More sharing options...
fredericopissarra Posted October 1, 2020 at 12:21 AM Share Posted October 1, 2020 at 12:21 AM Blz... já que você não quer uma explicação sobre o problema, tá tudo certo... Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted October 2, 2020 at 03:09 PM Administrators Share Posted October 2, 2020 at 03:09 PM Conviver num ambiente, mesmo que online, onde pessoas que não conhecem você - e talvez nem queiram conhecer - não é simples. Exige uma certa resiliência para não se ofender. Peço que ambos relevem, caso tenham se ofendido, e vamos nos ater ao problema. ? @Adauto, não cheguei a compilar, mas se você colou o código exatamente como está, precisa substituir essas vírgulas nos seus valores decimais por ponto. Se quiser deixar esse código mais pro, pode trocar a gets() pela gets_s() - mas se atenta para o fato de que esta requer 2 argumentos. ? Usar system("pause") deixa teu código preso ao Windows. Eu removeria isso, ou pelo menos deixaria dentro de um #ifdef pra testar se é Windows, mas enfim, é um capricho. Outros usuários podem dar outras sugestões do que fazer com isso. kkkk Abraços! Link to comment Share on other sites More sharing options...
fredericopissarra Posted October 2, 2020 at 04:33 PM Share Posted October 2, 2020 at 04:33 PM Fernando, Só para constar: gets() e gets_s() não constam da biblioteca padrão. E existe um outro problema mais sutil do que as vírgulas. Mas, como fui tão carinhosamente pedido para ignorar e "passar longe", curtindo minha vida amarga e triste, deixo para descobrirem... Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted October 2, 2020 at 10:08 PM Administrators Share Posted October 2, 2020 at 10:08 PM 5 horas atrás, fredericopissarra disse: gets() e gets_s() não constam da biblioteca padrão Opa, A get_s() é definida na C11 mas alguns compiladores não implementaram mesmo, não sei o motivo. De qualquer forma, se ele tá usando system("pause"), imagino que esteja no Windows e Visual Studio tem. ? 5 horas atrás, fredericopissarra disse: Mas, como fui tão carinhosamente pedido para ignorar e "passar longe", curtindo minha vida amarga e triste, deixo para descobrirem... O que acha de tanto você quando o Adauto relevarem essa história e esquecerem isso? Não faz bem pra vocês... ? Abraços! Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted October 2, 2020 at 10:38 PM Administrators Share Posted October 2, 2020 at 10:38 PM Em tempo, aqui a galera sugere getline() ou fgets(). ? Link to comment Share on other sites More sharing options...
fredericopissarra Posted October 2, 2020 at 10:56 PM Share Posted October 2, 2020 at 10:56 PM Também prefiro getline() em certos casos, para deixar a função alocar o buffer, mas ela é POSIX, não ISO. De fato, get_s() é mesmo definida na C11, mas gets() sumiu na C99 e não existe por lá também... talvez seja por isso. Link to comment Share on other sites More sharing options...
SirFeliX Posted October 8, 2020 at 08:03 PM Share Posted October 8, 2020 at 08:03 PM é necessário utilizar ' . ' nas casas decimais você está utilizando ' , '. você utiliza ||, nesse caso a condição do salario ser > 0 é sempre satisfeita, você deve utilizar &&. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.