Jump to content

Código de repetição While


Gabriele

Recommended Posts

Olá, eu estou tendo um problema com esse código. Eu não consegui notar onde ele tá erro (pois sou novata em programação), mas ele sempre pede um número e não faz o algoritmo novamente, apenas continua no loop da pergunta. Alguém pode me ajudar? Agradeço

#include <stdio.h>
#include <stdlib.h>
main()
{
    char ch;
      int num, i;
      i = 0;
      while (1){
      printf("Digite um numero. \n");
      scanf("%d", &num);
      while (i < 10)
      {
          i++;
          printf("\n %4d X %2d = %4d", num, i, i * num);
          }

      printf("\n\n\n");
}
     system("pause");
}


 

Link to comment
Share on other sites

Em 12/05/2020 às 19:51, Gabriele disse:

Olá, eu estou tendo um problema com esse código. Eu não consegui notar onde ele tá erro (pois sou novata em programação), mas ele sempre pede um número e não faz o algoritmo novamente, apenas continua no loop da pergunta. Alguém pode me ajudar? Agradeço


#include <stdio.h>
#include <stdlib.h>
main()
{
    char ch;
      int num, i;
      i = 0;
      while (1){
      printf("Digite um numero. \n");
      scanf("%d", &num);
      while (i < 10)
      {
          i++;
          printf("\n %4d X %2d = %4d", num, i, i * num);
          }

      printf("\n\n\n");
}
     system("pause");
}


 

Boas, estive a testar o teu código e está tudo a funcionar correctamente.

Já agora, o primeiro ciclo não é necessário.

Link to comment
Share on other sites

1 hora atrás, Gabriele disse:

Olá, eu estou tendo um problema com esse código. Eu não consegui notar onde ele tá erro (pois sou novata em programação), mas ele sempre pede um número e não faz o algoritmo novamente, apenas continua no loop da pergunta. Alguém pode me ajudar? Agradeço

Se quer que volte a fazer o algoritmo novamente, a instrução "i = 0;" tem de passar para dentro do primeiro "while" (de forma a fazer RESET do i=0), senão o "i" já terá uma valor maior/igual a 10 e não voltará a fazer/repetir o algoritmo para o novo valor lido.

 while (1){
 	i = 0;
	...
}

* Este "while(1)" deixará o programa a repetir o algoritmo em loop "infinito"

* Como o "algoritmo" parece ter um número de "passos" fixo (0..9) e pré-determinado, no segundo "while" poderia ter usado um "for(int i=0;i<10;i++)"

Edited by antseq
corrigir texto
  • Vote 1
Link to comment
Share on other sites

16 horas atrás, antseq disse:

Se quer que volte a fazer o algoritmo novamente, a instrução "i = 0;" tem de passar para dentro do primeiro "while" (de forma a fazer RESET do i=0), senão o "i" já terá uma valor maior/igual a 10 e não voltará a fazer/repetir o algoritmo para o novo valor lido.


 while (1){
 	i = 0;
	...
}

* Este "while(1)" deixará o programa a repetir o algoritmo em loop "infinito"

* Como o "algoritmo" parece ter um número de "passos" fixo (0..9) e pré-determinado, no segundo "while" poderia ter usado um "for(int i=0;i<10;i++)"

Obrigada, me ajudou muito. Eu acabei testando o for no código, infelizmente ele não mostrava todos resultados da tábuada (apenas uns 4 ou 5, não lembro direito).

No final, o código ficou assim: 

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main(){
      int num, i;
      char ch, c;
      c = 'S';
      while(toupper(c)=='S')
      {
          i = 0;
      printf("Digite um numero: \n");
      scanf("%d", &num);
      while (i < 10)
          {
          i++;
          printf("\n %4d X %2d = %4d", num, i, i * num);
          }
           printf("\n\n\n");
          printf("Deseja continuar (S/N)? \n");
           c=getch();
        }
}
Link to comment
Share on other sites

Em 12/05/2020 às 20:35, Galo disse:

Boas, estive a testar o teu código e está tudo a funcionar correctamente.

Já agora, o primeiro ciclo não é necessário.

É que abaixo da pergunta, ele não mostrava a tábuada (pelo menos no meu), e fica só nesse loop de perguntar o número. Porém, após alguns ajustes, ele funcionou 😄

Link to comment
Share on other sites

51 minutos atrás, Gabriele disse:

Obrigada, me ajudou muito. Eu acabei testando o for no código, infelizmente ele não mostrava todos resultados da tábuada (apenas uns 4 ou 5, não lembro direito).

Se optar, pelo "for" que já faz o incremento na sua definição ( ; ;i++) deve remover o outro "i++" de dentro do ciclo... senão como diz... mostra apenas metade dos resultados (de cada vez que corre o ciclo o "i" incrementa 2 e portanto terá metade dos resultados).

cps.

  • Vote 1
Link to comment
Share on other sites

1 hora atrás, antseq disse:

Se optar, pelo "for" que já faz o incremento na sua definição ( ; ;i++) deve remover o outro "i++" de dentro do ciclo... senão como diz... mostra apenas metade dos resultados (de cada vez que corre o ciclo o "i" incrementa 2 e portanto terá metade dos resultados).

cps.

Entendi... Obrigada novamente 🙂

Link to comment
Share on other sites

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.