É o seguinte, estava vendo um exercício do curso C Progressivo:
Crie um programa em C que peça um número inteiro ao usuário, e imprima a seguinte tabela::
1
2 4
3 6 9
4 8 12 16
...
E a resolução é essa:
O problema é que eu não entendi, se você compilar aí vai ver que ele tá certinho, mas eu fiz o teste de mesa e não entendi mesmo assim. Tipo, digamos que eu digite "5", o número que eu digitar vai equivaler à linha, então quando o primeiro laço "for" iniciar, linha = 1 e ele testa se linha <= num, como 1 <= 5 ele roda e segue pro outro "for". Como coluna <= linha é verdadeiro, já que 1 <= 1, ele "printa" o linha * coluna, que é 1. Até aí beleza, o for incrementa +1 pra variável coluna, que agora vale 2 e quando o laço repete pra testar coluna <= linha, ele passa pro printf, já que 2 <= 1 é falso, beleza, o for incrementa +1 pro linha e roda o outro laço for de novo. Pelo menos nessa análise que eu to fazendo o problema está aqui: agora coluna vale 2 e linha também vale 2, quando ele roda coluna <= linha dá certo, já que 2 <= 2. Entretanto, quando ele "printa" o linha*coluna, ou seja, 2*2 = 4, ao meu ver isso quebraria a sequência, pois o coluna seria incrementado passando a valer 3 e quando a condição fosse testada de novo, daria falso e passaria pro printf("\n");
Então analisando até aí onde eu escrevi, era pra ficar assim:
1
4
Mas não é isso o que acontece, se vocês compilarem vai dar certinho.
Por favor, corrijam esse meu "teste de mesa", porque detesto ficar na ignorância.
Crie um programa em C que peça um número inteiro ao usuário, e imprima a seguinte tabela::
1
2 4
3 6 9
4 8 12 16
...
E a resolução é essa:
Código:
#include <stdio.h> int main() { int num, linha, coluna; printf("Entre com o numero: "); scanf("%d", &num); for(linha = 1 ; linha <= num ; linha++) { for(coluna = 1 ; coluna <= linha ; coluna++) printf("%3d ", linha*coluna); printf("\n"); } }
Então analisando até aí onde eu escrevi, era pra ficar assim:
1
4
Mas não é isso o que acontece, se vocês compilarem vai dar certinho.
Por favor, corrijam esse meu "teste de mesa", porque detesto ficar na ignorância.
Comment