0
Can anyone tell why the program simply closes when I type the The?
#include <stdio.h>
#include <locale.h> //Biblioteca locale é uitlizada para definar o idioma do programa.
int main()
{
setlocale(LC_ALL,"Portuguese"); //Comando utilizado para caracteres especiais aparecerem.
char turno,cargo;
float sal_min,sal_bruto,horas,vlr_h,imposto,sal_liq;
printf("Calculo de salário \n\n");
printf("Digite o numéro de horas trabalhadas: ");
scanf("%f",&horas);
printf("Digite o valor do salário mínímo: ");
scanf("%f",&sal_min);
printf("\n\n");
printf("Turnos de trablaho Valor do coeficiente \n");
printf(" Matutino - M 10%% do salário mínimo. \n");
printf(" Vespertino - V 15%% do salário mínimo. \n");
printf(" Noturno - N 10%% do salário mínimo. \n");
printf("\n\n");
printf("Com base na tebela digite a letra referente ao seu turno de trabalho: ");
scanf("%s",&turno);
printf("\n\n");
switch (turno)
{
//Maturino
case 'm' :
vlr_h = sal_min * 0.1;
sal_bruto = vlr_h * horas;
printf("Turno matutino \n");
printf(" Seu salário bruto será de R$ %.2f.",sal_bruto);
printf("\n\n");
printf("Calculos de impostos \n\n ");
printf("Cargos \n");
printf(" O - Operário \n");
printf(" G - Gerente \n\n");
printf("Digite o codigo de seu cargo: ");
printf("%s",&cargo);
if (cargo == 'o') {
if (sal_bruto >= 300)
{
imposto = sal_bruto *0.05;
sal_liq = sal_bruto - imposto;
printf("Seu salário liquido será de R$ %.2f",sal_liq);
printf("\n \n");
}
else if (sal_bruto <300)
{
imposto = sal_bruto *0.03;
sal_liq = sal_bruto - imposto;
printf("Seu salário liquido será de R$ %.2f",sal_liq);
printf("\n \n");
}
}
break;
Char reading is done with
%c
and not%s
. Start there– Isac
changed %s to %c but now even case m does not run more.
– Thiago Henrique Domingues
This has to do with whether or not the previous readings consume the
\n
, that in this case the%f
does not consume. Make room before the%c
, thus:scanf(" %c",&turno);
– Isac