-1
Why the first time I pass an error char value (as if it were empty)? Then the second try works normal?
After I received the initial post or shift of error and yet I gave one Writeline was with the correct value, being necessary to type new.
/**
* 5) Uma empresa possui dez funcionários com as seguintes características:
* código, número de horas trabalhadas no mês,
* turno de trabalho(M - Matutino, V - Vespertino ou N - Noturno),
* categoria (O - Operário ou G - Gerente),
* valor da hora trabalhada.
* Sabendo-se que esta empresa deseja informatizar a folha de pagamento, faça um programa que:
* a) Leia as informações do funcionário, não permitindo que sejam informados turnos ou categorias
* inexistentes. Trabalhar sempre com a digitação de letras maiúsculas.
*
* Calcule o valor da hora trabalhada, conforme tabela a seguir: -- slide ---
*
* Adote o valor de R$150,00 para o salário mínimo.
* c) Calcule o salário inicial dos funcionários com base no valor da hora trabalhada e
* o número de horas trabalhadas.
* d) Calcule o valor do auxílio alimentação recebido por funcionário,
* de acordo com o seu salário inicial, conforme tabela a seguir: --- slide -- **/
int codigo, controle = 1;
double h_trabalhadas, valor_h_trabalho;
char turno, categoria;
string aux;
while(controle <= 10)
{
Console.WriteLine("-----------------------------------------");
Console.WriteLine("Código do funcionário: ");
aux = Console.ReadLine();
codigo = Convert.ToInt16(aux);
Console.WriteLine("Número de horas trabalhadas por mês: ");
aux = Console.ReadLine();
h_trabalhadas = Convert.ToDouble(aux);
Console.WriteLine("Turno (M/V/N): ");
aux = Console.ReadLine();
turno = Convert.ToChar(aux);
//Validar turno
while((turno != 'M')||(turno != 'V')||(turno != 'N'))
{
Console.WriteLine("Turno inválido, tente novamente");
Console.WriteLine("Turno (M/V/N): ");
aux = Console.ReadLine();
turno = Convert.ToChar(aux);
if ((turno == 'M') || (turno == 'V') || (turno == 'N'))
break;
}
Console.WriteLine("Categoria (O/P): ");
aux = Console.ReadLine();
categoria = Convert.ToChar(aux);
//Validar categoria
while ((categoria != 'O') || (categoria != 'P'))
{
Console.WriteLine("Categoria inválida, tente novamente");
Console.WriteLine("Categoria (O/P): ");
aux = Console.ReadLine();
categoria = Convert.ToChar(aux);
if ((categoria == 'O') || (categoria == 'P'))
break;
}
Console.WriteLine("Valor da hora de trabalho: ");
aux = Console.ReadLine();
valor_h_trabalho = Convert.ToDouble(aux);
Code test: https://repl.it/K859
This way, if I typed’M' why requested again..
What would be the error that is occurring ?
– JcSaint
No error appears only that when I enter the value: M for the turn it asks me to type again, as if I did not recognize the character then enters the while(), I put the site to test there
– WSS