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

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

ただいまの
回答率

90.48%

  • C

    3810questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

前置きせずにこのプログラムを実行したい

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 497
退会済みユーザー

退会済みユーザー

#include <stdio.h>
int main(){
    int a, b, min, max;
    int  sum = 0, cnt = 0;
    printf("整数a : ");   scanf("%d", &a);
    printf("整数b : ");   scanf("%d", &b);
    min = a < b ? a : b;
    max = b < a ? a : b;
    sum = a + b;
    while (min++ < max--){
        cnt++;
    }
    printf("%d以上%d以下の全整数の和は%dです。\n", min-cnt, max+cnt, sum*cnt);

    return 0;
}


整数a : 1
整数b : 100
2以上99以下の全整数の和は5050です。

整数a : 1
整数b : 100
1以上100以下の全整数の和は5050です。

にしたいです。

while文変数初期化の部分をどうにかすればうまくできそなきがするのですが・・・

全くわかりません。
解くための鍵をください。生意気ですが、答えは書かないでください>_<

何卒よろしくお願い致します。

前置演算をしてはいけない理由はなく、ただ単に前置をせずにしてみたいだけです。

解決しました?

#include <stdio.h>
int main(){
    int a, b, min, max;
    int  sum = 0, cnt = 0;
    printf("整数a : ");   scanf("%d", &a);
    printf("整数b : ");   scanf("%d", &b);
    min = a < b ? a : b;
    max = b < a ? a : b;
    while (min++ < max--){
        sum += min + max;
    }
    printf("%d以上%d以下の全整数の和は%dです。\n", a < b ? a : b , b < a ? a : b, sum);

    return 0;
}


ありがとうございます。
正しいかは、わかりませんが、自分なりに考えてみました。
みなさんの回答を教えてください>_<

解決しました???

#include <stdio.h>
int main(){
    int a, b, min, max;
    int  sum = 0, cnt = 0;
    printf("整数a : ");   scanf("%d", &a);
    printf("整数b : ");   scanf("%d", &b);
    min = a < b ? a : b;
    max = b < a ? a : b;
    sum = max * (max+min) / 2;  /* これはしたくない min++ < max-- が成り立つ回数を cnt とし、 cnt * (min + max) のようなプログラムを実行したかった・・・*/
    printf("%d以上%d以下の全整数の和は%dです。\n", min, max, sum);

    return 0;
}

みなさんありがとうございます。正しいプログラムでは書けませんでしたが、何かがつかめそうなので、一旦保留とします。

時間をかけてじっくり考えます!!!!ありがとうございます!!

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+2

こんにちは。

アルゴリズムはそれで正しいでしょうか?
1と99を入力してみてください。1以上99以下を加えた値とは異なる値になります。
もし、お望みのように修正できた場合、

整数a : 1 
整数b : 99
1以上99以下の全整数の和は4900です。 

と出力されると思います。
しかし、実際に1以上99以下の全整数を加えると4950になります。


【追記】
私なら単純に下記ですね。

sum=0;
for (int i=min; i <= max; ++i) sum += i;
printf("%d以上%d以下の全整数の和は%dです。\n", min, max, sum);


私はシンプル・イズ・ベストが好きです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/20 16:59

    ありがとうございます!!
    気づきませんでした・・・

    キャンセル

  • 2016/04/20 17:20

    全く思いつきませんでした v(^_^)v
    勉強になりました!!
    ありがとうございます!!

    キャンセル

+1

なんか良くわからない(自分が理解していないだけ)計算で出力しているからじゃないですか?
printfのところを次のように単純に出力できるようにすると良いと思います。

printf("%d以上%d以下の全整数の和は%dです。\n", min, max, sum);


答えは書くなとのことなので、このprintfが使えるように直前のループの処理を見直してみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/20 16:56

    ありがとうございます!!!
    ぼんやりとは浮かんでいるのですが、実態がつかめません><
    一応、自分なりに別の方法を見つけられたので、よろしければあなたの解き方を教えてください!!!!

    キャンセル

  • 2016/04/20 17:10

    ループのところをこう書き換えます。

    for( cnt = min; cnt <= max; cnt++ ){
    sum = sum + cnt;
    }

    キャンセル

  • 2016/04/20 17:18

    なるほど!!!
    全く思いつきませんでした!!
    ありがとうございます!!
    勉強になりました!!

    キャンセル

+1

まずそれぞれの箇所でどういった数値が 実際に 入っているか、確認して行ったらいかがでしょうか。

どこか自分が思っているものと違うものがあるかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/20 16:48

    >まずそれぞれの箇所でどういった数値が 実際に 入っているか、確認して行ったらいかがでしょうか。
    とても参考になりました!!
    ありがとうございます!!!

    キャンセル

+1

a:1
b:100
の場合

min と max それぞれいくつになったらループが終わりますか?
そのときの cnt はいくつですか?

ひとつひとつ、変数にどのような値が入っているかを理解すれば、書くべきコードにたどり着けると思います

ついでに、 a と b が同値(イコール)だった場合も考えてみましょう

がんばってください

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/20 16:47 編集

    > 変数にどのような値が入っているかを理解すれば
    ものすごく参考になりました!!!
    ありがとうございます!!!

    キャンセル

関連した質問

同じタグがついた質問を見る

  • C

    3810questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。