Ir para o conteúdo
progster

Pirâmide

Mensagens Recomendadas

progster

Viva,

O exercício pede para criar uma pirâmide, em que o número de linhas é introduzido pelo utilizador.

O output deverá ser algo do género:

    1
  121
12321

Ainda não tenho nada de jeito feito:

package piramide;
public class Piramide {
   public static void main(String[] args)
   {
       int i,nlinhas;

       System.out.print("Introduza o número de linhas: ");
       nlinhas=Le.umIt();
       System.out.println("O número de linhas da pirâmide é: "+nlinhas);
       for(i=1;i<=nlinhas;i=i+1){
           System.out.println(i); 
       }
   }
}

O output que me dá é:

O número de linhas da pirâmide é: 5
1
2
3
4
5

Como posso prosseguir a partir daqui? Qual é o próximo passo? Podem dar-me uma dica para ver se consigo lá chegar sozinho?

Agradeço desde já qualquer ajuda que me possam dar.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Trocando o System.out.print que lá está por este:

System.out.println(""+i+""+i+""+i+""); 

Dá-me o seguinte output:

Introduza o número de linhas: 3
O número de linhas da pirâmide é: 3
111
222
333

O que me leva à conclusão de que vou precisar de pelo menos outro ciclo for.

Ok, vou dar uma vista de olhos, entretanto o tópico fica em aberto.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Não tinhas lá nenhum System.out.print, mas sim um System.out.println.

Vais precisar de facto de dois ciclos, e de utilizar uma mistura destes dois métodos de output.

Tens razão vou ver se lá consigo chegar sozinho, se vir coisa, peço mais umas dicas.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Viva, penso que preciso de mais uma dica:

package piramide;
public class Piramide {
   public static void main(String[] args)
   {
       int i,j,k,nrlinhas;

       System.out.print("Introduza o número de linhas: ");
       nrlinhas=Le.umIt();
       System.out.println("O número de linhas da pirâmide é: "+nrlinhas);
       for(i=1;i<=nrlinhas;i=i+1){
           System.out.print(i);    
           for(j=i-1;i>=1;j=i-1){
               System.out.println(j);
               break;
           }
       }
   }
}

Output:

run:
Introduza o número de linhas: 3
O número de linhas da pirâmide é: 3
10
21
32

O que é que me estará a escapar?


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

os teu ciclos não fazem sentido

tenta tu descrever o que querias fazer com cada um, e depois tenta comparar com o que tens e o que querias


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Tens um problema na condição dos teus ciclos. Lê lá bem o que eles estão a fazer.

E possivelmente precises de mais ciclos for, dependendo do algoritmo que te vier à cabeça.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

O objetivo final é construir uma pirâmide do género indicado anteriormente.

No primeiro for o raciocinio é:

Para uma variável i a variar entre 1 e nrlinhas, quero que escreva i, ou seja 1,2,3,...,mrlinhas (vertical).

Para o segundo for o raciocinio é semelhante ao anterior, mas para nrlinhas=3 para já quero que escreva 0,1,2 que é o que está a fazer.

Onde estou a ter dificuldades é fazer o mesmo para outra linha, não sei se me faço entender, mas basicamente o output que quero receber:

   1
 121
12321

Ok. Vou trabalhar mais um pouco nos ciclos for.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Os teus ciclos não fazem o que pretendes. Não fazem, aliás, sentido.

Pega no seguinte algoritmo, com espaços a preencher por ti, a ver se consegues chegar a uma solução:

Para cada i, a variar entre 1 e nrlinhas, fazer:
   Para cada j, a variar entre <???> e <???>, fazer:   // escrever espaços
       Escrever ' '
   Para cada j, a variar entre <???> e <???>, fazer:   // escrever ordem crescente
       Escrever i
   Para cada j, a variar entre <???> e <???>, fazer:   // escrever ordem decrescente
       Escrever i
   Escrever linha
Fim-Para

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Para já:

Para cada j, a variar entre <1> e <nrlinhas>, fazer: // escrever ordem crescente a)
Escrever i
Para cada j, a variar entre <nrlinhas> e <1>, fazer: // escrever ordem decrescente b)
Escrever i

a)

J=1;J<=nrlinhas;J=J+1

b)

J=nrlinhas-1;J>=1;J=J-1

Vou trabalhar nos outros.

Editado por progster

Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vrael

Assim pensando por alto..Precisas de saber as regras básicas da pirâmide. Do género tem de ter sempre um nr impar de caracteres e por cada linha a fórmula para o nr de chars é (x*2)-1..sendo x o nr de linhas de resto já tens o algoritmo postado acima..

Boa sorte

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Bem, fiz progressos.

package piramide;
public class Piramide {
public static void main(String[] args)
{
	int num,nlinha,i;

   do{
	 System.out.print("Número de linhas: ");
	 num=Le.umIt();
	 if(num<1 || num>9){
	   System.out.print("Número incorreto!");
	 }
   }while (num<1 || num>9);

 for(nlinha=1;nlinha<=num-nlinha;nlinha++){
	 for(i=1;i<=num - nlinha;i++){
		System.out.print(" ");

	 }

	 for(i=1;i<=nlinha;i++){
		  System.out.print(i);
	 }

	 for(i=nlinha-1;i>=1;i--){
		  System.out.print(i);
	 }

	 System.out.println();
 }	  
 }
}

A questão é que por exemplo quando num=4 só aparece:

1
121

quando deveria de aparecer:

   1
 121
  12321
1234321

O que é que me estará a escapar?

Editado por progster

Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
for(nlinha=1;
   nlinha<=num-nlinha; // faz as contas para o primeiro ciclo, para o segundo e para o terceiro (o quarto não é necessário)
   nlinha++){


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

altera os nomes das variáveis pelos valores correspondentes destas nos momentos descritos

- primeira verificação (antes de executar o código pela primeira vez)

- segunda verificação (depois de executar o código uma vez)

- terceira verificação (depois de executar o código duas vezes)


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.