Ir para o conteúdo
Guest Markito

[Resolvido] Dúvida no do-while

Mensagens Recomendadas

Guest Markito

Bom dia;

O Chato de serviço está de plantão... sou eu!

Cá vai mais um problema que para mim não encaixa:

#include <stdio.h>

int main ()
{
 int i;
 do
 {
   printf ("\n\nEscolha a fruta pelo numero:\n\n");
   printf ("\t(1)...Limao\n");
   printf ("\t(2)...Pera\n");
   printf ("\t(3)...Laranja\n\n");
   scanf("%d", &i);
 }
 while ((i<1)||(i>3));
 switch (i)
 {
   case 1:
     printf ("\t\tVoce escolheu Limao.\n");
     break;
   case 2:
     printf ("\t\tVoce escolheu Pera.\n");
     break;
   case 3:
     printf ("\t\tVoce escolheu Laranja.\n");
     break;
 }
 return(0);
}

Programa simples para a maioria menos para mim que tou a aprender. Por favor tenham paciência...

O programa corre sem problemas... Óptimo!

Eu é que não entendo o porquê!

a minha dúvida é a seguinte: while ((i<1)||(i>3)); não deveria ser while ((i>=1)||(i<=3))???

Isto para ler os valores que estão entre o 1 e o 3, e inclusive os mesmos???

quando eu coloco o while ((i>=1)||(i<=3)) ele não lê, no entanto a meu ver não deveria ler era o while ((i<1)||(i>3))!

Agradeço desde já a vossa paciência e a vossa resposta.

:thumbsup: Obrigado

Editado por Rui Carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Guest Markito

Tive aqui a martelar e parece que já cheguei lá por mim... Penso que é o seguinte:

Enquanto o for ((i<1)||(i>3)) ele volta a pedir a variável i! Será isso?

Mesmo assim não dispensa a vossa confirmação.

Obrigado :thumbsup: .

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax
a minha dúvida é a seguinte: while ((i<1)||(i>3)); não deveria ser while ((i>=1)||(i<=3))???

O facto de ((i>=1)||(i<=3)) nao funcionar e' porque a condicao e' sempre verdadeira.

esse while serve para ver se o input do user esta' entre i=>1 && i<=3


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

estás a aprender C, que tens um nome por si só : "linguagem"

se é uma linguagem, deverá ser lida e interpretada, e é isso que tens de fazer. tens a sorte de que a sua leitura até nem é complicada:

do			// do traduzido directamente do inglês é "fazer"
{			 // a abertura das chavetas pode significar "início"
}			 // o fecho das chavetas pode significar "fim"
while (	   // while traduzido directamente do inglês é "enquanto"
   (i<1)  // isto é lido com o auxilio da matemática : "i menor que 1"
	||	// símbolo que significa "ou"
   (i>3)  // isto é lido com o auxilio da matemática : "i maior que 3"
  )

tudo junto dá:

fazer ......... enquanto i menor que 1 e ou i maior que 3

o que matematicamente significa toda a área assinalada com os 'x':

...xxxxxxxxx xxxxxxxxx...
...--|--|--|--|--|--|--|--|--|--...
-2 -1 0 1 2 3 4 5 6

logo, enquanto o i não tiver um valor que seja 1, 2 ou 3, o código será executado.

edit : tinha um erro na frase de interpretação (bem num sítio e mal noutro)

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Guest Markito

Percebi! Obrigado pela paciência e pelas respostas. :thumbsup:

p.s. vou ter o cuidado de não colocar dúvidas tão simplestas da próxima vez...! :confused:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.