Why the first time I pass a char value of the error (as if it were empty)? Then on the second try it works normal?
After I received the Initial of the Position or Turn of the error and even then I gave a 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);
Test code: link
In this way, if I typed 'M' because you requested again ..