トップページ⇒tech
80コメント20KB

配列について教える

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
一から教えろ。
0002デフォルトの名無しさんNGNG
0からでも1からでも好きなインデックスから
始められるVB最強。
00031NGNG
>>2
だからどうやれば1からになるのかを聞いておる!
0004デフォルトの名無しさんNGNG
添字が1から始められないからといって困ったことは無いのだが
0005デフォルトの名無しさんNGNG
1個多めに確保して1から使ったら
0006デフォルトの名無しさんNGNG
単発質問でスレを立てないでください。

***すれ立てるまでもない質問はここで 第36刷***
http://pc2.2ch.net/test/read.cgi/tech/1051370263/
0007デフォルトの名無しさんNGNG
簡単だぞ。

@tmp = (1, 2, 3, 4, 5);

この場合、1が0で2が1な訳だ。
で、3が2になる。
分かるな?

これで分からないなら、配列使うのやめておくべきだ。
配列使うにはセンスが必要かもしれない。
0008デフォルトの名無しさんNGNG
perlなのが渋い
0009デフォルトの名無しさんNGNG
配列より先ずリストを学べ。
0010デフォルトの名無しさんNGNG
「数える」じゃなくて「教える」なのが何とも。

配列とベクトルとリストとアレイとシーケンスと系列と、あとなんかは、
文章の中では同じ物をさすことに決まっています。
ってクヌース先生も言っていたとか言わないとか。
0011デフォルトの名無しさんNGNG
>>10
そうなんですか!
配列→いわゆる配列
ベクトル→連立方程式
リスト→線形リスト
シーケンス→処理とかの手順
アレイ→ダンベル見たいの
だと思ってマスタ。
0012デフォルトの名無しさんNGNG
>>11
>>10 のやつは「並び」のあるものだーね。
0013デフォルトの名無しさんNGNG
>>12
>11は、「アレイ→ダンベル見たいの」って書きたかっただけかと。
0014デフォルトの名無しさんNGNG
var dumbbell = new Array();
0015山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0016デフォルトの名無しさんNGNG
>>1
ついでに行列も使いこなせるようになれ
0017_NGNG
C, Java, perl 系言語を経験してきたものにとって

Dim array(0) As Variant
array(0) = "hogehoge"

は、違和感ありすぎ・・
0018デフォルトの名無しさんNGNG
大名[]
0019デフォルトの名無しさんNGNG
>>2
そんなことくらいPerlでもできるわアホ!
0020デフォルトの名無しさんNGNG
>>17
それは、「宣言文に最大の添字を与える」ってのに
違和感を感じてる、ってことなの?
たいして変じゃないと思うけど。
0021デフォルトの名無しさんNGNG
>>17
asが糞じゃよ。

それから、配列と関数との区別がつかない言語は糞
0022_NGNG
>>20
その通り。まあ違和感感じない人もいるんだね・・
0023デフォルトの名無しさんNGNG
4つ確保するのに(3)ってのは違和感を感じる。
0024デフォルトの名無しさんNGNG
>>21
配列は添字を引数とする関数ともみなせるので
区別があるほうがオカシイ、といってみる
0025デフォルトの名無しさんNGNG
>>11

アレイとはダンベルの直訳なので「みたいの」ではなく「そのもの」

ダンベル=dumbbell
dumb=唖
bell=鈴
0026_NGNG
>>24
.NETならともかく、VB6レベルでは
そういう設計ポリシーでこの仕様になったとは
感じられないところにダメダメさを感じる
0027デフォルトの名無しさんNGNG
>>24
> >>21
> 配列は添字を引数とする関数ともみなせるので
> 区別があるほうがオカシイ、といってみる
じゃ、C/C++/Java/C#/D言語は一体なんだったんだのであるのだ? と。
スパゲティ化しやすくソースが読みにくいだろ。

関数と配列を一緒と見なすとはどういうこっちゃ。
関数の実装で、引数宣言に関数が入るのか?
関数の戻り値が関数だというんか?
まったく、キモイったらありゃしない。
ソースコードを汚しかねないな。
0028デフォルトの名無しさんNGNG
まぁ喪前ら餅つけ。
vector使ってみんなで幸せになろうぜ。
0029名無し@沢村NGNG
ほまいらよ、C言語を学ぶ初心者のほまいらよ。
配列とポインタの違いはわかるかな?
わかりやすく説明するとだな。

int (*a)[10]はポインタと違う物だが使い方によって同じ作用をする配列へのポインタだよ。
int *a[10]はintへのポインタ型、ポインタと違う物だが使い方によって同じ作用をする配列だよ。
int *(*a)[10]はintへのポインタ型、ポインタと違う物だが使い方によって同じ作用をする配列へのポインタ型配列だよ。
int (**a)[10]はポインタと違う物だが使い方によって同じ作用をする配列へのポインタへのポインタだよ。
わははははははははははははははははーーーーーーーー死ね、死ねーーーーーーっ!!!


0030デフォルトの名無しさんNGNG
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

void main(void)
{
char moji; /* 文字列の一時的な格納領域 */
int len;
int number; /* 変換後の数値       */
while(1)
{
printf("数値を6桁以内に入力して=>");
rewind(stdin);
scanf("%s",moji);
len=strlen(moji);
if (len>=7)
{
printf("7桁以上です。\n");
}
0031デフォルトの名無しさんNGNG
number=atoi(moji);
if(number>0)
{
printf("プラスです。\n");
}
else if(number==0)
{
printf("ゼロです。\n");
}
else
{
printf("マイナスです。\n");
}
}
}
エラーが
error C2664: 'strlen' : 1 番目の引数を 'char' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
error C2664: 'atoi' : 1 番目の引数を 'char' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
cl.exe の実行エラー
と出るんですけどいまいち文字列が分かりません
0032デフォルトの名無しさんNGNG
変数とはシンボルを引数とする関数
0033デフォルトの名無しさんNGNG
>>27
VBを弁護する気はさらさら無いが、Adaで、配列と関数の構文が同じなので
定数テーブル←→関数を入れ換えても使う側のソースまで変えなくてよい、という文は見た事がある

VBというかBASICの場合は、単にテレタイプなんかの時代の名残で
[ ] や { } が言語の使う文字セットに入って無いだけな気もするけどな…
0034デフォルトの名無しさんNGNG
>>29
そういうポインタの使い方をまさに腐ったスパゲティという。お前が氏ね。

Cの配列はJavaのArrayIndexOutOfBoundsExceptionやNegativeArrayExceptionなどの
例外によって、バッファオーバーフローや配列インデックスに負数が入った場合に
未然に防いでくれる機能がないからDQN。

まったくキモイったらありゃしない。
0035デフォルトの名無しさんNGNG
>>34
>配列インデックスに負数が入った場合
君はポインタを理解していないし、使いこなせていないことが判りました。
0036直リンNGNG
http://homepage.mac.com/yuuka20/
0037デフォルトの名無しさんNGNG
>>23
VBでは
Dim var(0 to 3) As String

みたいにすると違和感がなくなる
0038デフォルトの名無しさんNGNG
>>1
〜前略〜

〜中略〜

〜以下略〜
0039デフォルトの名無しさんNGNG
>>38
糞スレあげるな
0040デフォルトの名無しさんNGNG
>>35
struct s {
char buf[1];
};
なのがあるとき
struct s* ptr = (struct s*)malloc( 1000 );
とかって書くのが常識的 or 賢いとか思っている人?
0041デフォルトの名無しさんNGNG
>struct s {
>char buf[1];
>};

が、あるという前提ならまぁそうするんだろうな。
0042デフォルトの名無しさんNGNG
良スレのヨカーン
0043デフォルトの名無しさんNGNG
クソスレの現状。
0044デフォルトの名無しさんNGNG
BASICで配列のアクセスを array(10, 2) みたいに書くのは、
数学でそういう風に書いていたのを真似たのだと思っていますた。
0045デフォルトの名無しさんNGNG
MFCのCArrayやCStringArrayって大きさが可変なので大変便利なのですが
デバッガで中身を覗きたいとき各要素をどうやって表示させるのか
わかりましぇん
どうすればよいのか教えてくらはい
0046デフォルトの名無しさんNGNG
TextOut
0047デフォルトの名無しさんNGNG
TRACEマクロ使えよ
0048デフォルトの名無しさんNGNG
>>34
君はトレードオフを理解していないことが判りました。
0049デフォルトの名無しさんNGNG
String[][][][] Name_and_Age_and_Sex_and_Marriage;
こんな宣言が最初に書かれていたプログラムに出会った
本人曰く、パフォーマンス優先するためだとよ
すなおにコレクションでも使ってくれよ
そんなに変わらんだろ?
「わたしたち結婚しま〜す」だぁ?
うるせ〜よぼけ
0050デフォルトの名無しさんNGNG
>String[][][][]

俺は少なくともこんな型は知らん。
0051デフォルトの名無しさんNGNG
javaなら普通にある型ですが何か
0052デフォルトの名無しさんNGNG
>>49
配列だとかコレクションだとか、そういう種類の問題では無いな。
0053デフォルトの名無しさんNGNG
大名[]
0054デフォルトの名無しさんNGNG
>>51
ハフォ?
0055山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0056山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0057山崎 渉NGNG
(^^)
0058山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0059デフォルトの名無しさんNGNG
>>1
もう引退したんじゃないの?

あ、パイレーツじゃなくて配列か〜(嘲笑笑いの神降臨激藁
0060デフォルトの名無しさんNGNG
>>2
それはどういうことよ?
マイナスからもはじめられるんだろ。
だったらC言語とかわらんだろ
0061デフォルトの名無しさんNGNG
>>49
それだったらクラス作って
class 適当なクラス名 {
 private String Name;
 private int age;
 private Sex sex;
 private boolean marriage;

 public 適当なクラス名(String Name, int age ....//以下略}
0062デフォルトの名無しさんNGNG
>>61

Object[][][][] なんてことやる気持ちも分からなくも無い。
そんなクソなクラスを作りたくないからだろう。(クラスローディングのコストも溜まるとバカにならん)

内部的になら漏れはこうする。

static class Person {
public String name;
public int age, marriageCount;
public boolean sex;
}

外部的にやるなら HashMap でいいんじゃネーノ
0063デフォルトの名無しさんNGNG
>>62
クラスにstaticだあ?
何言語つかってるんじゃお前は

しかもフィールドが全てpublic.
使えねえなあ。不変じゃねえなあ。
スレッドでは扱いにけえなあ。
0064デフォルトの名無しさんNGNG
>>62は内部クラスのつもりで書いたんじゃかな駆ろうな
0065デフォルトの名無しさんNGNG
2次元・3次元までは何とか考えられるんだが
4次元の配列を考えると頭が痛い
なんとなく2次元配列を二つ作ってクロスさせれば
良いような感じなんだが・・・
0066デフォルトの名無しさんNGNG
むしろそれが必要な状況を知りたい
0067デフォルトの名無しさんNGNG
>>66
必要というよりは考え方が知りたいんです。
無駄なこととか処理が複雑になるとか処理の効率が
著しく悪くなるというのは分かるけど、どういった考え方で
出来るのか知りたい
0068デフォルトの名無しさんNGNG
2次元配列を2次元配列で持てば4次元になるって事かな?

z=( x(a , b) , y(c , d) )

これで4次元か??
0069デフォルトの名無しさんNGNG
1じげん
2じげん
3じげん
4じげん










給食じげん

(byトシちゃん)
0070デフォルトの名無しさんNGNG
H あげ
0071デフォルトの名無しさんNGNG
>>65
?
四次元の立方体を頭で想像しようとしてる?
そりゃ頭が痛いな…
0072>>65NGNG
4次元って、単純に3次元のものがn個並んでいるだけだと思われ
0073デフォルトの名無しさんNGNG
56次元
0074デフォルトの名無しさんNGNG
>>65
学年、クラス、出席番号、これでもう3次元だ。
学校名を示す通し番号でも加えればこれで4次元。
4次元配列というのは単に個々のデータを識別する
添字を4つ使うという事だけだ。
0075デフォルトの名無しさんNGNG
配列のメモリ上での実体は単なる一連のメモリブロックだ。
それをどう管理するかだけの問題。

例えば dim mydata(2,2,2,3) などと配列を切ると
(処理系にもよるが)下のようなイメージになる。


┌─────1────┐┌────2─── ←最初の添字
┌─1──┐┌─2──┐┌─1──┐┌─2 ←2番目の添字
┌1┐┌2┐┌1┐┌2┐┌1┐┌2┐┌1┐ ←3番目の添字
□□□□□□□□□□□□□□□□□□□□□ ←個々のデータ
123123123............ ←4番目の添字

添字から目的のデータに辿り着くためのアドレスを計算する式は
容易に考え付くと思う。
0076ねぇ、名乗ってNGNG
テスト
0077電脳プリオンNGNG
教えるのか教えてほしいのかどちらなのかはっきりしていただきたいですね。
0078デフォルトの名無しさんNGNG
0079デフォルトの名無しさんNGNG
教えられてやる
0080デフォルトの名無しさんNGNG
教えられる
■ このスレッドは過去ログ倉庫に格納されています