Jump to content

Pirâmide


progster

Recommended Posts

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.

Link to post
Share on other sites

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.

Link to post
Share on other sites

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.

Knowledge is free!

Link to post
Share on other sites

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.

Link to post
Share on other sites

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.

Link to post
Share on other sites

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.

Edited by thoga31

Knowledge is free!

Link to post
Share on other sites

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.

Link to post
Share on other sites

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
Edited by thoga31

Knowledge is free!

Link to post
Share on other sites

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.

Edited by progster

Não resolvo dúvidas por PM.

Link to post
Share on other sites

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

Link to post
Share on other sites

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?

Edited by progster

Não resolvo dúvidas por PM.

Link to post
Share on other 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
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.