Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Dúvida] Exercício em C

Collapse
This topic is closed.
X
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ [Dúvida] Exercício em C

    É 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:

    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");
        }
    }
    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.
    Last edited by Nickguitar.dll; 06-02-2016, 02:31.

  • Font Size
    #2
    Podem fechar o tópico. Analisei mais uma vez e encontrei a resposta. Não tinha me tocado que o segundo "for" é executado desde o início novamente, já que ele está dentro de outro "for", então a variável é inicializada em 1 novamente.

    Comment


    • Font Size
      #3
      Tópico trancado.
      .

      - PHP & VB C0d3r.

      Nickguitar.dll@hotmail.com

      http://www.youtube.com/user/superskate56 <~ Hacking tuts =)

      Quando aprendemos a ouvir, também aprendemos a falar..
      Quando aprendemos a ler, também aprendemos a escrever.
      Então, quando aprendemos a usar um computador, por que não aprender a programa-lo ?


      I'm C0ding for $$$

      #~: Just $this :~#

      Comment

      X
      Working...
      X