David Mendonça Postado Março 12, 2011 Denunciar Share Postado Março 12, 2011 #include <iostream> #include <stdio.h> using namespace std; double ir (double sal, double taxa) //funçao que calcula o imposto devido { double desc, salarioliq; desc = (sal * taxa)/100; salarioliq = sal - desc; } main() { int op; int p; double sal, desc, salarioliq, taxa; cout<< "Digite a opcao: \n"; cin >> op; cout<< "Digite o valor do salario. \n"; cin >> sal; switch (op) { case 1: //Salario menor ou igual a 500,00 cout<< "Funcionario isento \n"; break; case 2: //Salario entre 500,00 e 1500,00 taxa = 5; ir (sal, taxa); //Aplicando a funçao IR cout<< "IR devido:" << desc <<" \n"; cout<< "Salario líquido:" << salarioliq <<" \n"; break; case 3: //Salario entre 1500,00 e 2500,00 taxa=15; ir (sal, taxa); cout<< "IR devido:" << desc <<" \n"; cout<< "Salario liquido:" << salarioliq <<" \n"; break; case 4: //Salario maior que 2500,00 taxa=20; ir (sal, taxa); cout<< "IR devido:" << desc <<" \n"; cout<< "Salario liquido:" << salarioliq <<" \n"; } cin >> p; }Criei essa função para calcular o IR. Mas ta retornando o desconto e o salario liquido na forma exponencial.Ao invés de declarar os ponto flutuantes com double já tentei tambem com float, mas continuou exibindo dessa forma. Ex: 7.97872e-312. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CPP Postado Março 14, 2011 Denunciar Share Postado Março 14, 2011 Olá David,Sua função ir() não estava retornando um valor valido para a pilha.Eu inclui a saída do IR Devido e do Salário liquido dentro da função pra você ver os resultados já que as variáveis foram declaradas locais dentro da função.Você entende o conceito de escopo de variaveis?Qualquer duvida posta ai.Abs#include <iostream> #include <stdio.h> using namespace std; double ir (double sal, double taxa) //funçao que calcula o imposto devido { float desc, salarioliq; desc = (sal * (taxa))/100.0; salarioliq = sal - desc; cout << "IR devido: " << desc <<" \n"; cout << "Salario liquido:" << salarioliq <<" \n"; return 0.00; } void main(void) { int op; int p; float sal, desc, salarioliq, taxa; desc = 0.0; salarioliq = 2000.0; cout<< "Digite a opcao: \n"; cin >> op; cout<< "Digite o valor do salario. \n"; cin >> sal; switch (op) { case 1: //Salario menor ou igual a 500,00 cout<< "Funcionario isento \n"; break; case 2: //Salario entre 500,00 e 1500,00 taxa = 5; desc = ir (sal, taxa); //Aplicando a funçao IR //cout<< "IR devido:" << desc <<" \n"; //cout<< "Salario líquido:" << salarioliq <<" \n"; break; case 3: //Salario entre 1500,00 e 2500,00 taxa=15; ir (sal, taxa); //cout << "IR devido: " << desc <<" \n"; //cout << "Salario liquido:" << salarioliq <<" \n"; break; case 4: //Salario maior que 2500,00 taxa=20; ir (sal, taxa); // cout<< "IR devido:" << desc <<" \n"; // cout<< "Salario liquido:" << salarioliq <<" \n"; break; } cin >> p; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 David Mendonça Postado Março 19, 2011 Autor Denunciar Share Postado Março 19, 2011 Ok. Entendi.Valeu. Brigadão! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
David Mendonça
Criei essa função para calcular o IR. Mas ta retornando o desconto e o salario liquido na forma exponencial.
Ao invés de declarar os ponto flutuantes com double já tentei tambem com float, mas continuou exibindo dessa forma. Ex: 7.97872e-312.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.