• ベストアンサー

教えてください

アスタリスクを使ってピラミッドを作るコードを教えてください。 底辺は7のとき、8のときの2とおりです。 Vbできる方、お願いします。

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

  • ベストアンサー
  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.5

テキスト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
質問者

お礼

ありがとうがざいました

その他の回答 (5)

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.6

こんにちは、honiyonです。  すいません、半分ジョークなのですが、目的は満たせますので・・・(^^; PRINT "□□□□*" PRINT "□□□***" PRINT "□□***** " PRINT "□*******" PRINT "*********" *表示が乱れるのでスペースは□で表しています  多分一番知識を必要とせず楽なのですが・・・駄目ですね、はい(笑)  失礼しました(..

shimoraji
質問者

お礼

ありがとうございました。

回答No.4

       *        **       ***       ****      *****      ******     *******     ******** このような、物を作るロジックは次のとおり。 半角スペースと全角スペースをうまくつなげることで、実現しています。 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
質問者

お礼

ありがとうございました

  • coolguys
  • ベストアンサー率18% (351/1917)
回答No.3

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

shimoraji
質問者

お礼

ありがとうございました。

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.2

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

回答No.1

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

関連するQ&A

  • エジプトのピラミッド

    エジプトのいろいろなピラミッドについて調べています。ですが、メイドゥムのスネフェル王の「崩れピラミッド」、ダハシュールの「屈折ピラミッド」の寸法が分かりません。ご存知でしたら、底辺や高さだけでなく、底辺から段になっているところや屈折しているところまでの高さなど詳しく教えてください。よろしくお願いします。

  • 数学ピラミッド面積

    ピラミッド(三角形が4つくついたもの)が2個あり、底辺同士合わせた格好でくっついています。上と下が尖った状態。 底辺同士が合わさった部分は四角形(たぶん正方形)ですが、その対角線が20cmです。それ以外の情報はありません。 面積の求め方は分かりますが(体積の問題ではありません)、各三角形(正三角形のようです)の底辺と高さをどのようにして求めたらいいでしょうか? 中学か高校の数学です。よろしくお願いします。

  • ワード2007を使ってピラミッド図形を作りました。ピラミッドは4段階に

    ワード2007を使ってピラミッド図形を作りました。ピラミッドは4段階にし、高さをそれぞれ調整したいのですが、そのツールがわかりません。「オートシェープの書式設定」の「サイズ」で高さや幅を調整したのですが、そうすると、其々の台形の底辺が他の長さと変わってしまいました。各段階の高さを自由に調整する事はできますか。 イラストレータで挑戦しようと思ったのですが、使いこなせませんでした。

  • C言語のfor文問題で・・・

    C言語のfor文問題で・・・ わからない問題がありまして・・・ アスタリスクを表示させる問題なのですが・・・ わかる方いたら、ソースコードだけでいいので、教えてくだい、お願いします ただし、printfで、全てのアスタリスクを表示させるのはNGで、配列も使ってはいけません。 main関数以外の関数は使わないように、お願いします。 (1)     1段目に*が1つで、 (三角旗型のアスタリスク)       2段目に*が2つで、     3段目に*が3つで、     4段目に*が2つで、     5段目に*が1つ。 (2)   1段目に*が1つで、       2段目に*が3つで、     3段目に*が5つで、    (ダイヤ型のアスタリスク)     4段目に*が3つで、     5段目に*が1つ。     (3)       1段目に*が2つで、   (六角形型のアスタリスク)       2段目に*が4つで、       3段目に*が2つ。     以上3問です。

  • VB6の変数宣言で、末尾に"*"と数値がつく構文の意味

    社内で開発された既存のVB6プロジェクトのソースコードを解析しています。 その中で、標準モジュール内に以下のような構文がありました。 '----------- Public Type BufData KaiinID As String * 4 MiseCode As String * 8 (以下省略) End Type '----------- ユーザ定義型の要素を宣言している記述ですが、 それぞれ末尾の「* 4」や「* 8」は何をしているのでしょうか? "ユーザー定義型 アスタリスク"などで検索しましたが、 これといった情報を見つけられませんでした。 (質問者はjavaのコーディング経験は1年ほどあるんですが、VBはまだ数日です。) よろしくお願いします。

  • visual basic6.0とエクセルのシートについて

    はじめまして、こんにちは タイトルの通り、VBとエクセルについてなのですが、 VBのコンボボックスを変化させると(1、2、3・・・のように)、エクセルのシート(すでにシート名は1から順に名前をつけました)も1、2、3・・・とかわり、そのシートのデータを表示させるようにしたいのですが、どのようなコードを書いたらよいか分かりません。 どなたか解る方がいらっしゃいましたら教えてください。よろしくおねがいします。

  • 配列にaaaからzzzまでの17576(26の3乗)個を格納したいんですけど

    お世話になります。 配列pにaaaからzzzまでの17576通りの文字列を 格納したいんですけど、コードを教えてください。 vbのバージョンはvb6です。 よろしくお願いします。

  • 鈎針で三角ショールを作りたいのですが・・

    ウール100%の並太の毛糸でネット編みにモチーフを後から付ける三角ショールを作りたいと思っているのですが大きさのバランスは出来たら作りながら見たいんです。 最初に三角形の底辺になるように100目(例えば)編んでピラミッドのように頂点に向かっていくのではなく、頂点から裾に広げていくように編むとか、底辺の中央から山形に編み進めて大きくしていく方法と言うのは有るのでしょうか? ためしに編んでみてはいるのですがうまくいきませんし、私の希望する編み方に限らず三角ショールの編み方をネットで見つけることも出来なくて困っています。(近くの本屋さんでもちょっと見つけられなくて・・)それとも不可能なんでしょうか・・・アドバイスよろしくお願いいたします。

  • 「ダ・ヴィンチ・コード」のラストの意味を教えてください

    こんばんは。 先日「ダ・ヴィンチ・コード」をようやく見てきたのですが まずはネタバレ改行を ラストのトム・ハンクスが見ているピラミッドは実際あるんでしょうか? 誰かが移動してピラミッド内に保管した・・・ということなんでしょうか? 全然違っているかもしれませんが教えてくださいますでしょうか? どうぞよろしくお願い致します。

  • sinカーブの表示のさせ方

    C言語で、sin(サイン)カーブをアスタリスクを使って表示するコードを教えてください。 お手数ですが、考え方についても、簡単で結構ですので教えていただければと思います。 よろしくお願いします。

専門家に質問してみよう