Adauto Postado Setembro 30, 2020 em 22:03 Compartilhar Postado Setembro 30, 2020 em 22:03 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 para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Setembro 30, 2020 em 23:48 Compartilhar Postado Setembro 30, 2020 em 23:48 Você sequer tentou compilar esse troço, tentou? Link para o comentário Compartilhar em outros sites More sharing options...
Adauto Postado Outubro 1, 2020 em 00:11 Autor Compartilhar Postado Outubro 1, 2020 em 00:11 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 para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Outubro 1, 2020 em 00:21 Compartilhar Postado Outubro 1, 2020 em 00:21 Blz... já que você não quer uma explicação sobre o problema, tá tudo certo... Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Outubro 2, 2020 em 15:09 Compartilhar Postado Outubro 2, 2020 em 15:09 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 para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Outubro 2, 2020 em 16:33 Compartilhar Postado Outubro 2, 2020 em 16:33 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 para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Outubro 2, 2020 em 22:08 Compartilhar Postado Outubro 2, 2020 em 22:08 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 para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Outubro 2, 2020 em 22:38 Compartilhar Postado Outubro 2, 2020 em 22:38 Em tempo, aqui a galera sugere getline() ou fgets(). ? Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Outubro 2, 2020 em 22:56 Compartilhar Postado Outubro 2, 2020 em 22:56 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 para o comentário Compartilhar em outros sites More sharing options...
SirFeliX Postado Outubro 8, 2020 em 20:03 Compartilhar Postado Outubro 8, 2020 em 20:03 é 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 para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.