-PR-
解決済み

教えてください

  • すぐに回答を!
  • 質問No.88825
  • 閲覧数190
  • ありがとう数5
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 66% (4/6)

アスタリスクを使ってピラミッドを作るコードを教えてください。
底辺は7のとき、8のときの2とおりです。
Vbできる方、お願いします。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル9

ベストアンサー率 48% (24/49)

テキストBOXなどのプロパティを使用すれば簡単にできるような気がします。
テキストBOX以外でも複数行表示や中央揃えができるオブジェクトなら応用可能
だとおもいます。
スペースで補正するやり方は、フォントなどに左右されます。Pが付いてるフォントは避けたほうがいいと思います。

一応サンプルコード書いときます。

オブジェクト
========= ==============
Form Form1
TextBox Text1
Text2
Command
Button Command1
Command2
Command3
Command4

プロパティ設定
'Text1.MultiLine を設計時にTrue
'Text1.Alignment を設計時に中央
'Text2.MultiLine を設計時にTrue
'Text2.Alignment を設計時に左


ソース
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Option Explicit

'※※※※※※※※※※※※※※※※※
'ボタンのクリック7編テキストボックスのプロパティ使用版
'※※※※※※※※※※※※※※※※※
Private Sub Command1_Click()

Call FlTextBoxP(7)


End Sub

'※※※※※※※※※※※※※※※※※
'ボタンのクリック8編テキストボックスのプロパティ使用版
'※※※※※※※※※※※※※※※※※
Private Sub Command2_Click()

Call FlTextBoxP(8)

End Sub

'※※※※※※※※※※※※※※※※※
'ボタンのクリック7編スペース使用版
'※※※※※※※※※※※※※※※※※
Private Sub Command3_Click()


Call FlTextBoxS(7)

End Sub

'※※※※※※※※※※※※※※※※※
'ボタンのクリック8編スペース使用版
'※※※※※※※※※※※※※※※※※
Private Sub Command4_Click()

Call FlTextBoxS(8)

End Sub

'※※※※※※※※※※※※※※※※※
'テキストボックスのプロパティ使用版
'※※※※※※※※※※※※※※※※※
Private Function FlTextBoxP(ByVal vlStrLen As Long) As Long

Dim lCnt As Long

'Text1.MultiLine を設計時にTrue
'Text1.Alignment を設計時に中央

Text1.Text = "" 'クリア
lCnt = vlStrLen 'ループカウント

Do Until lCnt <= 0

'初回以外改行を加える
If Text1.Text <> "" Then
Text1.Text = vbCrLf & Text1.Text
End If

'残りカウント分*を表示
Text1.Text = String(lCnt, "*") & Text1.Text

'カウント減算
lCnt = lCnt - 1

Loop

End Function

'※※※※※※※※※※※※※※※※※
'テキストボックスのスペース使用版
'※※※※※※※※※※※※※※※※※
Private Function FlTextBoxS(ByVal vlStrLen As Long) As Long

Dim lwCnt As Long
Dim lCnt As Long
Dim sSpaceStr As String
Dim sPrintStr As String


'Text2.MultiLine を設計時にTrue
'Text2.Alignment を設計時に左
Text2.Font = "MS ゴシック"

Text2.Text = "" 'クリア
lCnt = vlStrLen 'ループカウント

Do Until lCnt <= 0

'初回以外改行を加える
If Text2.Text <> "" Then
Text2.Text = vbCrLf & Text2.Text
End If

sSpaceStr = ""
If vlStrLen - lCnt <> 0 Then
sSpaceStr = String(vlStrLen - lCnt, " ")
End If
sPrintStr = String(lCnt, "*")
Text2.Text = sSpaceStr & sPrintStr & Text2.Text

'カウント減算
lCnt = lCnt - 1

Loop

End Function
お礼コメント
shimoraji

お礼率 66% (4/6)

ありがとうがざいました
投稿日時 - 2001-06-13 00:30:33
関連するQ&A
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル7

ベストアンサー率 50% (8/16)

ピラミッドってのは、要するに。      *     * *    * * *   * * * * こういうものを作るって言うことなんでしょうか?
ピラミッドってのは、要するに。
     *
    * *
   * * *
  * * * *
こういうものを作るって言うことなんでしょうか?


  • 回答No.2
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。 □□□■ □□■■■ □■■■■■ ■■■■■■■  黒が*、白がスペースだと考えてください。 何か思い浮かびませんか?  スペースはいくつずつ減少していますか?*はいくつずつ増加していますか?  どんな計算をすれば良いか思い浮かびませんか?  参考になれば幸いです(.. 
こんにちは、honiyonです。

□□□■
□□■■■
□■■■■■
■■■■■■■

 黒が*、白がスペースだと考えてください。
何か思い浮かびませんか?

 スペースはいくつずつ減少していますか?*はいくつずつ増加していますか?
 どんな計算をすれば良いか思い浮かびませんか?

 参考になれば幸いです(.. 
  • 回答No.3
レベル13

ベストアンサー率 18% (351/1917)

3つスペースあって* 2つスペースあって*** 1つスペースがあって***** スペースが無くて******* なんか、法則性があるな~・ ...続きを読む
3つスペースあって*
2つスペースあって***
1つスペースがあって*****
スペースが無くて*******

なんか、法則性があるな~・
お礼コメント
shimoraji

お礼率 66% (4/6)

ありがとうございました。
投稿日時 - 2001-06-13 00:34:38
  • 回答No.4
レベル7

ベストアンサー率 50% (8/16)

       *        **       ***       ****      *****      ******     *******     ******** このような、物を作るロジックは次のとおり。 半角スペースと全角スペースをうまくつなげることで、実現しています。 Form1にテキストボックス(Text1)をはりつけて、フォーム部分をクリックすると、 テキ ...続きを読む
       *
       **
      ***
      ****
     *****
     ******
    *******
    ********
このような、物を作るロジックは次のとおり。
半角スペースと全角スペースをうまくつなげることで、実現しています。
Form1にテキストボックス(Text1)をはりつけて、フォーム部分をクリックすると、
テキストボックスに文字のピラミッドが入ります。
あらかじめ、テキストボックスのプロパティーMultiLineをTrueにしておいてください。
Private Sub Form_Click()
Dim i As Long
Dim n As Long
Dim str As String

n = 8 '←ここで段数を決めています。

str = ""

For i = 1 To n
If (i / 2) = CInt((i / 2)) Then
str = str & String$(n - (i / 2), " ") & String$(i, "*") & n - (i / 2) & vbCrLf
Else
str = str & " " & String$(n - Fix(i / 2) - 1, " ") & String$(i, "*") & n - (i / 2) & vbCrLf
End If
Next

Text1.Text = str

End Sub
計算結果が.5の場合に半角スペースに返るようにロジックをくんだだけです。
参考になりましたか?
お礼コメント
shimoraji

お礼率 66% (4/6)

ありがとうございました
投稿日時 - 2001-06-13 00:32:13
  • 回答No.6
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。  すいません、半分ジョークなのですが、目的は満たせますので・・・(^^; PRINT "□□□□*" PRINT "□□□***" PRINT "□□***** " PRINT "□*******" PRINT "*********" *表示が乱れ ...続きを読む
こんにちは、honiyonです。

 すいません、半分ジョークなのですが、目的は満たせますので・・・(^^;

PRINT "□□□□*"
PRINT "□□□***"
PRINT "□□***** "
PRINT "□*******"
PRINT "*********"

*表示が乱れるのでスペースは□で表しています

 多分一番知識を必要とせず楽なのですが・・・駄目ですね、はい(笑)
 失礼しました(..
お礼コメント
shimoraji

お礼率 66% (4/6)

ありがとうございました。
投稿日時 - 2001-06-13 00:28:23
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ