Jump to content
Sign in to follow this  
hackum

Criando um losango.

Recommended Posts

hackum

Oi,

Desejo criar um losango, vejamos o código:


public class expApp9 {

public static void main(String args[])
{


	System.out.println("  *");

	for(int linha1 = 0; linha1 <= 3; linha1++)
	{

		System.out.print("*");

	}

	System.out.println();

	for(int linha2 = 0; linha2 <= 5; linha2++)
	{
		System.out.print("*");
	}

	System.out.println();

	for(int linha3 = 0; linha3 <= 7; linha3++)
	{
		System.out.print("*");
	}

	System.out.println();

	for(int linha4 = 0; linha4 <= 9; linha4++)
	{
		System.out.print("*");
	}

	System.out.println();

	for(int linha5 = 0; linha5 <= 7; linha5++)
	{
		System.out.print("*");
	}

	System.out.println();

	for(int linha6 = 0; linha6 <= 5; linha6++)
	{
		System.out.print("*");
	}

	System.out.println();

	for(int linha7 = 0; linha7 <= 3; linha7++)
	{
		System.out.print("*");
	}

	System.out.println();

	System.out.print("  *");


}

}

O resultado do programa, está saindo dessa forma:

  *

****

******

********

**********

********

******

****

  *

sendo que, tenho que criar um losango, soltando espaços, dessa forma:

0000*0000

000***000

00*****00

0*******0

*********

0*******0

00*****00

000***000

0000*0000

Poderiam me dá umas dicas, de como fazer ? Obs: não quero resolução do problema. Utilizei o Google para fazer pesquisa de como criar o losango, o problema que os códigos mostrados não me ajudaram muito, pois não consigui entender o código passado, e o problema não foi completamente "resolvido".


"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização." (Victor Zangerolame Fim) "Pessoas inteligentes falam de idéias, pessoas comuns de coisas e pessoas mediocres falam de pessoas."(Platão) "A imaginação é mais importante que o conhecimento."(Albert Einstein)"Ensinar é aprender duas vezes." (Joseph Joubert)

Share this post


Link to post
Share on other sites
KTachyon

Isso é código "à pedreiro" :(

Podes usar um loop dentro de um loop para resolveres o problema. Primeiro precisas de saber quantas linhas vai ter o losango (número impar). A linha central será a linha que define quantos espaços é que vão haver antes dos asteriscos, para as outras linhas.

Portanto, um bocadinho de código:

int tamanho_linha(int n_linha) {
    return (n_linha * 2 - 1);
}

//...

linha_central = (n_linhas - 1) / 2 + 1;
num_espacos = (tamanho_linha(linha_central) - tamanho_linha(linha_actual)) / 2;


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
hackum

Desculpe, não consigui compreender.


"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização." (Victor Zangerolame Fim) "Pessoas inteligentes falam de idéias, pessoas comuns de coisas e pessoas mediocres falam de pessoas."(Platão) "A imaginação é mais importante que o conhecimento."(Albert Einstein)"Ensinar é aprender duas vezes." (Joseph Joubert)

Share this post


Link to post
Share on other sites
KTachyon

Basicamente, precisas de imprimir um determinado número de espaços antes dos *, não basta 1 antes da primeira linha...

Depois, se um dia achares que queres fazer um losango com 15 linhas em vez de 9, vais andar a escrever mais 6 ciclos para o fazeres? A minha sugestão é fazeres com for dentro de um for. Utilizas um for para controlar a linha do losango e outro (ou outros) para controlares os espaços e asteriscos que são imprimidos.

for (int linha = 0; linha < total_linhas; linha++) {
    int tamanho_linha_actual = tamanho_linha(linha);
    int num_espacos = (tamanho_linha(linha_central) - tamanho_linha_actual) / 2;
    
    for (int espacos = 0; espaco < num_espacos; espaco++)
        System.out.print(" ");

    for (int asteriscos = 0; asteriscos < tamanho_linha_actual; asteriscos++)
        System.out.print("*");

    System.out.println();
}


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
hackum

Obrigado KTachyon!

Consigui resolver o problema soltando espaço  utilizando o for.

Sem mais,

hackum.


"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização." (Victor Zangerolame Fim) "Pessoas inteligentes falam de idéias, pessoas comuns de coisas e pessoas mediocres falam de pessoas."(Platão) "A imaginação é mais importante que o conhecimento."(Albert Einstein)"Ensinar é aprender duas vezes." (Joseph Joubert)

Share this post


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
Sign in to follow this  

×
×
  • 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.