質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

解決済

C言語の数列の問題を配列を使って解きたいです

ON_theashtray
MaridaCruz

総合スコア11

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

6回答

-1評価

0クリップ

443閲覧

投稿2022/04/15 04:56

編集2022/04/19 13:51

C言語初学者です。
C言語の数列の問題で配列を使って解こうとするといつもエラーが出てしまい、自分で調べても何が間違えているのかわからなかったので質問させていただきました。
以下は与えられた問題です。

2つの数a0 = 0 a1 = 1が与えられたとき、an+2 = an +an+1 (n ≥ 0)で定義され る数列をフィボナッチ数列という。非負整数 n を入力すると 0 番目から n 番目ま でのフィボナッチ数列を表示するプログラムを作成せよ。

配列を利用して解くという問題指定もついていました。
最初に配列を指定するときの要素数をどうすればいいのかを特に教えてほしいです。
自分の能力不足は重々承知しているつもりですので優しく教えてほしいです。よろしくお願いします。
以下、エラーのコードです。

int main(){ int n,i,Fn; int a[]; printf("Enter the number:"); scanf("%d",&n); printf("0\n"); printf("1\n"); if (n>=2) { for (i=2; i<=n; i++) { a[i]=a[i-1]+a[i-2]; Fn=a[i]; printf("%d\n",Fn); } } return 0; }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Zuishin

2022/04/15 04:59

> 最初に配列を指定するときの要素数をどうすればいいのかを特に教えてほしいです。 配列は不要です。 どのように配列を使えという指示があるなら、それによって数が変わってくるでしょう。
maisumakun

2022/04/15 05:01

エラーが出た状態のコードと、実際に発生したエラーをご提示いただけませんでしょうか?
ON_theashtray

2022/04/15 05:25

どのように配列を使えという指示はありませんでした。 ただ、「配列を使用する」と記述してありました。
hoshi-takanori

2022/04/15 05:28

n の入力後に int a[n]; とか…。
Zuishin

2022/04/15 05:31

2 要素でデータをスライドしながら使うのも手ですが、3 要素のリングバッファを使いたいところです。 n 個の要素を確保するのであれば、int の最大値から、値がオーバーフローしない最大の n を求めるのが良いと思います。 そこまでしなくても、適当に大きい数を指定すれば、使いきれず終わると思います。
fana

2022/04/15 06:16

> 調べても何が間違えているのかわからなかった 「調べる」とは? 何が間違いなのかはエラーメッセージとして出ているのでは.
jimbe

2022/04/15 06:45 編集

>最初に配列を指定するときの要素数をどうすれば hoshi-takanori さんのコメントで十分な気がします。(出来る処理系か分かりませんが。)
Zuishin

2022/04/15 09:06 編集

可変長配列は C11 でオプションに格下げになったので(つまり方言扱いなので)、学習時に使用していいかは微妙かと。中学英語のテストで you のことを u と書くと不正解になるような。
hoshi-takanori

2022/04/15 22:46

C11 で可変長配列が削除されたのは知りませんでした。となると、選択肢は ・n の最大値を決めておく ・malloc などで動的に確保する ・処理系依存を承知で可変長配列 ・長さ 3 の配列を使い回す ってことになるでしょうか。 どれがいいかは出題者の意図を確認する必要があるかと…。
BeatStar

2022/04/16 08:10 編集

一つ目。「いつもエラーが出てしまい」とありますがどのようなエラーでしょうか? エラーの種類によって対処が全く変わってきます。 http://blog.livedoor.jp/crackstars/archives/17846001.html 二つ目。「自分で調べても」とありますが、どのように調べ、どのように試したのでしょうか? プログラマやSEは単に決まったコードを打つだけ…ではありません。不具合の原因を調査し修正することも含みます。デバッガで潜るとか、OS周りの調査とか。 質問者さんとしては何かしらの調査をしたのかもしれませんが、他のユーザは所詮赤の他人なのでどんな風に何をしたのかさえ言われないとわかりません。 三つ目。授業ではどこまで習ったか書きましょう。書かない場合は「実装できればいい」と考えられてしまいます。他の方も仰っているように教師が考えた答え以外は認めない場合もありますよ。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。