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 Bruno Rafael
      Programa está inserindo normalmente, mais não está ordenando e nem mostrando os itens ordenados. 
       
      obs1: Usando bubblesort
      obs2: ordenando primeiro por nome e depois por idade
       
      #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct lista { int qtd; struct Aluno * inicio; }lista; typedef struct Aluno { char nome[30]; int idade; struct Aluno * prox; }Aluno; lista * aloca_lista(); Aluno * aloca_aluno(); int inserir(lista *l, char * nome, int idade); void mostrar(lista *l); int main() { char aux[30]; int i,aux2,aux3,aux4,tam=3,pass,trocou; Aluno * aluno[3]; lista * l1; l1 = aloca_lista(); aux4 = l1->inicio; int idade; char nome[30]; for(i=0; i<3; i++) { printf("\nDigite o nome do aluno[%d]: ",i+1); fflush(stdin); gets(nome); printf("\nDigite o numero: "); fflush(stdin); scanf("%d",&idade); inserir(l1,nome,idade); } trocou = 1; for(pass=0; pass<tam-1 && trocou==1; pass++) { trocou = 0; for(i=0; i<tam-pass-1; i++) { if(strcmp(aluno[i]->nome,aluno[i+1]->nome) == 0) { if(aluno[i]->idade > aluno[i+1]->idade) { aux2 = aluno[i]->idade; aluno[i]->idade = aluno[i]->prox->idade; aluno[i]->prox->idade = aux2; strcpy(aux,aluno[i]->nome); strcpy(aluno[i]->nome,aluno[i+1]->nome); strcpy(aluno[i+1]->nome,aux); trocou = 1; } } else if(strcmp(aluno[i]->nome,aluno[i+1]->nome)>0) { aux3 = aluno[i]->idade; aluno[i]->idade = aluno[i+1]->idade; aluno[i+1]->idade = aux3; strcpy(aux,aluno[i]->nome); strcpy(aluno[i]->nome,aluno[i+1]->nome); strcpy(aluno[i+1]->nome,aux); trocou = 1; } } } printf("\nmostrando:\n\n"); mostrar(l1); return 0; } lista * aloca_lista() { lista * novo; novo = (lista*)malloc(sizeof(lista)); novo->qtd = 0; novo->inicio = NULL; return novo; } Aluno * aloca_aluno() { Aluno * novo; novo = (Aluno*)malloc(sizeof(Aluno)); novo->idade = 0; strcpy(novo->nome," "); novo->prox = NULL; return novo; } int inserir(lista *l,char * nome, int idade) { Aluno * novo, * aux; novo = aloca_aluno(); novo->idade = idade; strcpy(novo->nome,nome); if(l->inicio == NULL) { l->inicio = novo; } else { aux = l->inicio; while(aux->prox != NULL) { aux = aux->prox; } aux->prox = novo; } l->qtd++; return 1; } void mostrar(lista *l) { Aluno * aux; aux = l->inicio; while (aux != NULL) { printf("\nNome: %s",aux->nome); printf("\nIdade: %d",aux->idade); aux = aux->prox; } }  
    • Por jasonAlves
      estou tentando resolver esse problema mas até o momento não consegui.
       
       
      Escreva um programa que leia um número inteiro maior do que zero e imprima a soma de todos os seus algarismos. Por exemplo, o número 251 corresponderá ao valor 8
      (2 + 5 + 1). Se o número lido for negativo, o mesmo deverá ser convertido para positivo.
       
      #include<stdio.h>
      #include<math.h>
      int num,resto,soma;
          int main(){
              printf("digite um numero inteiro\n");
              scanf("%i",&num);
              
              
               resto = num % 10;
               num = (num - resto)/10;
               
              
                  
              printf(" %i  %i ",num,resto);
                  
          
              
              return 0;
          }
    • Por jasonAlves
       
       
      estou tentando resolver esse problema mas até o momento não consegui.
       
       
      Escreva um programa que leia um número inteiro maior do que zero e imprima a soma de todos os seus algarismos. Por exemplo, o número 251 corresponderá ao valor 8
      (2 + 5 + 1). Se o número lido for negativo, o mesmo deverá ser convertido para positivo.
       
      #include<stdio.h>
      #include<math.h>
      int num,resto,soma;
          int main(){
              printf("digite um numero inteiro\n");
              scanf("%i",&num);
              
              
               resto = num % 10;
               num = (num - resto)/10;
               
              
                  
              printf(" %i  %i ",num,resto);
                  
          
              
              return 0;
          }
    • Por Luísa Brandão
      Olá, preciso de ajuda em um algoritmo. A pergunta é: implemente um programa com as opções de inserir, buscar, excluir e listar dados usando uma lista duplamente encadeada, com o tema Cidades visitadas pelo vendedor 
       
      O algoritmo está praticamente pronto, mas toda vez que rodo, da problema com a opção “liberar lista”. Ele simplesmente não libera e imprime caracteres estranhos Alguém pode ajudar?

       
      #include <stdio.h> #include <stdlib.h> #include <string.h> struct lista2{ char cidades[51]; struct lista2* ant; struct lista2* prox; }; typedef struct lista2 Lista2; Lista2* lst2_cria (void){ return NULL; } Lista2* lst2_insere (Lista2* l, char v[] ){ Lista2* novo=(Lista2*)malloc(sizeof(Lista2)); strcpy(novo->cidades, v); novo->prox=l; novo->ant=NULL; if (l!=NULL) l->ant=novo; return novo; } Lista2* lst2_busca (Lista2*l, char v[]){ Lista2* p; for (p=l; p!=NULL; p=p->prox) if (strcmp (p->cidades,v)==0) return p; return NULL; } Lista2* lst2_retira (Lista2* l, char v[]){ Lista2* p; p= lst2_busca(l,v); if (p==NULL){ printf("Cidade nao encontada.\n"); return l; } else printf("Cidade retirada.\n"); if (l==p) l=p->prox; else p->ant->prox=p->prox; if (p->prox!=NULL) p->prox->ant=p->ant; free(p); return l; } int lst2_vazia(Lista2* l){ if (l==NULL)return 1; else return 0; } void lst2_imprime (Lista2* l){ Lista2*p=l; if(lst2_vazia(l)) printf("\n\nA lista esta vazia.\n\n"); else{ while(p->prox != NULL) p = p->prox; while(p != NULL){ printf("%s\n", p->cidades); p = p->ant; } } } void lst2_libera (Lista2* l){ Lista2* p=l; while (p!=NULL) { Lista2* t=p->prox; free(p); p=t; } } int main() { int n;char cidade[51]; Lista2* l; printf("\n\t\t>-------------------- MENU --------------------<\n\n"); printf("\n0)Encerrar\n1)Criar lista\n2)Inserir cidade\n3)Retirar cidade\n4)Imprimir lista\n5)Verificar se a lista esta vazia\n6)Liberar lista\n"); printf("\n\t\t>----------------------------------------------<\n"); while(1) { scanf("%d",&n); if(n==0)break; switch(n) { case 1: l=lst2_cria(); printf("Lista criada.\n"); break; case 2: printf("Digite a cidade que deseja inserir\n"); scanf(" %[^\n]s", cidade); l=lst2_insere(l, cidade); break; case 3: printf("Digite a cidade que deseja retirar\n"); scanf("%s", cidade); l=lst2_retira(l, cidade); break; case 4: lst2_imprime(l); break; case 5: if(lst2_vazia(l)) printf("A lista esta vazia.\n"); else printf("A lista nao esta vazia.\n"); break; case 6: lst2_libera(l); printf("Lista liberada\n"); break; default: printf("\nDigite uma das opções validas.\n"); break; } } return 0; }
    • Por cristian2000
      Ola eu estou tentando fazer um programa em Dev C que me permita meter 2 numeros quaisquer e ordenalos por ordem crescente alguem me poderia ajudar?
×

Informação importante

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