Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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.

Editado por AnsiC
Formatação
  • 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" );
                }

 

Editado por AnsiC
  • 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






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

×