わかるかたいたらどのような数式を使うのか教えてください。** 次の数列でn番目の数を算出する関数sum7()を作成しなさい。 ただし、引数nが1~20以外の場合、または、引数n1,n2が1~9以外の場合、算出結果は0とし、失敗:0を返す。 また、メイン関数は記述しないこと。 <数列> n1,n2,n3,n4・・・ 前の2つの値を加算すると次の値となる数列です。 3番目の数:n3 ・・・ 1番目の数:n1と2番目の数:n2を加算した結果 5番目の数:n5 ・・・ 3番目の数:n3と4番目の数:n4を加算した結果 <関数仕様> 定義:int sum7 (int n1, int n2, int n,unsigned int *result); 第一引数:n1の数 第二引数:n2の数 第三引数:整数 第四引数:算出結果 戻り値:成功 0以外 失敗0 <ファイル名> Cソースコード:sum7.c ヘッダファイル:sum7.h <実行例> n1 = 2, n2 = 3, n = 5 の場合、算出結果は13 n1 = 1, n2 = 9, n = 10 の場合、算出結果は327 途中まで作成したコードです "main.c" #include "sum7.h" int main(void) { int count1; //n1 int count2; //n2 int num=5; //整数 unsigned int sum=0; //算出結果 for (count1 = 1, count2 = 1; count1<10,count2 < 10; count1++, count2++) { sum=sum7(count1, count2, num, &sum); } printf("%d\n", sum); return 0; } "sum7.c" #include "sum7.h" int sum7(int n1, int n2, int n, unsigned int* result) { if (20 < n || 9 < n1 || 9 < n2) { printf("error\n"); return 0; } else { return *result = (n1 - 1) + (n2 - 2); } } "sum7.h" #pragma once #ifndef SUM7 #include <stdio.h> int sum7(int n1, int n2, int n, unsigned int* result); #endif // !SUM7 実行結果が15です。
ソースコードを記述する際はマークダウン記法を使ってください。
使用する数列自体はフィボナッチ数列で合っています。
フィボナッチ数列は n>=3 のときに、 p[n] = p[n-2] + p[n-1] となる数列ですから、3 以上の位置にある値を知るには、その前の値を「すべて」知る必要があります
質問のタイトルが「どの数式を使うんですか」となっていますが、どんな回答を期待しているのでしょうか?
どんなところが判らないのかを具体的に書かないと、回答を得られないと思います。
ちなみに、n1=1,n2=1ならばフィボナッチ数列になりますが、n1とn2は任意の数を与えることができるのでフィボナッチ数列にはなりません。
問題に「また、メイン関数は記述しないこと」と書かれているのに、プログラムに”int main(void)”とあるのは、減点の対象になるかもしれません。問題をよく読んで、素直に回答しましょう。
回答5件
あなたの回答
tips
プレビュー