プロが教える店舗&オフィスのセキュリティ対策術

こんばんは。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];

・・・と、中途半端かつ意味不明なプログラムに仕上がりました。
是非ヒントでも何でもいいので教えて下さい。
宜しくお願いします。

「C++で表を作成したいのです 初心者です」の質問画像

A 回答 (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 ) ); // 数値
}
++++++++++++++++++++++++++++++++++
「表から法則性を見つけ出し、プログラムで表を作成したい」ではないのかなぁ。
「C++で表を作成したいのです 初心者です」の回答画像4
    • good
    • 0

やっと意味がわかりました。


それは、「表を表示したい」とは普通いいませんね。(^^;
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];
という感じで。
    • good
    • 0

> 中途半端かつ意味不明なプログラムに仕上がりました。



全然仕上がっていません。入り口です。

画面に表を表示するには、そこで詰まっているようでは
ハードルが高過ぎるでしょう。
基本を一つずつ学んでいく必要があります。
入門書を買うことをお勧めします。

それから動かすプログラムのOSやコンパイラが何なのかに
よって話が全然変わってきます。

この回答への補足

申し訳ありません、質問の意図を間違っていたようです。
4桁の数値を入力して、表中の1つの数字を出力させるプログラムを作成したいです。

以下表の見方となっています。
4桁の数値というのは、ABCDの順に対応しています。
例えば、
2111であれば2になります。
2112であれば2になります。
2113であれば3になります。

ちなみにMicrosoft visual c++6.0を使用しています。
一から勉強したいのですが、時間がありません。
あつかましい質問になってしまいますが、
できる範囲での意見をいただきたいです。
宜しくお願いします。

補足日時:2008/12/17 01:37
    • good
    • 0

IT屋の者です。



んー。
データ自身は多次元配列をべた書きしてらっしゃいますので、
そこらをこねればできると思うのですが。

「表」というGUI(画面)表示なり、帳票を印刷したいという
意味でしょうか?
であれば。
我々が文書…Wordや一太郎、表…ExcelやLotus(古!)といった
専門ソフトを使うように、ここ最近はプログラム言語でも、
「表」という道具を使います。

例えば、Excelという表が作れるソフト上でVBという言語で
マクロを作るであるとか。
Visual Studio というソフト上でC++でGridを用いてデータを
画面表示するであるとか。
Visual Studio というソフト上でC#でCrystal Reportを用いて
データをA4印字するであるとか。
はたまた、根性でLineをひきまくって標準出力で表示するとか
いろいろな方法があります。

したい事のニュアンスをもう少々詳しく問うた方がいいと思います。

普通、商売でプログラムを行う場合は、「作りたいこと」が先に
あって、それができる「ツール」を選んで、言語は最後に来ます。
NativeのC++の場合は、ポインタを直接扱えるので高速処理ができ、
容量を小さく抑えられます反面、細かい操作ができるあまりコードを
大量に書く傾向があり、ポインタ操作ミスなどバグが入りやすいので
普通は、通信プロトコルや、機械組込系(ケータイ・カメラ)などの
裏っかわの細かいロジック部分を担当させて、画面などは別の言語
ソフトで作ったりします。

この回答への補足

申し訳ありません、質問の意図を間違っていたようです。
4桁の数値を入力して、表中の1つの数字を出力させるプログラムを作成したいです。
以下表の見方となっています。

4桁の数値というのは、ABCDの順に対応しています。
例えば、
2111であれば2になります。
2112であれば2になります。
2113であれば3になります。

ちなみにMicrosoft visual c++6.0を使用しています。
一から勉強したいのですが、時間がありません。
あつかましい質問になってしまいますが、
できる範囲での意見をいただきたいです。
申し訳ございません宜しくお願いします。

補足日時:2008/12/17 01:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!