質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

1248閲覧

2つの整数値を入力し,それらとそれらの間に含まれる整数の和を表示するコード

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/10/22 08:01

###前提・実現したいこと
C言語,Atom,コマンドプロンプトを使っています.
2つの整数値a,bを入力し,a,bとその間に含まれる整数を小さい順に足す式とその合計を
表示するコードを書きたいです.(例)a=1,b=5のとき,"1+2+3+4+5=15"と表示したい.

###発生している問題・エラーメッセージ

d>0,d=0の時はうまくいくが,d<0の時だけうまくいかない.例えばa=20,b=15と入力して Enterを押すと15=15と表示される(15+16+......+20=105と表示したいのに).

###該当のソースコード

#include <stdio.h> int main(){ int a, b, d; int loop, asum, bsum; printf("input a:"); scanf("%d", &a); printf("input b:"); scanf("%d", &b); asum=a; bsum=b; d=b-a; if(d>0){ printf("%d", a); for(loop=1; loop<=d; loop++){ printf("+%d", a+loop); asum=asum+(a+loop); } printf("=%d", asum); }else if(d==0){ printf("%d", a); }else if(d<0){ printf("%d", b); for(loop=1; loop<=d; loop++){ printf("+%d", b+loop); bsum=bsum+(b+loop); } printf("=%d", bsum); } return 0; }

###試したこと
打ち間違いがないか確認しました...(ちなみにErrorは出てないです)

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

dがマイナスになるからではないでしょうか?

for(loop=1; loop<=d; loop++){

で、dは -5、loopは1で loop > d ですから
この for()の中が実行されることはないと思います。

解決方法は他の回答者さんと同様に、a,bの大小を判定して、「小さい方から大きい方へ」と
するのがよいと思います。

投稿2017/10/23 02:10

nob.

総合スコア711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/23 05:41

if(d<0)の時は for(loop=1;loop<=-d;loop++)にすれば大丈夫そうですね!-dにするというのを見落としていました.ありがとうございました!
guest

0

a,b入力後に大小比較してそれぞれをmin,maxに入れ、その後min,maxでループかければ良いと思います。

投稿2017/10/23 01:32

lain

総合スコア161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

a,bについて小さい数から大きい数に向かって計算するということであれば、b < aの場合はabの値を入れ替えて以降の処理をすれば良いのではないかと思います。

投稿2017/10/22 14:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/22 23:33

if(d<0){ warehouse=a;//warehouseを宣言し代わりにbsumを消しました. a=b; b=warehouse; /*と書いて,以下はd>0のときと同様のコードを書くということでしょうか? ちなみにこれで実行すると,結果は変わらず15=20となりました...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問