08/11/27 22:14:17
int a[5][5]={
8,4,3,6,6,
1,6,5,8,4,
5,4,9,1,2,
6,9,6,1,8,
7,4,1,3,5,
};
40:デフォルトの名無しさん
08/11/27 22:14:55
int a[5][5]={
{8,4,3,6,6},
{1,6,5,8,4},
{5,4,9,1,2},
{6,9,6,1,8},
{7,4,1,3,5}};
41:デフォルトの名無しさん
08/11/27 22:36:20
>>40
上手くいきました
回答、ありがとうございました。
42:デフォルトの名無しさん
08/11/27 22:46:55
3行3列の行列を1オリジンにしてそいつを表示させたいんだけど、まったくうまくいかない
誰か教えてください
43:デフォルトの名無しさん
08/11/27 22:49:32
1オリジンてなんですか?
44:デフォルトの名無しさん
08/11/27 22:52:51
>43
ぐぐれ
まあ>42の言ってることは意味わからんが
45:デフォルトの名無しさん
08/11/27 22:53:30
>>42
うまくいかないソースくらい貼れ
46:デフォルトの名無しさん
08/11/27 22:53:49
a[3]って配列を宣言した時普通ならa[0], a[1], a[2]ってなるのが0オリジン
数学とかで使う普通の配列が1オリジンでa[1], a[2], a[3]ってなるやつです
47:デフォルトの名無しさん
08/11/27 22:53:57
1 2 3
1 9 3 1
2 6 4 8
3 1 5 5
こんな感じだとエスパーしてみた。
48:デフォルトの名無しさん
08/11/27 22:55:18
>>45
#include <stdio.h>
int main(void)
{
float a[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0},{7.0,8.0,9.0}};
int i, j;
float *mp;
mp = &a[0]-1;
for(i=1; i<=3; i++){
for(j=1; j<=3; j++){
printf("mp[%d][%d]=%d ", i, j, mp[i][j]);
}
printf("\n");
}
return 0;
}
あと行を1オリジンにするだけだと思うのだけど……まったくわからない
49:デフォルトの名無しさん
08/11/27 22:57:52
>>48
#define ORIGIN1(matrix, row, col) matrix[row-1][col-1]
50:デフォルトの名無しさん
08/11/27 22:58:30
floatを%dで吐くな
51:デフォルトの名無しさん
08/11/27 22:59:46
mpの型が違う。それと、得る物が少ないからお勧めしない。
Cだとサイズを変えられないし、C++ならなんでもありだからね。
52:デフォルトの名無しさん
08/11/27 23:00:03
>>46
根本的に勘違いしているようだが、Cは0オリジンであって、1オリジンの添字を使うことはできない。
単に表示を1オリジンにしたいだけなら添字に1加えること。
53:デフォルトの名無しさん
08/11/27 23:02:17
>>48
言語には言語の流儀ってものがあるからバカなこと考えずに0オリジンでやれ
54:デフォルトの名無しさん
08/11/27 23:05:33
1オリジンと言うと Numerical Recipes in C を思い出すな。
FORTRAN 用の本を C 用にしたものだから
1オリジンで強引にやってた気がする。
しかもいくつかバグが・・・。
まあ内部的に0オリジンで扱って、
表示する時は必要に応じて1オリジンで表示する、
ってのがC的だな。
55:デフォルトの名無しさん
08/11/27 23:08:05
恣意的
56:初心者
08/11/27 23:14:42
C++初心者です。
現在、独習C++で勉強しています。
中級者向けの本、お勧めの本などありましたら
教えていただければ幸いです。
57:デフォルトの名無しさん
08/11/27 23:16:53
>>56
スレ違いです。つーか、マルチすんな。
58:デフォルトの名無しさん
08/11/27 23:17:46
>>49
加減算より優先順位の低い演算子等が入ってくるとおかしくなるぞ。
((matrix)[(row)-1][(col)-1])
にしとけ。
59:デフォルトの名無しさん
08/11/28 00:38:01
C言語を利用してモデリングの勉強したいのでつが
何かいい本ないですかね?8月に出たロボコンの本とかどうなのかな?