Jump to content
Guest Markito

[Resolvido] Dúvida no do-while

Recommended Posts

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

Edited by Rui Carlos

Share this post


Link to post
Share on other 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: .

Share this post


Link to post
Share on other 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."

Share this post


Link to post
Share on other 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)

Edited by HappyHippyHippo

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

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.