
C言語についてです。
void lcg(int *x)
{
if (n == 0) {
return ini;
} else{
return ((53 * x(n-1,ini)+29) %65536);
}
}
int main(void){
int nmax=100;
int x=191234;
for (n=1;n<nmax;n++){
lcg(&x);
}
printf("%d\n",x);
return 0;
}
これだとエラーがでてしまいます。
どこが間違ってますか?
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
> もうちょっと自分で考えてみます。
うん、考えてみて下さい。
基本的に、「問題の意図を読む」ってのが極めて重要なんですが。
多分これまでのやり取りを鑑みると、「漸化式を解け」が主題じゃなくって、「ポインタで数値をやり取りしろ」ってのが主題なのかなぁ。
まあ、ハッキリ言って、プログラムとして考えると無駄なんですが、宿題だとすればなるほど、とは思います。
貴方が書いたコードを考慮すれば、ひょっとしたら、こういうプログラムを書いて欲しい、って意味なのかもしれません。
#include <stdio.h>
void lcg(int *x, int nmax) {
int n = 0;
for (n = 0; n < nmax; n++) {
*x = (53* *x +29) % 65536;
}
}
int main(void) {
int nmax = 100;
int x = 191234;
lcg(&x, nmax);
printf("%d\n", x);
return 0;
}
No.6
- 回答日時:
あ、ごめん。
> return ((53 * lcg(n-1, ini) + 29) % 65536);
return ((53 * lcg(x-1, ini) + 29) % 65536);
だな。
No.5
- 回答日時:
> void lcgまでは指定されているからそこは変えられないのです。
ごめんなさい。それはイカんなぁ。
っつーか、問題の「前半部分」が何かあるんじゃないですか?
ちょっと説明しておきますが、voidを返り値にした関数は、コンピュータ・サイエンス用語で正確には「手続き」(procedure=プロシージャ)と呼びます。
この問題の場合、フツーに関数書いた方が自然で、プロシージャにする意味が通常は無いんですよね。
ってことは、問題に何か意図があるとしたら、そっちを知らないことには何とも言えないんですよ。
No.4
- 回答日時:
あ、あと、
> void lcg(int *x)
> {
> if (n == 0) {
> return ini;
>} else{
>return ((53 * x(n-1,ini)+29) %65536);
>}
>}
改造しよう、ってのは買えるんですが、キチンと変数名を確認しましょう。
表面的にだけ改造しても駄目ですよ。
int lcg(int x, int ini) {
if (x == 0) {
return ini;
} else {
return ((53 * lcg(n-1, ini) + 29) % 65536);
}
}
でしょう。
変数名の変更等も忘れないように。
No.2
- 回答日時:
> void lcg(int *x)
int lcg(int x, int ini)、ですね。
> int nmax=100;
> int x=191234;
> for (n=1;n<nmax;n++){
>lcg(&x);
>}
>printf("%d\n",x);
初期値が仮に、191234で、そこから100増えた数まで、つまりx = 191334の時の値が知りたいのなら、
int nmax = 100;
int x = 191234
printf("%d\n", lcg(x + nmax, x));
です。
また、なんでlcgの引数をアドレスにしたいんだか意味が分かりません。
そんな事する必要がないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
acceptをalarmでタイムアウトさ...
-
C言語での引数の省略方法
-
構造体の勉強中です 合計点の高...
-
C言語の関数で戻り値を返す必要...
-
C言語 エラーの原因がわからな...
-
return 1L
-
プログラムがうまく動作しない
-
C#のコンパイルエラーCS0120に...
-
【C++】関数ポインタの使い方
-
インライン展開されているか確...
-
ColorをRGBで指定する方法
-
「指定されたキャストは有効で...
-
C言語 プログラミング
-
Windowsでインターバル・タイマ...
-
DirectX ~テクスチャに値を書...
-
式は定数値が必要です」という...
-
read関数をノンブロッキングで...
-
以下のプログラムをnumber.txt...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
ラップ関数とはどんなものですか?
-
【C++】関数ポインタの使い方
-
if と配列の組み合わせ
-
(int *)の意味
-
ColorをRGBで指定する方法
-
未解決の外部シンボル _printf...
-
構造体の勉強中です 合計点の高...
-
商と剰余を同時に求める(C言語)
-
C言語で分からないところがあり...
-
式は定数値が必要です」という...
-
C言語での奇数の和
-
std::set<int> で、ある値が何...
-
課題でつまってます・・・
-
int16_t の _t は何?
-
比較回数と交換回数表示について
おすすめ情報