Ir ao conteúdo

Posts recomendados

Postado

Pessoal, boa tarde. Estou fazendo um trabalho em C, mas estou tendo alguns problemas :huh:, tenho algumas dúvidas:

 

Primeiro gostaria de saber porque essa estrutura só para quando atinge a primeira condição, ignorando o "ou (||)":

while (w < x || y < z)

 

E segundo, gostaria de saber quando exatamente o while para, se é assim que a condição se torna verdadeira ou se ele termina de rodar o bloco de códigos que está dentro... Além disso, como faço para parar uma estrutura de repetição com break se tiver mais de uma dentro da outra? Ex:

 

while (condição)
	for (...)
		for (...)
			break;

//No caso, o break iria quebrar somente o último FOR, correto?

 

Postado

O while enquanto pelo menos um dos testes for verdadeiro. Assim, se w < x for verdadeiro, o programa não precisa testar y < z. E somente se os dois testes derem falso, ele para de executar.

Já o break só para o for mais interno. Eu recomendo você usar uma flag (0 pra dizer que é falso e qualquer outro valor para dizer que é verdadeiro) como condição pra parar os laços mais externos;
Será que ajudei?

while(condição(ões)){
	for(...){
		for(...){
			flag = 0;
			break;
		}
		if(!flag){
			flag = 1;
			break;
	}
	if(flag) 
		break;
}

 

Postado
9 minutos atrás, Gabriel Bras disse:

O while enquanto pelo menos um dos testes for verdadeiro. Assim, se w < x for verdadeiro, o programa não precisa testar y < z. E somente se os dois testes derem falso, ele para de executar.

Já o break só para o for mais interno. Eu recomendo você usar uma flag (0 pra dizer que é falso e qualquer outro valor para dizer que é verdadeiro) como condição pra parar os laços mais externos;
Será que ajudei?


while(condição(ões)){
	for(...){
		for(...){
			flag = 0;
			break;
		}
		if(!flag){
			flag = 1;
			break;
	}
	if(flag) 
		break;
}

 

 

Boa tarde. Bom, sobre o while, sim, ele teria que parar quando qualquer uma das duas condições forem falsas, né? Mas o problema é que ele só está parando quando a primeira é falsa, e se a segunda condição for falsa antes que a primeira, ele não está parando :mellow: Em outras linguagens não tive esse problema, e estou começando a suspeitar que o problema é no meu PC mesmo, pois não faz sentido... 

Postado
5 minutos atrás, Gabriel Bras disse:

Não, ele só para quando as duas forem falsas. Enquanto uma delas for verdadeira, ele continua rodando.

 

Mesmo usando o "ou (||)" e não "e (&&)"? :huh:

Postado
3 minutos atrás, Flasher disse:

 

Mesmo usando o "ou (||)" e não "e (&&)"? :huh:

É assim que funciona:


(true || false) = true [continua a executar o laço]
(false || true) = true [continua a executar o laço]
(true || true) = true [continua a executar o laço]
Apenas quando os dois forem falsos, o || vai ser falso
(false || false) = false [para de executar o laço]


Já o (&&) é falso quando pelo menos um dos testes for falso:
(true  && false) = false [para de executar o laço]
(false && true) = false [para de executar o laço]
(false && false) = false [para de executar o laço]
Apenas quando os dois forem verdadeiros, o && vai ser verdadeiro
(true && true) = true [continua a executar o laço]

 

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