Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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
Postado
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
Postado

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
Postado

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
Postado

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!