Ir ao conteúdo

Posts recomendados

Postado

Pessoal, alguém pode me ajudar?

É o seguinte, estou fazendo uma lista de exercícios em C.

O algoritmo basicamente trata de receber palavras em um vetor de char e guarda-los em um registro, até aí OK

Mas uma regra dele é: 

O usuário vai escrever o seu texto, terminando por uma linha onde ele irá escrever apenas a
palavra ‘FIM’

Dessa forma, eu posso escrever

XXXXXXXX (enter)

YYYYYYYY (enter)

FIM (enter) e encerra o programa

 

Então comecei a desenvolver o algoritmo, vou postar aqui a parte que está me dando dor de cabeça:

 

#include <stdio.h>
char texto[50];

void main (){


while (texto[0] != 'F' && texto[1] !='I' && texto[2] !='M'){
fgets(a,50,stdin);
}}

 

Então, quando eu digito qualquer palavra ok, até q funciona, porém, se eu digitar alguma palavra que contenha essas letras na posição declarada ele encerra o programa

Por exemplo

AAM -encerra

FAA - encerra

AIA - encerra

porque não está funcionando SOMENTE se eu digitar 'FIM'? visto que nas regras eu estou usando &&.

Me ajudem, caso esteja errado, como eu posso fazer para o código parar quando eu digitar essa palavra?("FIM"). Parece uma dúvida boba, mas já estou de cabelo em pé sem saber como implementar isso...

Obrigado desde já.

Postado

@Fábio Henrique Borecki Oi Fábio, tudo bem? Tenho algumas observações:

  1. Com o operador lógico && ele somente retorna verdadeiro se ambas comparações forem verdadeiras.
  2. O while só ira executar o laço se a condição for verdadeira.

Você concorda com isso, certo? Imagine algumas possibilidades dentro das condições que você colocou no seu código:

FIM = 0 & 0 & 0 retorna 0

Vou explicar o de cima para você entender os exemplos:

 texto[0] != 'F' retorna 0, texto[1] != 'I' retorna 0, texto[2] != 'M' retorna 0.

FAZ = 0 & 1 & 1 retorna 0

ABC = 1 & 1 & 1 retorna 1

ZIK = 0 & 1 & 0 retorna 0

Conclusão, sempre que tiver uma comparação que retorne 0(por isso que não precisa a palavrar conter as três letras) sempre vai retornar 0 e deixa de executar o loop:

Proponho que você faça isso para resolver o seu problema:

while (!(texto[0] == 'F' && texto[1] == 'I' && texto[2] == 'M')){
  //código aqui
}}

Se ainda tiver alguma dúvida sinta-se livre para perguntar.

Abraço!

  • Obrigado 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...