第X項から第Y項までの和を求めるプログラムを作りたいのですが、どうしてもうまくいきません、問題はこうなっています
初項1公差1の等差数列がある(An={1 2 3 4 5 ・・・n})。数値XとYを入力して、この数列におけるX項からY項までの数列の和を算出するプログラムを作成せよ。実行結果の例を以下に示す。
私はこの問いに対してこのようにプログラミングしました
#include<stdio.h>
void main()
{
int X;
int Y;
int sum=0;
printf("第X項から:");
scanf("%d",&X);
printf("第Y項まで:");
scanf("%d",&Y);
while(X<=Y)
{
sum=sum+X;
X++;
}
printf("初項1交差1の等差数列において、\n");
printf("第%d項から第%d項までの数列の和は%dです。",X,Y,sum);
}
こうすると最後のX項の値がY項より1大きく表示されてしまいます、どうしたらよろしいのでしょうか?どなたかわかる方返答をお願い致します。
No.1ベストアンサー
- 回答日時:
処理を実施して、x++;した後に条件判断でx>yを判断しているから、x+1とyが等しくなるのは当たり前。
ループから抜けたら
x--;
の一文を加えればOK。
edmin2004さんのおっしゃる通りやってみたのですが私の知識がない分うまくいきませんでした。すいません、初心者で申し訳ございません。
質問の内容が具体的でなく伝わりにくかったと思いますので、もう一度お教えくださいm・・m
たとえばXに3Yに8を代入すると最後の文では
第9項から第8項までの数列の和は33です。
と表示されてしまうのです。本当ならば第3項から第8項までと表示させたいのですが・・・
No.4
- 回答日時:
#3さんの回答の最後に書いてある考え方を採用して、
#include <stdio.h>
int main(void)
{
int x, y, sum = 0;
printf("第X項から:");
scanf("%d", &x);
printf("第Y項まで:");
scanf("%d", &y);
printf("初項1交差1の等差数列において、\n");
printf("第%d項から第%d項までの数列の和は", x, y);
while (x <= y) {
sum += x;
x++;
}
printf("%dです。\n", sum);
return 0;
}
すごいです!わかりました、このように、和で区切るとは思いもしなかったです!ほんとうにありがとうございまたm・・m
でもみなさんが教えてくれた、新しい変数を使ったプログラミングをすることも挑戦してみます!!
答えてくださったみなさん本当にありがとうございました!
No.3
- 回答日時:
初期値X=3,Y=8の時のwhile文のある位置でのX,Y,sumの値を紙に書いてみればわかりますよ。
1回目 X=3,Y=8,sum=0
2回目 X=4,Y=8,sum=3
3回目 X=5,Y=8,sum=7
4回目 X=6,Y=8,sum=12
5回目 X=7,Y=8,sum=18
6回目 X=8,Y=8,sum=25
7回目 X=9,Y=8,sum=33
7回目でwhile文は偽になり{から}までのブロックは実行されません。
ですからprintfが実行される時点ではXは9、Yは8、sumは33になります。
やり方は二通りあります。
変数をひとつ追加する方法と、変数を追加しないでprintfの書き方をを少し工夫する方法です。
返答ありがとうございます。
asuncionさんとQuantさんの助言の通りこのようにプログラムを作り直したのですが、X=3、Y=8のときに和が36となってしまいました。何がおかしいのでしょうか?本当に初心者ですいませんm・・m
#include<stdio.h>
void main()
{
int X;
int Y;
int sum=0;
int Z=X;
printf("第X項から:");
scanf("%d",&X);
printf("第Y項まで:");
scanf("%d",&Y);
while(Z<=Y)
{
sum=sum+Z;
Z++;
}
printf("初項1交差1の等差数列において、\n");
printf("第%d項から第%d項までの数列の和は%dです。",X,Y,sum);
}
No.2
- 回答日時:
#1さんの回答は正しくありません。
Xの値をインクリメントしている限り、
while文のループを抜けてからデクリメントしてもしなくても、
最初に入力したXの値とは異なっているのですから、
正しい結果を得ないのは当然です。
対策は、最初に入力したXの値を「別の変数」に保存しておき、
最後のprintfのXのかわりに、その「別の変数」の値を出力することです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# プログラミング実行後の表示される値を答えよ #include<stdio.h> void main( 7 2022/05/20 00:07
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- 数学 数bの問題です。 初項が-29、公差が3である等差数列anにおいて初項から第n項までの和をsnとする 4 2023/05/16 16:32
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
c言語プログラミングで初項を1.公比2とした等比数列を表示するプログラムで表示終了で第20項まで表示
C言語・C++・C#
-
while文について、c言語です。
C言語・C++・C#
-
C言語階乗の総和を求める
C言語・C++・C#
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
10進数からN進数に変換するプロ...
-
配列を使って魔方陣
-
配列を関数に渡す方法
-
while文について、c言語...
-
if-else文および標準演算子(*...
-
C言語 数字以外を入力させない...
-
C言語です
-
c言語プログラミングで1から100...
-
raspberrypiでロータリエンコーダ
-
C言語。どうしてコンパイルでき...
-
改善すべき点を教えてください。
-
C++での乱射ショットについて教...
-
getcの改行判定
-
ガウスの消去法のプログラムが...
-
C言語:配列の最大値
-
while文を使った問題なのですが...
-
c言語です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
プログラム
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
配列を使って魔方陣
-
getcの改行判定
-
配列を関数に渡す方法
-
プログラミングで二番目に大き...
-
C言語階乗の総和を求める
-
scanf関数を用いての加減乗除%...
-
C言語で電卓を作成する。
-
C言語 プログラム
-
C言語の二分法のプログラムにつ...
-
C言語のwhile文を使った素数判...
-
while文について、c言語...
-
10進数からN進数に変換するプロ...
-
C言語です
-
C言語でのトランプシャッフルに...
-
全角文字の判定
-
C言語のプログラミング (基礎...
おすすめ情報