Informática, perguntado por Alocademais7727, 11 meses atrás

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

Respondido por mayaravieiraj
0

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);

Perguntas interessantes