arodrigues182
27-01-2008, 11:59
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?
Baderous
27-01-2008, 12:11
Isso basta fazeres uma tabela para o i, j e o output e fica feito:
http://img184.imageshack.us/img184/2351/tabelawt6.th.jpg (http://img184.imageshack.us/my.php?image=tabelawt6.jpg)
arodrigues182
27-01-2008, 12:24
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?
Baderous
27-01-2008, 12:27
Provavelmente não percebeste porque esse código está mal indentado e provoca essas confusões:
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.
arodrigues182
27-01-2008, 12:29
Tou a ver. Por outras palavras o V só aparece no fim do primeiro ciclo?
Baderous
27-01-2008, 12:31
Tou a ver. Por outras palavras o V só aparece no fim do primeiro ciclo?
Não é no fim do 1º ciclo, é no fim de cada iteração do 1º ciclo.
iteraçãohttp://www.priberam.pt/dlpo/imagens/transparent.gif
do Lat. interatione
s. f., acto de repetir.
arodrigues182
27-01-2008, 12:40
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] = i * 2;
i = 0;
do {
for (int k = 3 - i; k > 0 ; k--)
cout << "=";
cout << tab[i] << endl;
i++;
} while (i<3);
}
este também pensava que dava tipo: =0 =2 etc...
mas é:
===0
==2
=4
é outra vez o mesmo "problema"?
Baderous
27-01-2008, 12:44
é outra vez o mesmo "problema"?
Sim.
arodrigues182
27-01-2008, 13:00
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?
Baderous
27-01-2008, 13:59
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?
tab[4] = 'b' (código ASCII (http://game-editor.com/tutorials/images/ascii.jpg): 98)
tab[6] = 'a' (código ASCII: 97)
tab[4]-tab[6] = 98-97 = 1
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 "{}".
arodrigues182
27-01-2008, 19:22
tab[4] = 'b' (código ASCII (http://game-editor.com/tutorials/images/ascii.jpg): 98)
tab[6] = 'a' (código ASCII: 97)
tab[4]-tab[6] = 98-97 = 1
Ahhhhhhh. Ok muito obrigado. Não tava mesmo a ver.
É isso mesmo Wildson, assim já se compreende.