Olá pessoal, sou iniciante em java e queria algumas dicas de que rumo tomar nessa questão: Entrada
Informe o número de pirâmides: 3
Informe a altura da pirâmide 1: 3
Informe a altura da pirâmide 2: 2
Informe a altura da pirâmide 3: 4 Saída
Eu já pensei em várias formas de fazer, mas tou com dificuldade em desenvolver.
Primeiro eu pensei em ir “desenhando” as Strings. Mas ai ia ficar ruim porque não dá pra modificar as Strings e tal.
Depois eu pensei em fazer só com System out prints, mas por conta de ter mais de uma pirâmide não ia dar pra pra colocar uma ao lado da outra.
E por último, tou pensando em fazer as pirâmides com chars ’ ’ e ‘*’. Ai eu faria uma array de duas dimensões, e ia imprimindo cada ‘linha’ (a primeira dimensão seriam as linhas, e a segunda cada caractere da linha). Ex.: A linha da base das pirâmides: System.out.print(p1[0]+p2[0]+p3[0] + “\n”); A linha de cima: System.out.print(p1[1]+p2[1]+p3[1] + “\n”);.
Mas ai eu tou com problemas na hora de criar um método que cria as pirâmides, porque ai eu tou pensando em imprimir cada pirâmide assim:
Ex.: altura: 2
_ _ _ * _ _
_ * _ * _ *
(cada underline é um espaço)
O problema é pra criar a linha de cima por exemplo. O que eu faço pra colocar só um * e o resto com os espaços? Na linha de baixo dá pra fazer um for, e quando o índice for par botar ’ ', se for ímpar ‘*’. Mas e nas de cima, como eu faço?
Bom, acho que expliquei minhas dúvidas ;P.
Eu queria algumas dicas sobre que rumo tomar na resolução e tal.
Obrigada!
Foi mal, acho que não expliquei direito.
Na entrada, o usuário pode digitar qualquer número de pirâmides, e pra cada pirâmide ele pode digitar qualquer número para ser a altura.
a solução que encontrei foi essa acho que não é a melhor mais funcionou
agora é só ler os comentários intender o código e adaptar para mais de um triangulo
public class Triangulo {
public static void main(String[] args){
int alt = 10; // a altura do triangulo
for(int i=0; i<alt; i++){
for(int j=0; j< (1+((alt-1)*2))*2-1; j++){
//a primeira linha tem 1 * (1+)
//a cada uma das outras linha se adiciona + 2 * ((alt-1)*2)
//a cada * tem um espaço (*2)
//o ultimo * não leva espaço (-1)
if((((alt-1)*2))>=j-(i*2) && (((alt-1)*2))<=j+(i*2)){
if(j%2==0){
System.out.print("*");
}else{
System.out.print(" ");
}
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
Considero este problema não como um exercício básico de iniciantes, mas sim como um desafio para aqueles que já tem uma boa base de programação.
Experimente desenvolver como sugerido abaixo. Em caso de dificuldades no processamento, favor postar seu código.
{
definir contador_de_linhas que, partindo da maior altura,
será decrementado até efetuar a linha das bases; para cada ocorrência dele:
{
definir (e inicializar, como vazio) string_da_linha
para cada pirâmide:
{
definir espaço, como segue:
{
para contador_de_linhas MAIOR ou IGUAL à altura da pirâmide,
espaço será uma unidade menor que o dobro da altura da pirâmide
para contador_de_linhas MENOR do que a altura da pirâmide,
espaço será o dobro de (contador_de_linha decrementado de uma unidade)
}
definir estrelas, como segue:
{
para contador_de_linhas MAIOR do que a altura da pirâmide,
preencher estrelas com ' '
para contador_de_linhas IGUAL à altura da pirâmide,
preencher estrelas com '*'
para contador_de_linhas MENOR do que a altura da pirâmide,
preencher estrelas com '-' concatenado com _N_ vezes '*-',
sendo _N_ calculado por uma unidade a mais do que o dobro de (contador_de_linha MENOS altura da pirâmide)
}
complementar string_da_linha com espaço concatenado com estrelas concatenado com espaço
}
imprimir
}
}