“初項1公差1の等差数列において、数値XとYを入力して、この数列におけるX項からY項までの数列の和を算出する”プログラムを作っています。
実行結果を
『第X項から:1
第Y項まで:10
初項1公差1の等差数列において、
第1項から第10項までの和は55です。』としたいのですが、
上手くいきません。どこが間違っているのでしょうか?
(初心者なのでかなりミスがあると思いますが…。)
↓作ったプログラム
#include<stdio.h>
main()
{
int X;
int sum = 0;
int Y;
printf("第X項から:");
scanf("%d",&X);
printf("第Y項まで:");
scanf("%d",&Y);
while(X <= Y);
{
sum = sum + X;
X = X + 1;
}
printf("初項1公差1の等差数列において、\n");
printf("第%d",X);
printf("項から第%d",Y);
printf("項までの数列の和は%d",sum);
printf("です。");
}
No.6ベストアンサー
- 回答日時:
> 『別の変数に変更前のXの値を保持する』にはどうしたらよいですか?
変数X、sum、Y以外に、別の変数を用意します。
Xに何らかの計算を施す前(今回の場合、whileループ前)に、
その別の変数にXの値を代入すれば良いです。
下に例を載せておきます。追加&変更したところに左矢印をいれておきました。
#include<stdio.h>
int main(void)
{
int X;
int sum = 0;
int Y;
int temp; ←これが『whileループ前のXの値』を保存するための変数
printf("第X項から:");
scanf("%d",&X);
printf("第Y項まで:");
scanf("%d",&Y);
temp = X; ←この行で、変数tempに『whileループ前のXの値』を代入する
while(X <= Y)
{
sum = sum + X;
X = X + 1;
}
printf("初項1公差1の等差数列において、\n");
printf("第%d",temp); ←変数tempに、『whileループ前のXの値』が格納されている
printf("項から第%d",Y);
printf("項までの数列の和は%d",sum);
printf("です。");
}
有難うございます!
「別の変数を用意する」のをどうしたらよいのか分からなかったのですが、例まで載せていただいて、とても分かりやすく助かりました!!
No.8
- 回答日時:
No5です。
>なるほど…。
>やり方はいろいろあるんですね。
No.6さんの、別の変数を用意する方法、
No.7さんの、関数にする方法、
が出ましたから、ついでにもうひとつ。
「Xを使う前に出力する」という方法もあります。
つまり、No.6さんのプログラムの
temp = X;
の部分に、
printf("初項1公差1の等差数列において、\n");
printf("第%d",X);
を移動させて、Xの値が使われて変化する前に表示してしまい、whileループを実行する訳です。
#趣味の回答でした。
プログラミングって面白いでしょ?
質問者さんがプログラミングを楽しく感じてもらえればうれしいです。
No.7
- 回答日時:
>プログラミングの問題集を解いていて出てきた問題です。
>『繰り返し処理』の単元で、X、Yにはいろいろな数値が入るのですが、
>今回はX=1、Y=10で考えてみようということです。
他の方の回答は全然読んでないんですけど、
最低でも「第 X 項から第 Y 項までの和を求める」部分は関数にしましょう。
関数の実装は while ループを回すもよし、和の公式を用いるもよし。
そうすれば、変更前の X を何処に保存しておこう、などと悩む必要はなくなります。
関数の引数に X を渡せば、勝手に値がコピーされて元の X が変更されることはありません。
No.5
- 回答日時:
>『第11項から第10項までの数列の和は55です。
』>なぜ、第11項からなんですか?
「printf("第%d",X);」が実行されるときのXは、4行上の「X=X+1]によって、1,2,3・・・、11になっているからです。
有難うございます。
今気づきました・・・ 。
先ほど解答していただいた方にもありましたが、
『第1項から』にするにはどうしたらよいですか?
No.4
- 回答日時:
> 上手くいきません。
どこが間違っているのでしょうか?何が上手くいかないのでしょうか?
それが分からないと適切なアドバイスができません。
それから言語は何でしょうか?
C言語だとしたら、次の点が間違っています。
> main()
これは間違っているかどうかは分かりませんが、普通、
int main(void)
と記述します。
それからmain関数内の最後に
return(0);
が無いのも怪しいです。
> while(X <= Y);
while(条件式)の後ろに;をつけてはいけません。なので;を消して下さい。
もしコンパイルエラーが発生するなら、先ほど述べた箇所とこの行が原因かもしれません。
それから、whileループ内で変数Xの値が変更されているので、
whileループの後の『 printf("第%d",X);』では
変更後のXの値が表示されます(ANo.2の方が指摘しています)。
本来は、変更前のXの値を表示したいのではないでしょうか?
そうであれば、『 printf("第%d",X);』をwhileループ前に配置するか、
別の変数に変更前のXの値を保持するなどの対策をとって下さい。
これ以外に上手くいかないことがあるなら、それを教えて下さい。
この回答への補足
補足じゃないんですが…。
第11項からになるのは、Xが変更されているからですね。
気づくの遅くてスミマセン。
『別の変数に変更前のXの値を保持する』にはどうしたらよいですか?
有難うございます!
while(条件式)の後ろの;が原因でした。
これで上手く出力できたのですが、
『第11項から第10項までの~』と、なぜか第11項になっています。
どこか式がおかしいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
このQ&Aを見た人はこんなQ&Aも見ています
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なんで、等比数列の和で、r(公...
-
この数列の解き方を教えてください
-
bnを求めるときですが、{bn+1}...
-
いろいろな数列の和 n≧2のとき...
-
数学Bの問題です
-
数列{an}の初項から第n項ま...
-
等比数列の問題です。 第4項が2...
-
階差数列の問題で、n=1にときに...
-
【至急】 公文の数学です!中3...
-
数列の一般項はどこまで簡単に?
-
複素積分 n乗
-
数列の問題です。解説お願いし...
-
因数分解でこまってます。。
-
数Bの数列の漸化式は形を覚える...
-
上三角行列のn乗の証明
-
高校数学について この問題の(...
-
階差数列
-
数学Bの等比数列の問題
-
この平行移動によってどうして3...
-
(2x+3y+z)(x+2y+3z)(3x+y+2z)を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
なんで、等比数列の和で、r(公...
-
数列の一般項はどこまで簡単に?
-
展開の問題で項の順番が逆でも...
-
数Ⅰの問題について教えてくださ...
-
等比数列の問題です。 第4項が2...
-
階差数列の問題で、n=1にときに...
-
定数項は「0」か「なし」か?
-
この数列の解き方を教えてください
-
数2の二項定理の問題です!教え...
-
数学の数列において一般項Anに...
-
いろいろな数列の和 n≧2のとき...
-
(2x^2-1/2x)^6の展開式でx^3の...
-
高1 数学です (因数分解) a(b...
-
漸化式 最後の式で公比を(n-1)...
-
等比数列の一般項について この...
-
等比数列の逆数の和について
-
xの多項式(x+1)(x+2)(x+3)(x+4)...
-
数学Bの等比数列の問題
-
等差数列の証明
-
Cnの一般項を求めよ
おすすめ情報