Ir para conteúdo

Recommended Posts

boa tarde, 

 

Sou novo aqui, estou no primeiro semestre de Sistemas de Informação, estou cm dificuldades em um código aqui.

 

Calcule o imposto de renda de um grupo de dez contribuintes, considerando que os dados de cada contribuinte, número do CPF, número de dependentes
e renda mensal são valores fornecidos pelo usuário. Para cada contribuinte será feito um desconto de 5% do salário mínimo por dependente.
Os valores da alíquota para cálculo do imposto são:
    Renda líquida                    Alíquota
Até 2 salários mínimos                Isento
2 a 3 salários mínimos                  5%
3 a 5 salários mínimos                  10%
5 a 7 salários mínimos                  15%
Acima de 7 salários mínimos             20%
Observe que deve ser fornecido o valor atual do salário mínimo para que o algoritmo calcule os valores corretamente.

 

meu código só esta calculando qndo isento, segue abaixo

 

 

#include<stdio.h>
#include<locale.h>
void main(){
    setlocale(LC_ALL, "Portuguese");
    float ndp=0, minimo=0, salario=0, irrf=0, irrfs=0, irrfd=0, cpf, cont;  //ndp=numero de dependentes, irrf= imposto devido, irrfs= imposto sobre o salário, irrfd= imposto sobre dependente
   
 printf("Informe o salário mínimo atual: ");
    scanf("%f", &minimo);
    for(cont=1; cont <=10; cont++){
        printf("\nInforme o CPF: ");
        scanf("%f", &cpf);
        printf("Informe o número de dependentes: ");
        scanf("%f", &ndp);
        printf("Informe o Salário: ");
        scanf("%f", &salario);
        renda=salario/minimo;
        if (renda<=2){
            irrf=0;
            printf("IRRF= ISENTO.\n");
        }else if (renda<=3){
            irrfs=salario*0,05;
            irrfd=ndp*(minimo*0,05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }else if (renda<=5){
            irrfs=salario*0,10;
            irrfd=ndp*(minimo*0,05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }else if (renda<=7){
            irrfs=salario*0,15;
            irrfd=ndp*(minimo*0,05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }else if (renda>7){
            irrfs=salario*0,20;
            irrfd=ndp*(minimo*0,05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }
    }
    system("PAUSE");
}


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1- o tipo de retorno de main é int, não void.

2- não vi a declaração da variável renda

3- cpf normalmente se lê como string (zeros à esquerda, problemas de representação com float)

4- não há motivo algum p/ dependentes ser float. Não se tem 3.19 dependentes.

5- note que nas multiplicações você utilizou vírgula nas constantes ao invés de ponto decimal.

Normalmente não se compara float/double diretamente. Usa-se uma margem de erro.
 

#include<stdio.h>
#include <math.h>
int main(){
    const float EPSILON = 0.000001;
    float minimo, salario, irrf, irrfs, irrfd, cpf, cont; 
    float renda;
    int ndp = 0;
    minimo = irrf = irrfs = irrfd = 0.0;
    
    printf("Informe o salário mínimo atual: ");
    scanf("%f", &minimo);
    for(cont=1; cont <=10; cont++){
      
        printf("\nInforme o CPF: ");
        scanf("%f", &cpf);
        printf("Informe o número de dependentes: ");
        scanf("%d", &ndp);
        printf("Informe o Salário: ");
        scanf("%f", &salario);

        renda= salario/minimo;

        if (fabs(renda - 2.00) < EPSILON){
            irrf=0;
            printf("IRRF= ISENTO.\n");
        } else if (fabs(renda - 3.00) < EPSILON){
            irrfs=salario*0.05;
            irrfd=ndp*(minimo*0.05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }else if (fabs(renda - 5.00) < EPSILON){
            irrfs=salario*0.10;
            irrfd=ndp*(minimo*0.05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }else if (fabs(renda -7.00) < EPSILON){
            irrfs=salario*0.15;
            irrfd=ndp*(minimo*0.05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }else {
            irrfs=salario*0.20;
            irrfd=ndp*(minimo*0.05);
            irrf=irrfs-irrfd;
            printf("IRRF= %.2f", irrf);
        }
    }
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na faculdade usamos codeblocks p implementação d códigos e o retorno utilizado é void. A var renda: salário. Dependentes já alterei p int. Qto a vírgula qdo utilizado a biblioteca<locale.h> ele reconhece assim cm reconhece os acentos. Ja consegui implementar o cód daqui a pouco posto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na faculdade usamos codeblocks p implementação d códigos e o retorno utilizado é void.

 

 

Pois é,mas está errado. O padrão da linguagem diz que é int. Tem até um tópico sobre isso aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include<stdio.h>
#include<locale.h>

void main(){

    setlocale(LC_ALL, "Portuguese");

    float minimo=0, salario=0, irrf=0, irrfs=0, irrfd=0, renda;
    int ndp=0, cpf, cont;
    /*mdp= numero de dependentes, minimo= salário mínimo atual, salário= salário do contribuinte
    irrf= imposto a ser pago, irrfs= imposto sob o salário recebido, irrfd= imposto a ser restituido
    renda= cálculo para descobrir o equivalente do salário mínimo*/

    printf("\n**********************************************\n");
    printf("\n\t PROGRAMA PARA CÁLCULO DE IRRF\n");
    printf("\n**********************************************\n");

    printf("\nInforme o salário mínimo atual:R$ ");
    scanf("%f", &minimo);

    printf("\n\n**********************************************\n");

    for(cont=1; cont <=10; cont++){
        printf("\nInforme o CPF: ");
        scanf("%f", &cpf);
        printf("Informe o número de dependentes: ");
        scanf("%f", &ndp);
        printf("Informe o Salário:R$ ");
        scanf("%f", &salario);

        renda=salario/minimo;

        if (renda<=2){
            irrf=0;
            printf("IRRF= ISENTO.\n");

        }else if (renda<=3){
            irrfs=salario*5/100;
            printf("Imposto sob salário é de 5%% que equivale à: R$%.2f", irrfs);
            irrfd=ndp*(minimo*0,05);
            printf("\nO valor a ser restituido é de:R$ %.2f", irrfd);
            irrf=irrfs-irrfd;
            printf("\nIRRF= R$%.2f\n", irrf);

        }else if (renda<=5){
            irrfs=salario*10/100;
            printf("Imposto sob salário é de 10%% que equivale à: R$%.2f", irrfs);
            irrfd=ndp*(minimo*0,05);
            printf("\nO valor a ser restituido é de:R$ %.2f", irrfd);
            irrf=irrfs-irrfd;
            printf("\nIRRF= R$%.2f\n", irrf);

        }else if (renda<=7){
            irrfs=salario*15/100;
            printf("Imposto sob salário é de 15%% que equivale à: R$%.2f", irrfs);
            irrfd=ndp*(minimo*0,05);
            printf("\nO valor a ser restituido é de:R$ %.2f", irrfd);
            irrf=irrfs-irrfd;
            printf("\nIRRF= R$%.2f\n", irrf);

        }else if (renda>7){
            irrfs=salario*20/100;
            printf("Imposto sob salário é de 20%% que equivale à: R$%.2f", irrfs);
            irrfd=ndp*(minimo*0,05);
            printf("\nO valor a ser restituido é de:R$ %.2f", irrfd);
            irrf=irrfs-irrfd;
            printf("\nIRRF= R$%.2f\n", irrf);
        }

    }

    system("PAUSE");

}

cód implementado q funcionou

3 - IRRF.exe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por igor.diaa
      Escreva um programa que leia um número de quatro algarismos e mostre o número formato pela inversão da ordem dos algarismos do número dado. Utilize as operações de %, /, *, + para resolver a questão. Por exemplo, caso o usuário informe o número 1365, a saída do seu programa deverá apresentar a seguinte mensagem: Invertendo-se os algarismos do numero 1365 obtêm-se o numero 5631.
    • Por Felipi Thiesen Tidra
      Preciso de ajuda no CRUD(criar, visualizar, editar e deletar) do meu TCC, pois não sei nem como fazer essa parte, tem dois campos de cadastros - USUARIO e SENHA.

      Minha placa possuiu 4 letras, A,B,C e D, com elas utilizaria o usuário, Sendo A usuário admin, podendo, somente ele o incluir outros usuários.

      Usaria as letras tambem para as funçoes do CRUD, de editar, deletar... o usuario.

      Ao rodar de inicio o programa, já seria automaticamente usuário A, apenas incluiria uma nova senha, sendo salva na memoria EPROM(que também não saberia como fazer, pois de momento o que está rodando no meu programa é sô inserir senha, que já está salva no código).
    • Por Alan Neves
      Eu preciso apenas das resoluções pois esse é um conteúdo um pouco avançado para as aulas que eu tive, e o professor orientou que nós tentássemos resolver ou se não conseguíssemos, tentar achar a resolução na internet para entendermos a lógica usada.
       
      1- Escreva um algoritmo que calcule e escreva a soma dos dez primeiros termos da seguinte série: 2/500 - 5/450 + 2/400 - 5/350 + …
       
      2-Uma agência de publicidade quer prestar serviços somente para as maiores companhias - em número de funcionários - em cada uma das classificações: grande, média, pequena e microempresa. Para tal, consegue um conjunto de dados com o código, o número de funcionários e o porte da empresa. Construa um algoritmo que liste o código da empresa com maiores recursos humanos dentro de sua categoria. Utilize como finalizador o código de empresa igual a 0.
       
    • Por Alan Neves
      Eu preciso das resoluções pois esse é um conteúdo um pouco avançado para as aulas que eu tive, e o professor orientou que nós tentássemos resolver ou se não conseguíssemos, tentar achar a resolução na internet para entendermos a lógica usada.
       
      1- Escreva um algoritmo que calcule e escreva a soma dos dez primeiros termos da seguinte série: 2/500 - 5/450 + 2/400 - 5/350 + …
       
      2-Uma agência de publicidade quer prestar serviços somente para as maiores companhias - em número de funcionários - em cada uma das classificações: grande, média, pequena e microempresa. Para tal, consegue um conjunto de dados com o código, o número de funcionários e o porte da empresa. Construa um algoritmo que liste o código da empresa com maiores recursos humanos dentro de sua categoria. Utilize como finalizador o código de empresa igual a 0.
       
    • Por Caroline Nolasco
      Exemplo em Linguagem em C (Lista duplamente encadeada)
      criar uma listagem de alunos, a listagem precisa seguir algumas normas referentes ao interesse dos alunos como por exemplo, os alunos com deficiência tem prioridade para listagem, e devem estar no inicio da lista, e apos eles, caso tenha terá a listagem dos demais alunos para o curso sobre tecnologia. Caso alguns aluno desista do curso, seu nome precisa ser removido da lista é necessário permitir a pesquisa de algum aluno. Por fim será preciso imprimir uma lista com nome de todos alunos inscritos.
      Deverão criar estruturas de dados para permitir a listagem de alunos com base em seus nomes ao invés de números , e criar funções de adição, remoção, pesquisa e impressão. Ao criar a função principal main, os alunos precisarão criar um menu para usuário escolher qual ação desejar realizar se é matricula normal ou deficiência, remoção de alunos, pesquisa e impressão.
      O menu deve ser simples impresso a cada execução com a coleta de uma opção numérica.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.