• 締切済み

C++で表を作成したいのです 初心者です

こんばんは。C++初心者です。 下に載せた表を表示したいです。 以下は、無知ながらに作成したプログラムです。 #include<stdio.h> main(void) { int i,j; int A[][]={{1,2,3,4,5,6,7}, {1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3}, {1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,2,2,3,2,2,3,1,1,1,1,1,2}, {2,2,3,2,2,3,2,2,3,3,3,3,3,3,3,2,2,2,2,3,3}, {2,2,3,2,2,3,2,3,3,3,4,4,3,4,4,3,3,4,2,3,4}, {3,3,4,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,2,3,4}, {1,1,1,1,1,1,1,1,2,3,3,3,4,4,4,4,4,4,2,3,4}, {2,2,3,1,1,1,1,1,2,4,4,4,4,4,4,3,3,3,1,1,1}, {2,2,3,1,1,1,2,3,3,4,4,4,4,4,4,4,4,4,1,1,1}, {2,3,3,2,2,3,2,2,3,4,4,4,4,4,4,4,4,4,2,3,4}, {3,3,4,2,3,4,3,3,4,4,4,4,4,4,4,4,4,4,2,3,4}, {4,4,4,2,3,4,3,3,4,4,4,4,4,4,4,4,4,4,2,3,4}}; i=3*(A-1)+(B-1); j=3*(C-1)+(D-1); XX=A[i][j]; ・・・と、中途半端かつ意味不明なプログラムに仕上がりました。 是非ヒントでも何でもいいので教えて下さい。 宜しくお願いします。

みんなの回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

×:C++で表を作成したいのです・・(質問件名) ×:下に載せた表を表示したいです。・・(質問本文) ○:4桁の数値を入力して、表中の1つの数字を出力させる・・(補足文) として、アドバイス。 なお、D が3桁あるのは、添付図のように D がなっているとして・・。 まず、4「つ」の数値を入力するために、  1.main(void) を void main( int argc, char *argv[] ) とする。  2.コマンドラインで付加された、空白区切りの文字「数」のチェック処理。  4.文字の数値化・チェック処理。    例)A = argv[ 1 ][ 0 ] - 0x30;      B = argv[ 2 ][ 0 ] - 0x30;      http://e-words.jp/p/r-ascii.html    A・・・・・1,2,3,4 のいずれかであることのチェック★。    B・・・・・1,2,3      〃    C・・・・・1,2,3,4,5,6,7  〃    D・・・・・1,2,3      〃 あとは、No.3 さんのとおり。 ++++++++++++++++++++++++++++++++++++ 実行は hoge 2 1 1 1 と空白区切りの1桁ずつ。 ☆「4桁の数値を入力」は、「時間がありません」とのことで、簡単な「1桁ずつ」としました。 なお、「数値を入力」は、沢山の方法があります。 時間ができましたら、4桁の数値 1234 から 3 を取り出す方法など挑戦してみて下さい。 ★重要なのは、数値が適正な範囲にあるか「チェックする」、ということです。 なお、処理系によっては、argv[ 1 ] に、上の例では 2 が入らないかもしれません。 ↓を実行しご確認下さい。 #include <stdio.h> void main( int argc, char *argv[] ) { printf( "%d\n", argc ); printf( "%s\n", argv[ 0 ] ); printf( "%s\n", argv[ 1 ] ); // 文字列 printf( "%d\n", ( argv[ 1 ][ 0 ] - 0x30 ) ); // 数値 } ++++++++++++++++++++++++++++++++++ 「表から法則性を見つけ出し、プログラムで表を作成したい」ではないのかなぁ。

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.3

やっと意味がわかりました。 それは、「表を表示したい」とは普通いいませんね。(^^; 4次元配列を用意すると楽です。 static int XX[4][3][7][3]={ { {{1,1,1},{1,1,1}..... : : } { : : }; int A,B,C,D; : int ans=XX[A-1][B-1][C-1][D-1]; という感じで。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.2

> 中途半端かつ意味不明なプログラムに仕上がりました。 全然仕上がっていません。入り口です。 画面に表を表示するには、そこで詰まっているようでは ハードルが高過ぎるでしょう。 基本を一つずつ学んでいく必要があります。 入門書を買うことをお勧めします。 それから動かすプログラムのOSやコンパイラが何なのかに よって話が全然変わってきます。

rr2315
質問者

補足

申し訳ありません、質問の意図を間違っていたようです。 4桁の数値を入力して、表中の1つの数字を出力させるプログラムを作成したいです。 以下表の見方となっています。 4桁の数値というのは、ABCDの順に対応しています。 例えば、 2111であれば2になります。 2112であれば2になります。 2113であれば3になります。 ちなみにMicrosoft visual c++6.0を使用しています。 一から勉強したいのですが、時間がありません。 あつかましい質問になってしまいますが、 できる範囲での意見をいただきたいです。 宜しくお願いします。

noname#245936
noname#245936
回答No.1

IT屋の者です。 んー。 データ自身は多次元配列をべた書きしてらっしゃいますので、 そこらをこねればできると思うのですが。 「表」というGUI(画面)表示なり、帳票を印刷したいという 意味でしょうか? であれば。 我々が文書…Wordや一太郎、表…ExcelやLotus(古!)といった 専門ソフトを使うように、ここ最近はプログラム言語でも、 「表」という道具を使います。 例えば、Excelという表が作れるソフト上でVBという言語で マクロを作るであるとか。 Visual Studio というソフト上でC++でGridを用いてデータを 画面表示するであるとか。 Visual Studio というソフト上でC#でCrystal Reportを用いて データをA4印字するであるとか。 はたまた、根性でLineをひきまくって標準出力で表示するとか いろいろな方法があります。 したい事のニュアンスをもう少々詳しく問うた方がいいと思います。 普通、商売でプログラムを行う場合は、「作りたいこと」が先に あって、それができる「ツール」を選んで、言語は最後に来ます。 NativeのC++の場合は、ポインタを直接扱えるので高速処理ができ、 容量を小さく抑えられます反面、細かい操作ができるあまりコードを 大量に書く傾向があり、ポインタ操作ミスなどバグが入りやすいので 普通は、通信プロトコルや、機械組込系(ケータイ・カメラ)などの 裏っかわの細かいロジック部分を担当させて、画面などは別の言語 ソフトで作ったりします。

rr2315
質問者

補足

申し訳ありません、質問の意図を間違っていたようです。 4桁の数値を入力して、表中の1つの数字を出力させるプログラムを作成したいです。 以下表の見方となっています。 4桁の数値というのは、ABCDの順に対応しています。 例えば、 2111であれば2になります。 2112であれば2になります。 2113であれば3になります。 ちなみにMicrosoft visual c++6.0を使用しています。 一から勉強したいのですが、時間がありません。 あつかましい質問になってしまいますが、 できる範囲での意見をいただきたいです。 申し訳ございません宜しくお願いします。

関連するQ&A