
No.7ベストアンサー
- 回答日時:
> fooという形は初めて見ました。
fooは「形」じゃなくって単なる「関数名」、名前です。自分で好きに付けてよろしい。
例えばprintfも「関数名」ですよね。
# 余談ですが、「真面目なプログラムを書く」んじゃなくって「書捨てでプログラムを書く」場合、英米ではfoo、bar、bazと言う「意味の無い名前」を付ける事が多い模様です。
日本ではhogeとかfugaとか言う「名前を」テキトーに付ける事が多いです。
つまり、int foo(.... じゃなくって int hoge(.... でも全然構いません。こちら側からすればどっちみち「書捨てのプログラム」なんで、「真面目に名前を考える」必要がないから、です。
ちょっと基礎的な事確認してみましょうか。
良くあるHello, Worldプログラムですが。
#include <stdio.h>
int main(void) {
printf("Hello, World!"); /* ここでprintfと言う「関数」を引数を渡して呼び出してる */
return 0;
}
printfと言う「関数」(機能は出力表示)はstdio.hと名付けられたライブラリ(標準入出力ライブラリ)で定義されてて、要するに「C言語内で定義されてるbuilt-in関数」として呼び出されています。
fooだろうとbazだろうと、はたまたhogeだろうと「自分で作った関数」も同じようにmain関数から「適切な引数を与えて」呼び出せばプログラムとして機能します。
注意点としては、
1. foo関数はmain関数に「呼び出される」前提なんで、main関数より「前で」定義されてないといけない。
(※ 必ずしもそうじゃないけど、この状態だと「プロトタイプ宣言」やってないのは明らかなんで、ある関数Aから別の関数Bを呼び出す場合、BはAよりファイル上では「前に」定義されてないといけない、って覚えておいた方が良いです)
2. 定義されたfoo関数に何の引数を与えるべきか、ってのは自分で考える事。
(※ と言うより、問題文にそのまま答えが書いてます。「問題を理解してるかどうか」と言うのは貴方の責任です。)
3. 最終的にはmain関数内で「出力」しないと端末(ターミナル)には何も表示されないんで、そこをどうするのか、と言うのも初歩的なお話になる。
の3つがあります。
さぁ、自分でプログラムを完成(コンパイルが通るように)させてみて下さい。
No.6
- 回答日時:
> int foo(int a_0, int a_1)とはなんでしょうか?
関数です。
と言うより、それ以前に、ここの回答者ってのは当然、「貴方がどこまで勉強してるのか」ってのがわからないわけですよ。
C言語では、基本的に、main関数が「他の関数(buit-inにせよ自作にせよ)を呼び出す」カタチでプログラムを書いていきます。
つまり、 main関数からfoo関数を呼び出せば題意のプログラムは完成しますが、「main関数以外の関数を書いた事が無い」、あるいはその方法を「教わってない」のなら致し方無し、って話になるんですが、どうなんですかね。
No.5
- 回答日時:
おっと、またコピーミスしちまった(苦笑)。
a_0とa_1の順番が逆でした。
int foo(int a_0, int a_1) {
int a_n = 0;
int count = 0;
for (;;) {
a_n = 3*a_1 + 2*a_0;
if (a_n > 1000) {
return count;
} else if (a_n >= 100) {
count += 1;
}
a_0 = a_1;
a_1 = a_n;
}
}
No.4
- 回答日時:
ちなみに、どんなプログラムにしても、基本は
1. 逐次実行(書いた順番通りに実行する)
2. 条件分岐(if等を使う)
3. 繰り返し(for等を使う)
の3要素の組み合わせで書けます。
と言う事は、厳しい言い方をすると
> forやifを使うらしいです。
と言うのは、「私は分かってます」ではなくって「プログラミングを全く理解していません」と言うのと同義です(どこまで勉強してるか知りませんが)。
あまりに「使うもの」としては「当たり前過ぎる」からです。
ついでに言うと、基本的に、写真の問題を見る限り、「forを使え」だとすれば、この問題はかなりクソですね。
恐らくこの条件だと、十中八九、プログラミングに慣れてる人なら、繰り返し構文としてはwhileを選択するでしょう。
解の関数を提示しておきます。main関数は例によって書かないんで(自分で作って下さい)、色々弄ってどうなってるのか確かめましょう。
int foo(int a_0, int a_1) {
int a_n = 0;
int count = 0;
for (;;) {
a_n = 3*a_0 + 2*a_1;
if (a_n > 1000) {
return count;
} else if (a_n >= 100) {
count += 1;
}
a_0 = a_1;
a_1 = a_n;
}
}
No.3
- 回答日時:
のNo2です。
>質問期間が終わってしまったので再度質問します。
「ヒントまたは答えを教えてください。」と言われても
どこがわからないのか、お礼に書かないと、欲しい回答得られないと思いますよ。
前回の回答、よく読んでみてください
>「2つ前のanから今のanが求まる」ということですよね。

No.2
- 回答日時:
a(n+2)=3(an+1)+2a(n)ではなく
a(n+2)=3a(n+1)+2a(n)ですね。
int a[11];として
a[0] = 1;
a[1] = 2;
a[n+2]=3*a[n+1]+2*a[n]なので
n=0の時、
a[2]=3*a[1]+2*a[0]となり、a[2]が求められる。
よって、n=0から8まで、nをfor文で回せば、a[10]が求められる。
for (n=0;n<=8;n++){
a[n+2]=3*a[n+1]+2*a[n];
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- 数学 隣接3項間漸化式についての質問です。画像の③か④のどちらかをan+1=pan+q^nの解き方で一般項 2 2022/11/22 21:42
- 計算機科学 隣接3項間漸化式についての質問です。画像の③か④のどちらかをan+1=pan+q^nの解き方で一般項 1 2022/11/24 19:52
- C言語・C++・C# C言語 1から20までの逆数の和を求めたいのですが、このようにプログラミングしたら値が負になってしま 3 2023/05/22 18:31
- 数学 a1=a b1=b an+1=5an-bn cn=an+1-an (n=1、2、3…) を満たしてい 2 2022/11/05 17:48
- C言語・C++・C# C言語 入力した値から0までの数を並べて表示するプログラミングを作りたいんですけど、自分でやってみた 2 2023/05/22 18:18
- C言語・C++・C# gettimeofday() と localtime_r() を使って現在の日時をマイクロ秒単位で表 2 2022/10/26 21:15
- 数学 身長187cmです。 数学の漸化式って、どうしてa(n-1)、anのときはxの方程式で解いて、a(n 3 2022/07/24 18:50
- C言語・C++・C# プログラミングのC言語についてですが 全く分かりません。 どなたか教えてくれないでしょうか、、? 3 2022/07/15 04:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でDOS画面のプログラム(...
-
16bitで乱数を生成する方法
-
ヒストグラム均等化処理プログラム
-
C言語で簡単なパックマンゲーム...
-
プログラミングに関して
-
nCrの計算
-
C言語プログラミング 漸化式に...
-
カレンダークラス
-
C++で表を作成したいのです ...
-
DXライブラリによるパズルゲー...
-
シェアウェアの作り方
-
returnの使い方
-
コマンドプロンプトのウィンド...
-
Pythonで入力した値以外の最大...
-
再起呼び出しの回数をカウント...
-
Visual C++ フレームを中央に表...
-
argvのNULLチェック
-
並列処理プログラム
-
画像の拡大・縮小
-
C++ bmp 透過処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
条件が多い場合
-
再起呼び出しの回数をカウント...
-
argvのNULLチェック
-
C言語でDOS画面のプログラム(...
-
カードシャッフルのブログラム...
-
c++ TCHARで文字化け
-
複数の共有メモリの作成
-
C++ Debug Errorについて教えて
-
C++ bmp 透過処理
-
関数とビット列
-
OpenCVによる4値化について
-
コマンドプロンプトのウィンド...
-
ヌメロンのプログラム
-
for 分についてです
-
DXライブラリとC言語 fwrite関...
-
16bitで乱数を生成する方法
-
プログラミングに関して
-
C++で表を作成したいのです ...
おすすめ情報
すいません。
こっちです。
質問期間が終わってしまったので再度質問します。
皆さん回答ありがとうございます。
int foo(int a_0, int a_1)とはなんでしょうか?
僕はいつもvoid(int) main()
から書き初めています。
fooという形は初めて見ました。
習ったのは
mainです。
他には
if
switch
for
while
配列
scanf
printf
のみしか知りません。