C言語初心者です。
自然数を 2 つ(x, y )入力してx < y であれば x から y までの合計値,
x < y でなければ y から x までの合計値を求めるプログラムを作ろうとしています。
main 文は以下のようにしました。
関数は mysum を定義しようと思いますが、この後どうすればいいか教えていただけますか。。
C言語 自然数x,yの合計値を求めるプログラム
Re: C言語 自然数x,yの合計値を求めるプログラム
関数 mysum を定義すればいいと思います。
- 関数 mysum の定義を、関数 main の定義があるファイルの関数 main の定義より前の部分に書く
- 関数 mysum の定義を、関数 main の定義があるファイルの関数 main の定義より後ろの部分に書き、同じファイルの関数 main の定義より前の部分に関数 mysum の宣言(プロトタイプ宣言)を書く
- 関数 mysum の定義を、関数 main の定義があるファイルとは別のソースファイルに書き、別途関数 mysum の宣言(プロトタイプ宣言)のみが書かれたヘッダファイルを作成し、関数 main の定義があるファイルからこのヘッダファイルを #include する
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語 自然数x,yの合計値を求めるプログラム
関数 mysum を実装する前に、まずテストケース (入力とそれに対する期待する出力の組) を作っておく、という方法もあります。
例えば
入力1 出力1 入力2 出力2 入力3 出力3 入力4 出力4 のような感じかな。
例えば
入力1 出力1 入力2 出力2 入力3 出力3 入力4 出力4 のような感じかな。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語 自然数x,yの合計値を求めるプログラム
お好きなように改変してかまいません。
なお、main文ではなくてmain関数ね。
なお、main文ではなくてmain関数ね。
#include <stdio.h>
void inputData(int *a, int *b)
{
printf("1個目の自然数を入力:"), scanf("%d", a);
printf("2個目の自然数を入力:"), scanf("%d", b);
}
int mysum(int *x, int *y)
{
int a = *x, b = *y, t, i, sum = 0;
if (*x >= *y) {
t = a, a = b, b = t;
}
for (i = a; i <= b; i++) {
sum += i;
}
*x = a, *y = b;
return sum;
}
int main(void)
{
int x, y, s;
inputData(&x, &y);
s = mysum(&x, &y);
printf("%dから%dまでの和は%d\n", x, y, s);
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: C言語 自然数x,yの合計値を求めるプログラム
a, bとかいう中間的な変数はいらんかったね。
これで十分でしょう。たぶん。
#include <stdio.h>
void inputData(int *a, int *b)
{
printf("1個目の自然数を入力:"), scanf("%d", a);
printf("2個目の自然数を入力:"), scanf("%d", b);
}
int mysum(int *x, int *y)
{
int t, i, sum = 0;
if (*x >= *y) {
t = *x, *x = *y, *y = t;
}
for (i = *x; i <= *y; i++) {
sum += i;
}
return sum;
}
int main(void)
{
int x, y, s;
inputData(&x, &y);
s = mysum(&x, &y);
printf("%dから%dまでの和は%d\n", x, y, s);
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: C言語 自然数x,yの合計値を求めるプログラム
ChatGPTに以下のようなものを
以下は、C11のプログラムの例です。入力された2つの自然数x, yがx < yであれば、xからyまでの合計値を計算します。そうでなければ、yからxまでの合計値を計算します。
以上が、自然数を2つ入力し、条件に応じてxからyまでの合計値またはyからxまでの合計値を計算するC11のプログラムの例です。
#命令書:
あなたは、プログラマーです。
以下の制約条件と入力文をもとに、C11のプログラムを出力してください。
#制約条件:
・関数名とクラス名はキャラメルケースとする。
・関数名は処理内容がわかりやすい名称にする。
・エラー処理や例外処理をする。
・条件分岐もコメントをする。
・関数の中身の処理をコメントする。
・#defineは、大文字で始まるスネークケースとする。
・struct、classのメンバーは m_ で始まるとする。
・処理内容をDoxygen方式でコメントを書く。
#入力文:
自然数を 2 つ(x, y )入力してx < y であれば x から y までの合計値,
x < y でなければ y から x までの合計値を求めるプログラムを作ろうとしています。
#出力文:
/**
* @brief 2つの自然数の合計値を計算する関数
*
* @param[in] x 自然数1
* @param[in] y 自然数2
* @return xからyまでの合計値、またはyからxまでの合計値
*/
int CalculateSum(int x, int y)
{
// xがyより大きい場合、xとyを入れ替える
if (x > y) {
int temp = x;
x = y;
y = temp;
}
// xからyまでの合計値、またはyからxまでの合計値を計算する
int sum = 0;
for (int i = x; i <= y; i++) {
sum += i;
}
// 計算結果を返す
return sum;
}
int main(void)
{
int x, y;
// 自然数xとyを入力する
printf("自然数xを入力してください: ");
if (scanf("%d", &x) != 1) {
// 入力エラーの場合、エラーメッセージを表示して終了する
fprintf(stderr, "入力エラー: 自然数を入力してください\n");
return 1;
}
printf("自然数yを入力してください: ");
if (scanf("%d", &y) != 1) {
// 入力エラーの場合、エラーメッセージを表示して終了する
fprintf(stderr, "入力エラー: 自然数を入力してください\n");
return 1;
}
// x < yの場合、xからyまでの合計値を計算する
if (x < y) {
int sum = CalculateSum(x, y);
printf("%dから%dまでの合計値は%dです。\n", x, y, sum);
}
// x >= yの場合、yからxまでの合計値を計算する
else {
int sum = CalculateSum(y, x);
printf("%dから%dまでの合計値は%dです。\n", y, x, sum);
}
return 0;
}
Re: C言語 自然数x,yの合計値を求めるプログラム
東上海美「
> 関数名とクラス名はキャラメルケースとする。
『キャラメルケース』でなく『キャメルケース』みみ。
https://ja.wikipedia.org/wiki/%E3%82%AD ... C%E3%82%B9
> キャメルケース(英: camel case)は、複合語をひと綴りとして、要素語の最初を大文字で
> 書き表すことをいう。\すっごーい/キャメルケースとは、大文字が「らくだのこぶ」のように
> 見えることからの命名である。例えば、「camel case」をキャメルケースで書き表すと、
> 「camelCase」(または「CamelCase」)となる。
」
> 関数名とクラス名はキャラメルケースとする。
『キャラメルケース』でなく『キャメルケース』みみ。
https://ja.wikipedia.org/wiki/%E3%82%AD ... C%E3%82%B9
> キャメルケース(英: camel case)は、複合語をひと綴りとして、要素語の最初を大文字で
> 書き表すことをいう。\すっごーい/キャメルケースとは、大文字が「らくだのこぶ」のように
> 見えることからの命名である。例えば、「camel case」をキャメルケースで書き表すと、
> 「camelCase」(または「CamelCase」)となる。
」
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。