Escreva um programa em linguagem C que receba como dado de entrada a base de cálculo mensal de um trabalhador (seu salário) e retorne o imposto de renda devido. Base de cálculo IR: Até 1903,98 é isento IRPF... De 1903,99 até 2826,65 >>7,5%>>142,8...De 2826,66 até 3751,05 >>15%>>354,80....De 2826,66 até 3751,05 >>22,5%>>636,13...Acima de 4664,68>>27,5%>>869,36.
Soluções para a tarefa
Oi!
Foi escrito um programa em linguagem C que recebe como dado de entrada a base de cálculo mensal de um trabalhador. Observe que você poderá utilizá-lo como inspiração para fazer o seu próprio e realizar pequenas modificações.
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include <windows.h>
// Define as constantes que serão as opções do menu
#define OP_CADASTRO 1
#define OP_LISTA_FUNC 2
#define OP_LISTA_CARGO 3
#define OP_GASTO_MENSAL 4
calcular_Inss(float salarioBase, float desconto){
const float ISENCAO08=0.08;// É constante que recebe o valor de 8%
const float ISENCAO09=0.09;// É constante que recebe o valor de 9%
const float ISENCAO11=0.11;// É constante que recebe o valor de 11%
const float ISENCAO_MAIOR=334.29;//É constante que recebe o valor de R$ 334,29
//verifica se o salario total do funcionario no ano é menor que R$ 911,70
if (salarioBase <= 911.70) {
//verifica se o salario é menor R$ 911,70 e calcula o valor do desconto
desconto = (salarioBase * ISENCAO08);
}
//verifica se o salario é maior que R$ 911.70 ou é menor R$ 1519,50 e calcula o valor do desconto
else if ((salarioBase > 911.70) && (salarioBase <= 1519.50)) {
//Calcula o valor da isenção
desconto = (salarioBase * ISENCAO09);
}
//verifica se o salario é maior ou igual a R$ 1519,50 ou é menor que R$ 3.038,99
else if (salarioBase > 1519.50 && salarioBase < 3038.99) {
//Calcula o valor da isenção
desconto = (salarioBase * ISENCAO11);
}
int main(int argc, char *argv[]){
const float indice_educacao=0.025;
int i, opcao, matricula, anoContratacao;
char nome[20]; char c;
int tamnome;
char cargo[20];
char usuario[6];
char senha[5];
char enfeite;
float salarioBase, desconto, salarioLiquido, salario_educacao, dependentes;
i = 0; enfeite = 0; desconto = 0.0;
//salarioLiquido = (salarioBase - desconto)+ salario_educacao;
// Mostra mensagem na tela pedindo que informe o usuario
printf ("\n\t\tDIGITE O NOME DO USUARIO: ");
gets(usuario);
fflush(stdin);
// Mostra mensagem na tela pedindo que informe a senha
printf ("\t\tDIGITE A SUA SENHA: ");
gets(senha);
// Verifica se o usuario é igual a nulo ou seja se não foi digitado nada
if (usuario == NULL){
// Mostra mensagem na tela avisando o usuário que ele não existe
printf("usuario nao existe!");
}
// Faz uma comparação entre o que o usuario digitou e os valores corretos para usuario e senha
if (strcmp(usuario,"admin")==0 && strcmp(senha,"root")==0) {
// Mostra a mensagem na tela informando que os dados estão corretos.
printf ("\t\tOs dados estão corretos!\n");
//system("pause");
do {
// Comando do windows system que limpa a tela
system("cls");
menuEntrada(opcao);
printf ("\n\t\tQUAL A OPCAO VOCE DESEJA? ");
scanf("%d", &opcao);
// Comando do windows system que limpa a tela
system("cls");
switch (opcao) {
case OP_CADASTRO:
// Comando do windows system que limpa a tela
system("cls");
printf ("\n\t\tDIGITE A MATRICULA DO FUNCIONARIO: ");
scanf ("%d", &matricula);
fflush(stdin);
printf ("\n\t\tDIGITE O NOME DO FUNCIONARIO: ");
gets(nome);
fflush(stdin);
printf ("\n\t\tDIGITE O ANO DE CONTRATACAO: ");
scanf ("%d", &anoContratacao);
fflush(stdin);
printf ("\n\t\tQUAL O CARGO DO FUNCIONARIO: ");
gets(cargo);
fflush(stdin);
printf ("\n\t\tDIGITE O SALARIO BASE: ");
scanf ("%f", &salarioBase);
calcular_Inss(desconto, salarioBase);
printf ("\n\t\tQUANTOS DEPENDENTES O FUNCIONARIO TEM? ");
scanf ("%f", &dependentes);
fflush(stdin);
calcular_Inss(salarioBase, desconto);
salario_educacao = (salarioBase * (indice_educacao * dependentes));
salarioLiquido = ((salarioBase + salario_educacao) - desconto);
// Declarar um identificador de fluxo, faça como se fosse uma variável normal:
FILE *fp;//Utilize o asterisco
// Verifica se existe um arquivo bancoDados.txt. O atributo a+ cria um arquivo
if ((fp = fopen("bancoDados.txt","a+")) == NULL){
printf("Impossível criar arquivo");
}
else{
fprintf(fp,"%d", matricula);
fprintf(fp,"\n");
fputs(nome,fp);
fprintf(fp,"\n");
fprintf(fp,"%d", anoContratacao);
fprintf(fp,"\n");
fputs(cargo,fp);
fprintf(fp,"\n");
fprintf(fp,"%.2f", salarioBase);
fprintf(fp,"\n");
fprintf(fp,"%.f", dependentes);
fprintf(fp,"\n");
fprintf(fp,"%.2f", salarioLiquido);
fprintf(fp,"\n");
}
fclose(fp);
// Abre o arquivo pelo windows
system("bancoDados.txt");// quando está na mesma pasta do executavel usa caminho relativo
// Comando do windows system que limpa a tela
system("cls");
break;
case OP_LISTA_FUNC:
break;
case OP_LISTA_CARGO:
break;
case OP_GASTO_MENSAL:
}
}while (opcao != 6);
}
//getch();
//return 0;
}
menuEntrada(int opcao){
printf ("\n\t\t[%d] CADASTRAR FUNCIONARIO\n", OP_CADASTRO);
printf ("\t\t[%d] LISTAR FUNCIONARIOS POR CARGO\n", OP_LISTA_CARGO);
printf ("\t\t[%d] GASTO MENSAL\n", OP_GASTO_MENSAL);
printf ("\t\t[%d] FECHAR PROGRAMA\n", OP_SAIR);