2
When I run this code and type sex=M or =F, all conditions are executed as expected. When I type sex=m or =f, only the first condition is met, regardless of the age value.
Can anyone explain me right the use and structure of IF / ELSE ?
int main()
{
float salB, idade, medica;
char sexo;
printf(" PROGRAMA 2");
printf("\n_________________________________");
printf("\n\n Informe o sexo do funcionario, digite M para masculino ou F para feminino: ");
scanf("%c",&sexo);
fflush(stdin);
printf("\n Digite o valor do salario bruto: ");
scanf("%f",&salB);
printf("\n Digite a idade: ");
scanf("%f",&idade);
if (sexo == 'm' || sexo == 'M' && idade < 20)
{
medica = (salB*5)/100;
printf("\n O funcionario pagara R$%.2f de assistencia medica.",medica);
}
else if (sexo == 'm' || sexo == 'M' && idade >= 21 && idade < 40)
{
medica = (salB*7)/100;
printf("\n O funcionario pagara R$%.2f de assistencia medica.",medica);
}
else if (sexo == 'm' || sexo == 'M' && idade > 40)
{
medica = (salB*10)/100;
printf("\n O funcionario pagara R$%.2f de assistencia medica.",medica);
}
else if (sexo == 'f' || sexo == 'F' && idade < 20)
{
medica = (salB*2)/100;
printf("\n A funcionaria pagara R$%.2f de assistencia medica.",medica);
}
else if (sexo == 'f' || sexo == 'F' && idade >= 21 && idade < 40)
{
medica = (salB*5)/100;
printf("\n A funcionaria pagara R$%.2f de assistencia medica.",medica);
}
else if (sexo == 'f' || sexo == 'F' && idade > 40)
{
medica = (salB*7)/100;
printf("\n A funcionaria pagara R$%.2f de assistencia medica.",medica);
}
else
{
printf("\n Sexo invalido, tente novamente.");
system("pause > null");
}
}
This Toupper scheme I didn’t know yet, very good, I will study more about it. Also did not know that have to use more than 1 parenthesis in the conditions to isolate each situation. Thanks Thiago!
– LEO MELO