Gabriele Posted May 12, 2020 at 05:51 PM Report Share #618102 Posted May 12, 2020 at 05:51 PM 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 More sharing options...
Galo Posted May 12, 2020 at 06:35 PM Report Share #618103 Posted May 12, 2020 at 06:35 PM 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 More sharing options...
antseq Posted May 12, 2020 at 07:39 PM Report Share #618106 Posted May 12, 2020 at 07:39 PM (edited) 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 May 12, 2020 at 07:40 PM by antseq corrigir texto 1 Report Link to comment Share on other sites More sharing options...
Gabriele Posted May 13, 2020 at 09:00 AM Author Report Share #618110 Posted May 13, 2020 at 09:00 AM 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 More sharing options...
Gabriele Posted May 13, 2020 at 09:04 AM Author Report Share #618111 Posted May 13, 2020 at 09:04 AM 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 More sharing options...
antseq Posted May 13, 2020 at 09:55 AM Report Share #618114 Posted May 13, 2020 at 09:55 AM 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. 1 Report Link to comment Share on other sites More sharing options...
Gabriele Posted May 13, 2020 at 11:51 AM Author Report Share #618116 Posted May 13, 2020 at 11:51 AM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now