-5

右から左に向かって直角三角形を作成する必要があります。元。(–はスペース)

––––X –––XX ––XXX –XXXX XXXXX

番号(および文字;ex X)は、ランナーに事前に渡されます。私が与えられたコード。三角形を作るコードが必要です。たとえば、数値が 5 の場合、各行は 1 つの X と 4 つのスペースで数えて最大 5 文字を追加します。次に、最後の 5 行がすべて X になります。

更新: 私のコードが出力されます

––––X –––X ––X –X X (– のスペース、文字の後にスペースなし)

4

2 に答える 2

2

では、番号 5 から始めましょう。最善の方法は、単純に各行に何を出力する必要があるかを考えてから、それを行っている行をループすることです。

その数を使用すると、次のように 5 行を出力する必要があります (.隣接する行を識別しやすいので、スペースに使用します)。

....X
...XX
..XXX
.XXXX
XXXXX

次のように各行を見てください。

  • 最初の行には 4 つのスペースとx.
  • 2 行目には 3 つのスペースと 2 つxの 's があります。
  • 3 行目には 2 つのスペースと 3 つxの 's があります。
  • 4 行目には 1 つのスペースと 4 つxの 's があります。
  • 5 行目にはスペースと 5 がありませんx

ここでパターンを感知します ((4,1), (3,2), (2,3), (1,4), (0,5)) - 最初の数字はn-1(この場合は 4) から始まり、減少します2 番目の数値は 1 から始まり、n(この場合は 5) まで増加します。

疑似コード (宿題タイプの質問について私から得たのはこれだけです) では、次のようになります。

def maketriangle (n):
    for lineidx = 1 to n:
        for charidx = 1 to n - lineidx:   // 4 3 2 1 0
            output " "
        for charidx = 1 to lineidx:       // 1 2 3 4 5
            output "X"
        output newline

あなたの仕事は、それを実際のコードに変換することです。

于 2013-01-28T03:31:23.747 に答える
1

nヒント: xnフィールドを出力したい場合、現在の行インデックスはiです。n-i次に、X回 (またはn-i-1、インデックスiが 0 から始まるか 1 から始まるかによっては回数)を印刷する必要があります。

于 2013-01-28T03:30:38.890 に答える