アプリ版:「スタンプのみでお礼する」機能のリリースについて

アスタリスクを使って正三角形を出力させるにはどうしたらいいのでしょうか?for文やif文など使って考えているのですが、わかりません。わかる人がいましたらよろしくお願いいたします。

A 回答 (2件)

正三角形かどうかはコンソールの出力縦横比(文字の大きさや、文字と文字の間、行間等)に依存すると思いますが、その比を考えた(プログラム上で取り込んだ)上での正三角形でしょうか??



そうだとちょっとわかりませんが、単純に三角形を書けと言われた場合のプログラムを示します。


public class Triangle {
public static void main(String args[])
{
Triangle sankaku=new Triangle();
for(int i=3;i<=10;i++)
{
System.out.println("i="+i+"のとき");
sankaku.out(i);
System.out.println();

sankaku.out2(i);
System.out.println();
}
}

void out(int num)
{
for(int i=1;i<=num;i++)
{
for(int j=0;j<num-i;j++)
{
System.out.print(" ");
}
for(int j=0;j<2*i-1;j++)
{
System.out.print("*");
}
System.out.println("");
}
}

void out2(int num)
{
for(int i=1;i<=num;i++)
{
for(int j=0;j<num-i;j++)
{
System.out.print(" ");
}
for(int j=0;j<2*i-1;j++)
{
if(j==0 || j==2*i-2 || i==num)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println("");
}
}
}
    • good
    • 2

コンソールで*を使ってということなので


どうしてもいびつになりますが、
こんな感じかな
----------------------------------------------------------------
class Tetra {
public static void main(String[] args){
int Len=20 ; //辺の長さ
double Rate=2.2 ; //コンソール画面の縦横の比率
for(int i=0;i<Len/2;i++){
double len = i/Math.cos(Math.PI/3.0);
for(int j=0;j<len*Math.sin(Math.PI/3.0)*Rate;j++){
System.out.print("*");
}
System.out.println();
}
for(int i=Len/2;i>=0;i--){
double len = i/Math.cos(Math.PI/3.0);
for(int j=0;j<len*Math.sin(Math.PI/3.0)*Rate;j++){
System.out.print("*");
}
System.out.println();
}
}
}
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!