• ベストアンサー

文字列の作成

こんばんは aとbとcを使って文字列を作成したいのですがコードが書けません。 困りました。 例 abc bbc cbc aac acc ~~~~~ ccc 全部で27通りだと思います。 出力は配列かリストでお願いします。 for文で書くのかな~~~ 困りましたね~~~~

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

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

Visual Basicとありますが、結果を表示するにも、エクセルが便利なので、「VBA」(Visual Basic for Applications)で作りました。 鈍くさい、美しくないプログラムですが、分かりやすくはあると思います。 Option Explicit Sub Test() Dim i, j, k, l As Integer Dim x(2), y(2), z(2) As String For i = 0 To 2 x(i) = Chr(97 + i) y(i) = Chr(97 + i) z(i) = Chr(97 + i) Next i l = 0 For i = 0 To 2 For j = 0 To 2 For k = 0 To 2 l = l + 1 Cells(l, 1).Value = x(i) & y(j) & z(k) Next k Next j Next i End Sub 簡単な説明です。 For i = 0 to 2   x(I) = Chr(97+i) は、「Chr(97)」が「a」なので、結果として「i = 0」とのき「a」、「1」のとき「b」、「2」のとき、「c」が入ります。 あとは、単純な組み合わせなので、分かって頂けると思います。

bybalsendercase
質問者

お礼

先日、BPにしたつもりでいましたが、今日もう一度確認したらそのままになっていました。びっくりしました。 それにしても、このコードが書けないようではプログラマー(趣味です)失格ですね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 次の様にしますと、For~Nextの繰り返し処理は2重で済みますし、文字列の長さや「文字列を構成する文字の種類の数」が変わっても Const myLength = 3 '求める各文字列の文字数 の所と myChar = Array("a", "b", "c") '求める文字列に使う文字 の所の設定値を変えるだけで良く、それ以外の部分のVBAの構文を変更する事無く使う事が出来ます。 Sub QNo9231486_文字列の作成() Const myLength = 3 '求める各文字列の文字数 Dim i As Long, j As Long, m As Long, n As Long, buf As Long, _ myChar As Variant, myString() As String myChar = Array("a", "b", "c") '求める文字列に使う文字 m = UBound(myChar) + 1 n = m ^ myLength - 1 ReDim myString(n) For i = 0 To n 'myString(i) = myChar(i Mod m) buf = i For j = 1 To myLength myString(i) = myChar(buf Mod m) & myString(i) buf = Int(buf / m) Next j Next i '出力は配列 myString() の最終値になります。 'For i = 0 To n 'Range("A1").Offset(i).Value = myString(i) 'Next i End Sub

bybalsendercase
質問者

お礼

有難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1641/2490)
回答No.2

以下のような感じですかね~~~~ 真似してみました(笑) エクセルVBAだと Sub Example() Dim i As Integer, j As Integer, k As Integer, m As Integer Dim MyStrings() As String, buf As Variant buf = Array("A", "B", "C") m = 0 For i = LBound(buf) To UBound(buf) For j = LBound(buf) To UBound(buf) For k = LBound(buf) To UBound(buf) ReDim Preserve MyStrings(m) MyStrings(m) = buf(i) & buf(j) & buf(k) m = m + 1 Next k Next j Next i Range(Cells(1, "A"), Cells(m, "A")).Value = WorksheetFunction.Transpose(MyStrings) End Sub VBだとButton1_Clickとして Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim i As Integer, j As Integer, k As Integer, m As Integer Dim MyStrings() As String Dim buf() As String = {"A", "B", "C"} m = 0 For i = LBound(buf) To UBound(buf) For j = LBound(buf) To UBound(buf) For k = LBound(buf) To UBound(buf) ReDim Preserve MyStrings(m) MyStrings(m) = buf(i) & buf(j) & buf(k) Debug.Print(MyStrings(m)) m = m + 1 Next k Next j Next i End Sub

bybalsendercase
質問者

お礼

有難う御座います。 先日Prome_Linさんの回答にBPを付けましたが、何故かそのままになっていました。 お手数おかけしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCEL2007での異なる列同士での文字の照合

    EXCELの操作について、以下のようなことをおこないたいと考えています。 例えば、A列には、下記のような4つの語句しか無いとして、 <A列> あいうえお かきくけこ さしすせそ ABC B列には、A列の4語句しか入力できないルールがあるとします。しかし、入力ミスもあって、4語句に完全一致しないものも含まれています。 <B列> かきくけこ かかくけこ ACC ABC ABC ABC BBC あいうえお ささしすそ A列の語句リストと完全一致しないものを見つけ出し、そのセルの色を変えるなど(もしくは何らかのフラグをたてる)ことをしたいのです。 実際の業務では、A列にあたる語句リストの数は数百あり、B列の入力語句の数も数千あります。 EXCELの機能もしくはマクロ等でできるかどうかなのですが。 EXCELでなくても、例えば何らかのフリーソフトを併用すれば可能、というのでも良いです。 ご教授お願いたします。

  • ファイルから文字列を読み込むシェルスクリプトの作成

    現在シェルスクリプトの勉強をしています。 ファイルから文字列を読み込み表示するだけのシェルスクリプトを 作成しているのですが、エラーが出てうまくいきません。 ./test.sh: line 10: syntax error near unexpected token `done' 以下の通りファイルを作っています。 改行コードはLF、文字コードはSJISとなっています。 どのあたりが間違っているのか教えて頂けますでしょうか。 よろしくお願いします。 test.sh --------------------- #!/bin/sh LIST=./abc.lst while read F1 echo ${F2} break done < ${LIST} } --------------------- abc.lst --------------------- AAA BBB CCC ---------------------

  • 文字列を配列に…。

    VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

  • 文字列を読み込む方法

    最近Perlをはじめました。 文字列を読み込んでいき、3文字づつにまとめる方法はありますか? 例) abcdefg→abc efg と分けて配列に読み込む。

    • ベストアンサー
    • Perl
  • 文字列を配列定義に使用するには

    文字列を配列の定義に使用したいのですが、可能でしょうか? 具体的には以下のような内容です。  $AAA = array("name"=>"山田","val"=>"10"); とすると変数$AAAは配列になります。  $BBB = 'array("name"=>"佐藤","val"=>"20")'; とすると変数$BBBは文字列になります。  $CCC = $BBB; と変数$CCCに代入した場合に、 変数$CCCを配列として認識させたいです。 つまり  print $CCC[name]; //佐藤  print $CCC[val]; //20 というように出力させたいのですが、 根本的に可能なのでしょうか…? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • VBS:文字列を元に外部リストから情報を抽出したい

    自分のユーザー名を元に、外部リストから任意の情報を 取得するVBScriptを作成したいです。 【検索条件】 1.一列目の列Aから自分のユーザー名を検索(例では2件ヒット) 2.ヒットした内容から3列目の文字列を抜き取る 3.4列目が存在する場合は4列目(概要)を抜き取る 3.msgbox等でただ表示させるだけ。 【外部リスト例:list.txt = ユーザー名,グループ,文字列,概要】 ----------------------- ABC,123,AAAAAAAAAAAAA 123,ABC,AAAAAAAAAAAAA ABC,123,BBBBBBBBBBBBB,AAA 123,ABC,BBBBBBBBBBBBB ----------------------- 【理想の動き】 --------------------------------------------------------------------- (1) ユーザー名 UserName = "ABC" (2) Forで外部リストから一列目UserNameを検索(例の場合2件) for ・1回目、1行目のABCの内容はAAAAAAAAAAAAAです。 → 4列目は存在しないのでスルー ・2回目、3行目のABCの内容はBBBBBBBBBBBBBです。 → 4列目が存在するので続けて「AAA」も表示。 next --------------------------------------------------------------------- あまり複雑化せずに、簡単に出来ればうれしいです。

  • 【Java】for文で文字列反転

    Javaのfor文で文字列を反転して出力させるにはどうしたらいいのでしょうか。 超初心者なのでコード等の説明を付していただけるとありがたいです。

    • ベストアンサー
    • Java
  • C# 文字列の分割

    VS2005を使用しているものです。 複数のURL(入力)を格納したString型の配列があるのですが、 この配列から各要素(URL)の最後尾にあるファイル名だけを 取り出して別のString型の配列に入れたいのですが Splitなどを駆使すればよいのでしょうか? 例 C:\○○○\▲▲▲\××.拡張子 (元の配列の要素の一例)   などから××.拡張子の文字列だけを取り出して   別の配列に格納する感じです。 splitを使う際は\などを区切りに考えています。 for文の中でsplitを駆使しようと考えたのですが、分割した文字列を別で配列に格納して、その最後尾の要素だけ取り出したいのですが、URLの長さは入力によってまちまちなのでどのようにして取り出せばよいか困っています。 勉強不足で恐れ入りますが、何かご教授願えれば幸いです。

  • マルチバイト混在の文字列整形

    OS: Linux Ubuntu 言語: C++ 引数でchar*型の文字列配列(マルチバイト含む)を受け取り 指定した幅で枠つきで文字列を出力したいのですがうまくいきません。 作りたい出力 ━━━━━━━ ┃1: あいうえお┃ ┃2: かきく   ┃ ┃3: abc    ┃ ━━━━━━━ - str[] = {"あいうえお", "かきく", "abc"} - あいうえおの後ろは空白なし - 他は空白と文字列を合計してあいうえおと同じ長さに合うように 私の環境では日本語は3byteと認識され  strlen("あいうえお") = 15 となります。 イメージでは for (i = 0; i < strlen(str[])の最大値; i++) { cout << "┃" << i << ":" << setw(15) << left << str[i] << "┃" } のようなコードになると思うのですが 日本語一文字が出力上は2byte分の幅に見えるのに 認識としては3byteになってしまうので空白が1byte多くなり ━━━━━━━ ┃1: あいうえお┃ ┃2: かきく    ┃ ┃3: abc       ┃ ━━━━━━━ のようにずれてしまいます。 (表記上、最初の枠もずれていますが  現状は足りない分を埋めるsetfillが余計に働いてしまうということです。) 何か対策はありますでしょうか?

  • C言語の文字列で

    基本的なことですがよろしくお願いします。 文字列の配列を作る時 文字を個々に配列にする場合配列の大きさを\0を合わせた5にすると思います str[5] = {'a','b','c','d','\0'} 疑問に思ったのは文字列で初期化する場合は\0はコンパイル時に自動で付加と説明を受けましたが、初期化時には配列の大きさは文字列の長さだけで良いのでしょうか? str[4] = "abcd" 解らなければ多く取ればいいよと言われればそれまでですが、for文で回転させる時は'\0'はどうなっちゃうんでしょうか

このQ&Aのポイント
  • 質問者の姉は、仕事上の重要なポジションを持つ男性との肉体関係を通じて有利になろうとしている。
  • 姉は男性の趣味であるSM行為に興味を持ち、道具で責められることに引き込まれている。
  • 姉はビジネスライクな考え方で肉体関係を割り切って有利になろうとしているが、女性全体に当てはまる考え方なのかは疑問が残る。
回答を見る