Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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
Postado

@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).

Postado

@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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!