掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.28535

3次元配列
投稿者---array(2006/10/20 13:52:50)


char a[3][5][8];

の配列は図にすると



a[0][1][0〜7文字まで格納]
a[0][2][0〜7文字まで格納]
a[0][3][0〜7文字まで格納]
a[0][4][0〜7文字まで格納]
a[0][5][0〜7文字まで格納]


a[1][1][0〜7文字まで格納]
a[1][2][0〜7文字まで格納]
a[1][3][0〜7文字まで格納]
a[1][4][0〜7文字まで格納]
a[1][5][0〜7文字まで格納]


a[2][1][0〜7文字まで格納]
a[2][2][0〜7文字まで格納]
a[2][3][0〜7文字まで格納]
a[2][4][0〜7文字まで格納]
a[2][5][0〜7文字まで格納]


と言うように、3つのリストの配列があるんですか?



例えば、
a[2][2][0〜7文字まで格納]
の文字列を表示するには、

printf ( " %s " , a [ 2 ] [ 2 ]) ;でいいでしょうか?

教えてください。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:3次元配列 28536 Yuki 2006/10/20 15:37:30
<子記事> Re:3次元配列 28537 array 2006/10/20 16:12:40


No.28536

Re:3次元配列
投稿者---Yuki(2006/10/20 15:37:30)


>と言うように、3つのリストの配列があるんですか?
添え字は全て0から始まります。

>printf ( " %s " , a [ 2 ] [ 2 ]) ;でいいでしょうか?
データがそのように格納されていれば、そうなります。
試してみてください。

文字列を3次元配列で保持するのはあまり現実的ではないです。
どうしてもというケースもあるかとは思いますが、
デバッグや後々のメンテの事を考えるのであれば、
2次元配列までにしておいたほうが良いと思います。

勉強の為でしたら、4次元、5次元とどんどん試してみてください。
#脳みそが溶けるかもしれませんが。



この投稿にコメントする

削除パスワード

No.28537

Re:3次元配列
投稿者---array(2006/10/20 16:12:40)


どうも回答ありがとうございます。
>添え字は全て0から始まります。

そうでした。0〜4でした。


配列の考え方はあってるんでしょうか?
自信がないもので。

3次元配列の使用はあまり現実的でないとのこと。

わかりずらいので助かります。
プログラミングの実態みたいなのも勉強になります。
ありがとうございました。


この投稿にコメントする

削除パスワード

No.28538

Re:3次元配列
投稿者---shu(2006/10/20 16:48:50)


>配列の考え方はあってるんでしょうか?

間違ったままです。
Yukiさんの書いたように、
>>添え字は全て0から始まります。

>そうでした。0〜4でした。

で、納得しているようですが、直っていません。


この投稿にコメントする

削除パスワード

No.28539

Re:3次元配列
投稿者---array(2006/10/20 18:09:17)


char a[3][5][8];

の配列は図にすると



a[0][0][0〜7文字まで格納]
a[0][1][0〜7文字まで格納]
a[0][2][0〜7文字まで格納]
a[0][3][0〜7文字まで格納]
a[0][4][0〜7文字まで格納]


a[1][0][0〜7文字まで格納]
a[1][1][0〜7文字まで格納]
a[1][2][0〜7文字まで格納]
a[1][3][0〜7文字まで格納]
a[1][4][0〜7文字まで格納]


a[2][0][0〜7文字まで格納]
a[2][1][0〜7文字まで格納]
a[2][2][0〜7文字まで格納]
a[2][3][0〜7文字まで格納]
a[2][4][0〜7文字まで格納]

要素数を直してみましたが、これでいいのでしょか?

そもそもこの図(考え方自体がまちがいなのでしょうか?


この投稿にコメントする

削除パスワード

No.28540

Re:3次元配列
投稿者---かずま(2006/10/20 19:51:03)


> 要素数を直してみましたが、これでいいのでしょか?
>
> そもそもこの図(考え方自体がまちがいなのでしょうか?

次のプログラムの実行結果から、どのように判断しますか?
#include <stdio.h> 

int main(void) 
{ 
    char a[3][5][8];  int i, j;

    for (i = 0; i < 3; i++)
        for (j = 0; j < 5; j++)
            printf("%p: a[%d][%d]\n", a[i][j], i, j);
    return 0;
}



この投稿にコメントする

削除パスワード

No.28541

Re:3次元配列
投稿者---array(2006/10/20 20:52:40)


Cを最近始めたばかりで、理解出来ていないんですが、

独習cによると、以下独習cより

char animals [3][5][80];
この状況でいずれかの文字列にアクセスするには、左側の2つの次元を指定しなければなりません。」
と書いてあったので

char a[3][5][8];  int i, j;

    for (i = 0; i < 3; i++)
        for (j = 0; j < 5; j++)
            printf("%p: a[%d][%d]\n", a[i][j], i, j);





は3次元配列にアクセスしていると思います。

実行結果の、

a[0][0]・・・a[0][0][0〜7にある文字列を表示]
a[0][1]・・・a[0][1][0〜7にある文字列を表示]
a[0][2]・・・a[0][2][0〜7にある文字列を表示]



以下3次元配列すべての文字列を表示していると思います。
自信はまったくありませんが。


この投稿にコメントする

削除パスワード

No.28542

Re:3次元配列
投稿者---かずま(2006/10/21 02:07:40)


> 実行結果の、
>
> a[0][0]・・・a[0][0][0〜7にある文字列を表示]
> a[0][1]・・・a[0][1][0〜7にある文字列を表示]
> a[0][2]・・・a[0][2][0〜7にある文字列を表示]
> ・
> ・
> ・
> 以下3次元配列すべての文字列を表示していると思います。
> 自信はまったくありませんが。

実行結果をここに貼り付けてください。
本当にそれは 3次元配列すべての文字列だと思いますか?


この投稿にコメントする

削除パスワード

No.28543

Re:3次元配列
投稿者---array(2006/10/21 09:46:54)


0012FF1C:  a[0][1]
0012FF24: a[0][2]
0012FF2C: a[0][3]
0012FF34:  a[0][4]
0012FF3C: a[1][0]
0012FF44:  a[1][1]
0012FF4C:  a[1][2]
0012FF54: a[1][3]
0012FF5C: a[1][4] 
0012FF64: a[2][0]
0012FF6C: a[2][1]
0012FF74: a[2][2]
0012FF7C:  a[2][3]
0012FF84: a[2][4]

#include<stdio.h>
#include<string.h>
int main(void)
{
    int i,j;
    char a[][2][40]={
        {"dog","cat"},
        {"no","yes"},
        {"year","month"},
        {"north","south"},
        {"tape","cd"}
        };

    for(i=0;i<5;i++)
        for(j=0;j<2;j++)
            printf("%s\n",a[i][j]);
    return 0;
}


一応3次元配列をfor文で実行した所、
初期化の要素?というんでしょうか?

が表示できたのですが。

どうでしょうか?



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧