Jump to content

[Resolvido] Dúvida no do-while


Recommended Posts

Posted

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.

👍 Obrigado

Posted

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 👍 .

Posted
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."

Posted (edited)

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
Posted

Percebi! Obrigado pela paciência e pelas respostas. 👍

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.