Bom dia, sou iniciante em programação.
Estou com problemas com a comparação de string na função método, ele tem uma estrutura condicional que vai comparar o sexo do funcionário.
Se sexo do funcionário digitado for igual a "masculino" então execute as seguintes instruções.
Se não se sexo funcionário digitado for igual a "feminino" então execute as seguintes instruções.
#include <iostream>
//#include <cstdlib>//para usar a função método std::atof() para realizar a conversão de string para float
#include <string>
#include <vector>
//using namespace std;
class cFuncionario
{
private:
//inícioVetorDinâmico
//std::string aListaNomeSalarioSexo[10][3];
std::vector<std::string>vNome_Funcionario;
std::vector<std::string>vSexo_Funcionario;
std::vector<int>vSalario;
//Variáveis Membros
int sexo_masculino{0};
int sexo_feminino{0};
float tot_salario_Homens{0.0};
float tot_salario_Mulheres{0.0};
public:
void SetListaFuncionariSalarioSexo(std::string nome, int salario, std::string sexo);
void SetSexoFouM(std::string sexo_funcionario, float salario);
float GetTotalSalarioPagoHomens();
float GetTotalSalarioPagoMulheres();
int GetQuantidadeDeMulheres();
int GetQuantidadeDeHomens();
void Lista();
void LiberandoMemoria();
};
void cFuncionario::LiberandoMemoria()
{
/* while((vNome_Funcionario.empty() != NULL ) && (vSexo_Funcionario.empty() != NULL) && (vSalario.empty() != NULL))
*/ while((!vNome_Funcionario.empty()) || (!vSexo_Funcionario.empty()) || (!vSalario.empty()))
{
vNome_Funcionario.erase(vNome_Funcionario.begin(), vNome_Funcionario.begin() + vNome_Funcionario.size());
vSexo_Funcionario.erase(vSexo_Funcionario.begin(), vSexo_Funcionario.begin() + vSexo_Funcionario.size());
vSalario.erase(vSalario.begin(), vSalario.begin() + vSalario.size());
}
std::cout << "\n\n" <<vNome_Funcionario.size() << vSalario.size() << vSexo_Funcionario.size();
std::cout << "\n\nMemoria heap limpa\n";
}
void cFuncionario::Lista()
{
int i = 0;
std::string texto{"\nLista nome e salario dos funcionarios"};
std::printf("%s", texto.c_str());
for(int i = 0; i < vNome_Funcionario.size();)
{
std::cout <<"Nome: " << vNome_Funcionario[i] <<" Salario: " <<vSalario[i];
i++;
}
}
int cFuncionario::GetQuantidadeDeHomens()
{
return sexo_masculino;
}
int cFuncionario::GetQuantidadeDeMulheres()
{
return sexo_feminino;
}
void cFuncionario::SetListaFuncionariSalarioSexo(std::string novo_nome, int salario, std::string sexo)
{
vNome_Funcionario.push_back(novo_nome);
vSexo_Funcionario.push_back(sexo);
SetSexoFouM(sexo, salario);
}
void cFuncionario::SetSexoFouM(std::string sexo_funcionario, float salario)
{
if(sexo_funcionario == "masculino")
{
sexo_masculino++;
std::cout << "M"<< " " << sexo_masculino << "\n\n";
vSalario.push_back(salario);
tot_salario_Homens += salario;
}
//ELE NÃO ESTÁ EXECUNTANDO ESSA INSTRUÇÃO
else if(sexo_funcionario.c_str() == "feminino")
{
sexo_feminino++;
std::cout << "F" << " " << sexo_feminino << "\n\n";
vSalario.push_back(salario);
tot_salario_Mulheres += salario;
}
sexo_funcionario = '\0';
}
float cFuncionario::GetTotalSalarioPagoHomens()
{
return tot_salario_Homens;
}
float cFuncionario::GetTotalSalarioPagoMulheres()
{
return tot_salario_Mulheres;
}
int main()
{
cFuncionario oFuncionario;
std::string aTexto[] = {"Digite o nome do funcionario", "\nDigite o salario: ", "\nDigite o sexo: "};
std::string sexoDoFuncionario;
std::string nome;
int salario{0};
int resposta{0};
for(int l = 0; l < 10; l++)
{
std::cout << aTexto[0].c_str();
//std::getline(std::cin, nome);
std::cin >> nome;
std::cout << aTexto[1].c_str();
std::cin >> salario;
//std::getline(std::cin, salario);
std::cout << aTexto[2].c_str();
std::cin >> sexoDoFuncionario;
//std::getline(std::cin, entradaUsuario);
oFuncionario.SetListaFuncionariSalarioSexo(nome, salario, sexoDoFuncionario);
std::cin.ignore();//ignorar dados armazenado no buffer
std::cout << "Deseja add mais um funcionario?(sim = 1 | !não = 0)";
std::cin >> resposta;
if(resposta == 0)
{
break;
}
std::cin.ignore();
}
std::cout << "total do salario pago aos homens: " << oFuncionario.GetTotalSalarioPagoHomens();
std::cout << "\ntotal do salairo pago as mulheres: " << oFuncionario.GetTotalSalarioPagoMulheres();
std::cout << "\nTotal de Mulheres: " << oFuncionario.GetQuantidadeDeMulheres();
std::cout << "\nTotal de Homens: " << oFuncionario.GetQuantidadeDeHomens();
oFuncionario.Lista();
oFuncionario.LiberandoMemoria();
//std::cout << std::string(30, '*') << "\n";
std::cin.ignore();
std::cout << "\nPressione Enter para sair...";
std::cin.get();
return 0;
}