プロが教える店舗&オフィスのセキュリティ対策術

いま、私はあるプログラムの問題でこまっています。
その問題は、「キーボードから正の整数 n と 正の実数 uplim を受け取る. n 以上 100 以下の整数について, その指数関数の値が uplim 以下の場合には, その整数およびその指数関数の値をともに表示するプログラムを for 文を用いて作成せよ」という問題です。そして、次が自分のその問題のソースプログラムです。
#include <stdio.h>
#include <math.h>

int main(void)
{
//(E4_1) キーボードから正の整数 n と 正の実数 uplim を受け取る.
int n;
scanf("%d",&n);
float uplim;
scanf("%f",&uplim);
int i;
scanf("%d",&i);
double y;





//n 以上 100 以下の整数について, その指数関数の値が uplim 以下の場合には,
//その整数およびその指数関数の値をともに表示するプログラムを for 文を用いて作成せよ

for(i=0;n<=i<=100;i++){

if( i<=uplim ){
printf("整数は%d,指数関数はy=exp(i)",i);
}
}

return 0;
}
このソースプログラムでコンパイルして1を5回ぐらい入力すると”整数は%d,指数関数はy=exp(i)"
という言葉が何回も出てきてコンパイラが応答しなくなりました。ちなみに、ソースプログラムのエラーは出てこなかったです。どこがおかしいのでしょうか。回答よろしくおねがいします。

A 回答 (3件)

おかしい点を修正しました。

//追加 //修正 //削除のコメントを付けています。
------------------------------------------------------
#include <stdio.h>
#include <math.h>

int main(void)
{
//(E4_1) キーボードから正の整数 n と 正の実数 uplim を受け取る.
int n;
printf("n=>"); //追加 なくても良いがオペレータが何を入力すべきかが判ったほうが良い
scanf("%d",&n);
float uplim;
printf("uplim=>"); //追加 同上の理由で追加
scanf("%f",&uplim);
int i;
//scanf("%d",&i); //削除 iは入力する必要なし
double y;

//n 以上 100 以下の整数について, その指数関数の値が uplim 以下の場合には,
//その整数およびその指数関数の値をともに表示するプログラムを for 文を用いて作成せよ

for(i=n;i<=100;i++){ //修正
y = exp(i); //追加 指数関数の値を求める
if( y<=uplim ){ //修正 その値がuplim以下なら
printf("整数は%d,指数関数はy=exp(i)の値は%f \n",i,y); //修正
}
}

return 0;
}
---------------------------------------------
以下、実行結果です。
n=>2
uplim=>10000.0
整数は2,指数関数はy=exp(i)の値は7.389056
整数は3,指数関数はy=exp(i)の値は20.085537
整数は4,指数関数はy=exp(i)の値は54.598150
整数は5,指数関数はy=exp(i)の値は148.413159
整数は6,指数関数はy=exp(i)の値は403.428793
整数は7,指数関数はy=exp(i)の値は1096.633158
整数は8,指数関数はy=exp(i)の値は2980.957987
整数は9,指数関数はy=exp(i)の値は8103.083928
    • good
    • 0
この回答へのお礼

助かりました

本当に最後までわかりやすく教えていただきありがとうございます。とても参考になりました。

お礼日時:2016/10/17 21:55

もっと正確にいうと


for(i=0;n<=i<=100;i++)
のところが間違ってる... というか, それ以外にもおかしいところはある.

・n<=i<=100 が C でどういう意味なのか調べてみよう.
・「指数関数の値が uplim 以下の場合」という条件はどこに書いてありますか?
・「指数関数の値」を表示しないのはなぜ?
・「コンパイラが」応答しなくなった, わけじゃないよね.
・「エラーがない」というのは単に「文法的には間違っていない」というだけで「プログラムがあなたのやりたいことをしている」とか「与えられた問題の解答になっている」ということは保証しない.
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます。これから、自分で調べて頑張ろうと思います。

お礼日時:2016/10/17 18:12

n<=i<=100

    • good
    • 0
この回答へのお礼

回答ありがとうございます。ちなみに問題の正しい答えにあうようにどの部分をどのように直せばいいか教えてくれませんか。
よろしくお願いします。

お礼日時:2016/10/17 17:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!