Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com chamada de resultado no MAIN()


Lestarh

Pergunta

Boa tarde a todos! Estou fazendo uma tarefa que solicite alguns dados de um funcionario e retorne bonificação salarial a partir de alguns parâmetros. Bem, eu fiz basicamente toda a estrutura mas estou com dúvida em dois pontos: O primeiro é na "CONDIÇÃO WHILE DE VERIFICAÇÃO DO SEXO" que se encontra na struct. O Segundo está sendo mais complicado pra mim, que seria retornar os valores salariais com as porcentagens devidas e mediante as condições. Se algum puder me dar uma luz eu ficarei grato.. OBS.: Tenho o entendimento de que meu "main()" está completamente errado..

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

struct funcionario
{
    char sexo[1];
    int estCivil;
    int idade;
    float salario;
};

void cadastro (struct funcionario *dados)
    {

    printf("*** CADASTRO DE FUNCIONARIOS ***\n\n");
    printf("INFORME O SEXO: \n\n");
    printf("\n F - FEMININO:  \n");
    printf("\n M - MASCULINO:  \n\n");
    scanf ("%s", dados->sexo);

    //testando - *** Ainda Com Erro ***
    /*while ((dados.sexo =! 'M' || dados.sexo =! 'm') || (dados.sexo =! 'F' || dados.sexo =! 'f'))
    {

    printf("\n\nDIGITO INVALIDO!! \n\nINFORME O SEXO: \n\n");
    printf("\n F - FEMININO\n");
    printf("\n M - MASCULINO");
    scanf ("%s", dados->sexo);
    }*/

    //testando

    printf("\nINFORME O ESTADO CIVIL: \n\n");
    printf("\n1 - SOLTEIRO \n");
    printf("2 - CASADO \n");
    printf("3 - DIVORCIADO \n");
    printf("4 - VIUVO \n");
    printf("5 - OUTROS \n\n");
    scanf("%d", &(*dados).estCivil);

    printf("INFORME A IDADE: \n\n");
    scanf("%d", &(*dados).idade);

    printf("INFORME O SALARIO: \n\n");
    scanf("%f", &(*dados).salario);
    }

float calcBonus (struct funcionario f)
    {

       while (f.sexo == 'M' || f.sexo == 'm')
       {
              if (f.estCivil == 1 && f.idade < 30)
              {
                return 25;

                if (f.estCivil == 2)
                {
                 return 30;
                }

              }

       }

        while (f.sexo == 'F' || f.sexo == 'f')
        {
               if (f.estCivil == 1)
               {
                return 25;
               }

               else if (f.estCivil == 2)
               {

                   if (f.idade <= 40)
                       {
                       return 30;
                       }
                   else{
                       return 35;
                       }
               }

        }

    return 0;
    }
    
    main()
{
    struct funcionario unidade;

    cadastro (&unidade);

    printf("\n VALOR DA BONIFICACAO: \n\n %.2f %%", calcBonus(/*variavel?*/) );
    //Como calcular???
    system ("pause");


}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Pessoal, consegui. Decidi organizar com a struct numa biblioteca, as chamadas das funcoes em outra. e o restanta no main() principal. Vejam só:

//estru.h

struct Funcionario
{
    char sexo;
    int estCivil;
    int idade;
    float salario;
};
---------------------------------------
//Funções de chamada == chamada.h
#include "estrut.h"

void lerFuncionario (struct Funcionario *f)
{
    printf("*=*= CADASTRO DE FUNCIONARIOS =*=*\n\n");

    printf("INFORME O SEXO: \n\n");
    printf("\n F - FEMININO:  \n");
    printf("\n M - MASCULINO:  \n\n");
    scanf("%s", &(*f).sexo);

    printf("\nINFORME O ESTADO CIVIL: \n\n");
    printf("\n1 - SOLTEIRO \n");
    printf("2 - CASADO \n");
    printf("3 - DIVORCIADO \n");
    printf("4 - VIUVO \n");
    printf("5 - OUTROS \n\n");
    scanf("%d", &(*f).estCivil);

    printf("INFORME A IDADE: \n\n");
    scanf("%d", &(*f).idade);

    printf("INFORME O SALARIO: \n\n");
    scanf("%f", &(*f).salario);
}

float bonus (struct Funcionario f)
{
    if (f.sexo == 'm'|| f.sexo == 'M')
    {
        if (f.estCivil == 1 && f.idade < 30)
        {
            return f.salario * 0.25;
        }

    if (f.estCivil == 2)
       {
            return f.salario * 0.30;
       }
    }


    if (f.sexo == 'f' || f.sexo == 'F')
    {
        if (f.estCivil == 2 && f.idade < 40)
        {
          return f.salario * 0.30;
        }

        if (f.estCivil == 2 && f.idade >= 40)
        {
            return f.salario * 0.35;
        }

        if (f.estCivil == 1)
        {
            return f.salario * 0.25;
        }
    }
    else {
          printf("\n\nVOCE não POSSUI BONUS.");
          }

}
********************** por fim, o main(): -----------------------------
#include <stdio.h>
#include <stdlib.h>
#include "chamada.h"




main()
{
    struct Funcionario funcionario;

    lerFuncionario (&funcionario);

    printf("\n\n\nO BONUS: R$ %.2f \n", bonus(funcionario));

    system("pause");
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...