1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ciclos for - c++

Discussão em 'Programação' iniciada por arodrigues182, 27 de Janeiro de 2008. (Respostas: 11; Visualizações: 5714)

  1. arodrigues182

    arodrigues182 Power Member

    Pessoal é assim: no exame que irei ter, irá de certeza absoluta aparecer um exercicio em que nos peça para escrever no papel o resultado do código que lá está. Só que o problema é que o código mete 2 ciclos for metidos "um no outro" e aquilo dá-me resultados que eu não consigo ver. Por exemplo:

    #include <iostream>
    using namespace std;

    int main() {
    int i, j;
    for (i = 5; i>1; i--) {
    for (j = 5-i ; j < 5; j++)
    cout << "!";
    cout << "V" << endl;
    }


    }

    eu pensava que o resultado ía ser: !V!V!V etc...
    mas afinal é isto:

    !!!!!V
    !!!!V
    !!!V
    !!V

    alguém me pode explicar isto?

     
  2. Baderous

    Baderous Banido

    Isso basta fazeres uma tabela para o i, j e o output e fica feito:

    [​IMG]
     
  3. arodrigues182

    arodrigues182 Power Member

    Sim. Mas só não percebo é isto:

    cout << "!";
    cout << "V" << endl;

    isto não quer dizer que se tem d escrever sempre !V em cada ciclo?
     
  4. Baderous

    Baderous Banido

    Provavelmente não percebeste porque esse código está mal indentado e provoca essas confusões:

    Código:
    int main() {
        int i, j;
        for (i = 5; i>1; i--) 
        {
            for (j = 5-i ; j < 5; j++)
                cout << "!";
        cout << "V" << endl;
        }
    }
    O "!" aparece sempre que existe uma iteração do ciclo interior, enquanto que o "V" só aparece no fim de cada iteração do ciclo exterior.
     
  5. arodrigues182

    arodrigues182 Power Member

    Tou a ver. Por outras palavras o V só aparece no fim do primeiro ciclo?
     
  6. Baderous

    Baderous Banido

    Não é no fim do 1º ciclo, é no fim de cada iteração do 1º ciclo.

     
  7. arodrigues182

    arodrigues182 Power Member

    Acho que já percebi. Obrigado.
    Não percebo também é este que mete ponteiros:

    #include <iostream>
    using namespace std;

    int main (){
    int * tab = new int[3];
    int i;
    for (i = 0; i < 3; i++) tab = i * 2;
    i = 0;
    do {
    for (int k = 3 - i; k > 0 ; k--)
    cout << "=";
    cout << tab << endl;
    i++;
    } while (i<3);
    }

    este também pensava que dava tipo: =0 =2 etc...
    mas é:

    ===0
    ==2
    =4

    é outra vez o mesmo "problema"?
     
  8. Baderous

    Baderous Banido

    Sim.
     
  9. arodrigues182

    arodrigues182 Power Member

    Só mais uma coisa:

    char tab[] = "Coimbra"
    char *ptr = & tab[4]

    a) cout << tab[4]-tab[6]

    este exercicio tem uma serie de alineas mas só tenho duvidas nesta. quando meto isto no pc aparece um numero qualquer. que numero é esse?
     
  10. Baderous

    Baderous Banido

    tab[4] = 'b' (código ASCII: 98)
    tab[6] = 'a' (código ASCII: 97)

    tab[4]-tab[6] = 98-97 = 1
     
  11. Claws

    Claws Power Member

    Talvez assim percebas melhor:

    int main() {
    int i, j;
    for (i = 5; i>1; i--)
    {
    for (j = 5-i ; j < 5; j++)
    {
    cout << "!";
    }
    cout << "V" << endl;
    }
    }

    O ciclo de j apenas actua em cout << "!";. Por este apenas actuar em uma única linha de código, podes simplesmente não colocar os "{}".
     
  12. arodrigues182

    arodrigues182 Power Member

    Ahhhhhhh. Ok muito obrigado. Não tava mesmo a ver.

    É isso mesmo Wildson, assim já se compreende.
     

Partilhar esta Página