Ir ao conteúdo
  • Cadastre-se

C Calculo imposto linguagem C erro nome


Flavio Ferrarezi

Posts recomendados

Solicite ao usuário a entrada de um registro que armazene na memória o Nome do funcionário e o seu salário. b)Utilizandoo salário informado calcule o imposto de renda devidoe mostre na tela, conforme a tabela abaixo

eu teria que fazer isso ai porém, ele n me deixa Digitar o nome do funcionario, eu n sei onde estou errando, pode me ajudar?

 

#include <stdio.h>
#include <stdlib.h>

struct funcionario {   
    char nome[50];    
    float salario;    
}; typedef struct funcionario Administrador;  
int main(void)
{
    float salario = 0, calculo_IMP = 0, resultado = 0, aliq = 0;
    

    printf("DIGITE do Administrador: \n\n");
    printf("DIGITE SALARIO: ");
    scanf_s("%f", &salario);

    calculo_IMP = (salario);
    if (calculo_IMP <= 1637.11)
    {
        printf("Isento de imposto de renda");
    }
    else if (calculo_IMP >= 1637.12 && calculo_IMP <= 2453.50)
    {
        resultado = calculo_IMP * 0.075;
        printf("Isento de imposto de renda");
    }
    else if (calculo_IMP >= 2453.51 && calculo_IMP <= 3271.38)
    {
        resultado = calculo_IMP * 0.15;
    }
    else if (calculo_IMP >= 3271.39 && calculo_IMP <= 4087.65)
    {
        resultado = calculo_IMP * 0.225;
    }
    else if (calculo_IMP >= 4087.66)
    {
        resultado = calculo_IMP * 0.275;
    }
    printf("Imposto sera: %.2f\n\n", resultado);
    system("PAUSE");


    return 0;

}

image.thumb.png.e69112dad11b7c2ebfd065feb119debe.png

 

image.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Use isso como base:

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char nome[50];
    double salario;
} Funcionario;

int main() {
    Funcionario funcionario;

    printf("Digite o nome: ");
    scanf("%[^\n]", funcionario.nome);
    
    printf("Digite o salario: ");
    scanf("%lf*c", &funcionario.salario);
    
    printf("--------------------------- \n");
    printf("Nome: %s \n", funcionario.nome);
    printf("Salario: R$ %.2f \n", funcionario.salario);
    printf("--------------------------- \n");
    
    return EXIT_SUCCESS;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@AdrianoSiqueira sua programação funciona corretamente,

só que tem um detalhe, esquece % do segundo especificador na instrução que lê o salário.

 

Eu entendo, o objetivo é usa %*c e descarta aquele enter que naturalmente sobra no fluxo associada a entrada padrão (uso de teclado).

Link para o comentário
Compartilhar em outros sites

@Flavio Ferrarezi  Olá,

Você precisa apenas ler o nome do funcionário?! Se for basta utilizar fgets() e levar o nome para a sua estrutura.

// Ficaria assim:
// Obs.: Defina a estruturá dentro da função main()
int main() {
    struct funcionarios {
        char nome[50];
        float salario;
    } admin;

    // O fgets() utilizará o fgetc() para ler os caracteres
    // que você passar via stdin e irá retornar eles quando você
    // precionar enter.
    // Lembrando, que o nome terá uma nova linha '\n' no final.
    fgets(admin.nome, 50, stdin);
  
    /*
     * --- Restante do seu código --
    **/
  
    return 0;
}

 

DICA: Para deixar mais limpo a sua função main(), você poderia colocar este monte de if em uma função que retorne o resultado.

 

Exemplo:

float teste_salario(float *s); // Define a função para fazer o teste do salario
int main() {
    /*
     * --- Restante do seu código --
    **/
  
    printf("\n:: Digite o salario: ");
    scanf("%f", &admin.salario);
  
    printf("\n- Imposto sera: %.2f\n", teste_salario(&admin.salario));
    return 0;
} 
float teste_salario(float *s) {
    float i = 0; // Valor que será retornado (imposto)
    if (*s <= 1637.11) {
        printf("Isento de imposto de renda");
        i = 0;
    }
    /*
     * --- Restante do seu código --
    **/
    return (i);
}

 

Espero ter lhe ajudado em algo, até mais!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...