• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PJM

Árvore Completa

5 mensagens neste tópico

Boas pessoal tudo bem?

Amanha irei ter teste a php e o stor de certeza que irá pedir o seguinte exercício:

      *

  * * *

* * * * *

E eu não consigo fazer, estou farto de  :wallbash: e nada

O que fiz até agora:

<table align="center">
<?php

arvore_completa(5);

function arvore_completa($n_linhas) {
		for ($i=1;$i<=$n_linhas;$i++) {
			echo "<tr align='center'>";
				echo "<td>";
				if ($i==1) {
					echo "*"; 
				} else {

					for ($x=1;$x<=$i+2;$x++) {
						echo "*";	
					}

				}

				echo "</td>";
			echo "</tr>";
		}
}

?>
</table>

O objectivo é incrementar 2 ao anterior, mas não sei onde estou a errar  :hmm:

Exemplo:

1ºlinha -> 1

2ºlinha -> 3

3º linha -> 5

Obrigado  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A única coisa que tens mal é o número de estrelas que queres, que é o limite de paragem no teu ciclo for 'interior'.

então vejamos

1,3,5,7, ... é a sucessão 2n-1 com n pertencente ao conjunto dos números naturais.

E já te disse a solução, ora vê lá se consegues traduzir o que eu disse para o teu código. Só precisas de mudar uma linhazita.

Ok, e podes tirar o caso particular do termo de ordem 1.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É mesmo isso, obrigado pedrotuga  :biggrin:

Ainda por cima ando a dar esta matéria a matemática e estava a ver-me a rasca  :shocking:

Para quem quiser saber a solução é substituir o

for ($x=1;$x<=$i+2;$x++) {

por

for ($x=1;$x<=(2*$i)-1;$x++) {

Processo matemático  :P

1º linha: 1

2º linha: 1º linha + 2 = 3

3º linha: 2º linha + 2 = 1º linha + 2 + 2

4º linha: 3º linha + 2 = 2º linha + 2 + 2 = 1º linha + 2 + 2 + 2

O valor 2 é a nossa razão, logo podemos fazer o termo geral como está abaixo indicado:

nº linha (termo geral) = 2(n) - 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só um reparo para optimizares o código.

Guarda a conta (2*$i) numa variável e substitui no ciclo. Senão, cada vez que ele faz um ciclo, vai-te fazer a conta outra vez, o que é desnecessário.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou então mais simples ainda (não vou usar tabelas):

for($i=1; $i<$limite; $i+=2) echo str_repeat("*", $i), "<br />\n";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora