ページ 11

関数の絶対値を求めるプログラムについて教えてください。

Posted: 2012年4月30日(月) 21:59
by ゆうさん
最近C言語を始めたばかりで、簡単な整数のみの絶対値を求めるプログラムは組めるようになりました。
課題で、
数値xを入力し、y=|2x-3|を出力するプログラムを書きなさい。
#include<stdio.h>

//int main(void)

int main(int argc,char*argv[])

{

double x,y;


scanf("%lf",&x);

}

という課題が出ました。
自分で組んだプログラムを実行しても、そのまま2x-3の値が出てきてしまいます。
結局1週間考えたのですが分かりませんでした。
誰か教えてきただけませんか?

Re: 関数の絶対値を求めるプログラムについて教えてください。

Posted: 2012年4月30日(月) 22:04
by 華風えくれあ
自分で組んだプログラムのコードが見当たらないのですが・・・、
現在どの部分までできているかコードを載せていただけないでしょうか。

Re: 関数の絶対値を求めるプログラムについて教えてください。

Posted: 2012年4月30日(月) 22:38
by box
ゆうさん さんが書きました: 数値xを入力し、y=|2x-3|を出力するプログラムを書きなさい。
そもそも、絶対値の数学的な定義は理解されているのですよね?
2x-3≧0ならば、|2x-3|=2x-3
そうでなければ、|2x-3|=-(2x-3)
入力したxの値に応じて、2x-3が0以上かそうでないかを判定するだけのことです。

Re: 関数の絶対値を求めるプログラムについて教えてください。

Posted: 2012年4月30日(月) 22:58
by みけCAT
実数の絶対値を求める関数はfabsです。
http://9cguide.appspot.com/r_lib.html#S5

質問者です

Posted: 2012年4月30日(月) 23:06
by ゆうさん
この様なプログラムを組んだのですが、何がダメなのでしょうか?
明日提出なので、誰か直していただけると非常に助かります。

#include <stdio.h>

int main(void)
{
double x,y;

printf("x=");
scanf("%lf", &x);

y=2*x-3;
if (y<0.0)
{
y=-y;
}
else
{
y=y;
}
printf("y=%lf\n", x,y);

return(0);

}

Re: 質問者です

Posted: 2012年4月30日(月) 23:22
by box
ゆうさん さんが書きました:この様なプログラムを組んだのですが、何がダメなのでしょうか?
「ダメ」というのは、何かご自分で検証してみた上でのことですか?
テストデータとしては、
2x-3=0となるx
2x-3>0となる任意のx
2x-3<0となる任意のx
の3種類を用意して、それぞれのxについて所定の結果が得られれば、
そのプログラムは正しいことになります。

Re: 質問者です

Posted: 2012年4月30日(月) 23:31
by box
ゆうさん さんが書きました:

コード:

    else
    {
        y=y;
    }
まあ、少なくともこの部分は冗長でしょうね。結局何もしていないのですから。

Re: 関数の絶対値を求めるプログラムについて教えてください。

Posted: 2012年4月30日(月) 23:40
by たいちう
少なくともprintfは間違ってます。
使い方を確認してください。