Ir ao conteúdo
  • Cadastre-se
Rubens Ferreira

C Programação em C: como fazer para receber somente esses três turnos de trabalho

Recommended Posts

Boa Noite, estou tentando aprender a programar em c, mas tenho uma duvida de como fazer para receber somente esses três turnos de trabalho? se for digitado outra string, mostrar a mensagem de "Turno Inexistente"

Uma empresa possui 10 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)

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Rubens Ferreira na linguagem c existe um comando para comparar string  que é o strcmp() ;   então depois de pegar a resposta do usuário você faz a comparação e  se for igual a zero é porque as duas string são iguais .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se usar só um caractere como entrada do usuário, ao invés de uma string, como M, V ou N, poderia usar a comparação de igualdade == para comparar o caractere (ou até usar switch case).

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 horas atrás, devair1010 disse:

@Rubens Ferreira na linguagem c existe um comando para comparar string  que é o strcmp() ;   então depois de pegar a resposta do usuário você faz a comparação e  se for igual a zero é porque as duas string são iguais .

devair1010, eu ate pensei em usar essa função, mas como comparar 3 strings, eu fiz assim e não deu certo.

 

if(strcmp(turno, "m")==0) || (strcmp(turno, "n")==0) || (strcmp(turno, "v")==0)  {

       comando;

}

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se vai lidar com uma única letra, é melhor usar 1 caractere apenas ao invés de uma string. Assim:

 

int c;
char op;

printf(" Opcao: ");
scanf("%c", &op);
while((c = getchar()) != '\n' && c != EOF); //fflush(stdin);

if(op == 'n' || op == 'N'){
    <comandos>
}
else if(op == 'm' || op == 'M'){
    <comandos>
}
else if(op == 'v' || op == 'V'){
    <comandos>
}
else {
    <comandos>
}

Ou assim:

int c;
char op;

printf(" Opcao: ");
scanf("%c", &op);
while((c = getchar()) != '\n' && c != EOF); //fflush(stdin);

switch(op){
    case 'n':
    case 'N':
        <comandos>
        break;
    
    case 'm':
    case 'M':
        <comandos>
        break;
    
    case 'v':
    case 'V':
        <comandos>
        break;
    
    default:
        <comandos>
}

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, ...!

 

Esse problema é tão simples que seu benefício está não em resolver, mais sim com que resolver.

Uma vez definido com o que resolver, a solução torna-se limitada ao conjunto de possibilidades bem definido e não maçante. 

 

 Então, de qual forma resolver (STRING / N~ STRING)?

 

 

Outra coisa, um exemplo de entrada e saída de dados ajuda muito.

 

Por exemplo: 

Entre com dados dos funcionários:

<: 001 48 M 002 37 V

<: |

 

Nessa situação, a ordem também define o código.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para meu problema hipotético, esta é a solução hipotética: 

        char * turno = impresa_c_vet [funcionario]+(CAMPO_TURNO);
        if(   strcmp( turno, "M")
           && strcmp( turno, "V") 
           && strcmp( turno, "N") ){
                printf( "%s", "Turno Inexistente\n" );
                }

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×