C言語 静的変数 [漸化式問題]

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
田中
記事: 10
登録日時: 1年前

C言語 静的変数 [漸化式問題]

#1

投稿記事 by 田中 » 1年前

こんにちは。初めて質問させていただきます。
C言語は初心者で、関数のところらへんからよくわからないです(自分でも何ができているか正直分からないです)。

学校で課題が出て、自分で作ってみたのですがエラーが発生してしまいます。エラーが言っていることもよくわからないです。

問題の内容です。「次の漸化式の第2項から第10項までを表示するプログラム。ただし、第n項の値を戻り値として、引数なしの関数seqを定義して利用すること。」
f(n)=3f(n-1)+1,f(1)=1
表示結果
4 13 40 121 364 1093 3280 9841 29524

自分が書いたプログラムです。(エラーたくさんあり)

コード:

#include<stdio.h>
void seq(void) {
	int n=1;
	n = 3n + 1;

	return n;
}

int main(void) {
	int a, b;
	for (a = 1, b = 1; 2 <= b && b <= 10; b++){
		printf("%d",seq(a));
}
return 0;
}


アバター
usao
記事: 1887
登録日時: 11年前

Re: C言語 静的変数 [漸化式問題]

#2

投稿記事 by usao » 1年前

エラーというのがコンパイル時の物なのであれば,それは文法面で異常なコードを書いているということ.
例えば,seq(a) とか書いてるけど,引数無しの関数にaを渡すのは異常.
きっとエラーメッセージも「何が悪いのか」を言ってきているはずだから,そこはちゃんと読むべし.

で,それはそれとして…

> 「次の漸化式の第2項から第10項までを表示するプログラム。ただし、第n項の値を戻り値として、引数なしの関数seqを定義して利用すること。」

具体的に何をどうすれば題意を満たすことになるのか? という点をあなたは把握しているのでしょうか?
とりあえず,私にはこの文章はちょっと何言ってるかわからないので,もしもあなたもそういう状況にあるのであれば,まずはまともな日本語で要件を伝えてくれるように出題元に要請したほうが良いのではないでしょうか?

例えば,
「第n項の値を戻り値として」 ← これは誰についての話? 前の文の「表示するプログラム」? それとも次に出てくる「関数seq」?
仮に後者だとしたら,seqはどうやってnの値を知れば良いの?

田中
記事: 10
登録日時: 1年前

Re: C言語 静的変数 [漸化式問題]

#3

投稿記事 by 田中 » 1年前

#2 usao さん
なるほど。エラーメッセージを読めるようにして出なおしてきます。
確かに問題分で言ってることが
わからない部分があるので出題元に聞いてみることにします。
わざわざありがとうございます。

参照魚
記事: 109
登録日時: 6年前

Re: C言語 静的変数 [漸化式問題]

#4

投稿記事 by 参照魚 » 1年前

題名に静的変数とあるので、この課題は静的変数の性質を用いて問題を解くということかと思います。静的変数はプログラムの開始から終了まで値を保持し続けることができます。漸化式は前回の項の値を参照して計算するので、項の値を静的変数(static 定義)にすればよいと思われます。エラーは頑張って読んで解消してください。

box
記事: 2002
登録日時: 13年前

Re: C言語 静的変数 [漸化式問題]

#5

投稿記事 by box » 1年前

こういうことでええんかな?

コード:

#include <stdio.h>

int seq(void)
{
    static int n = 1;

    return n = 3 * n + 1;
}

int main(void)
{
    int i;

    for (i = 2; i <= 10; i++) {
        printf("%d ", seq());
    }
    putchar('\n');
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

田中
記事: 10
登録日時: 1年前

Re: #4 参照魚さん

#6

投稿記事 by 田中 » 1年前

アドバイスありがとうございます。
#5のboxさんに正しいプログラムをもらったので、解答を見ながら間違いを照らし合わせていきます。
本当にありがとうございます。

田中
記事: 10
登録日時: 1年前

Re: #5 boxさん

#7

投稿記事 by 田中 » 1年前

ありがとうございます。
おかげで分かった気がします。
本当にありがとうございます。

返信

“C言語何でも質問掲示板” へ戻る