掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.24391

絶対値の最大値
投稿者---yuki(2005/11/27 19:10:47)


学校の課題で
整数を引数としてとり,その絶対値を返す関数を作成せよ。
また,この関数を使用して10個の整数を入力として受け付け
て,その絶対値が最大のものを出力するプログラムを作成せよ。

というのが出たんで以下のようなプログラムを作ったんですけど
main関数の中にinput = -inputという式を入れないと
負数の時の絶対値が最大のときが出力されません。
input = -inputという式を入れないといけないということは
絶対値を返す関数がおかしいということでしょうか?
すいません、関数初心者な者で・・・。ご意見お願いします。


#include<stdio.h>
int abs(int x)
{

int i;
for(i = 0;i < 10;i++){
if(x < 0){
x = -x;
}
}
return(x);
}

int main(void){

int input;
int max;
int a;

for(a = 0;a < 10;a++){
scanf("%d",&input);
if(input > max){
max = input;
}
}
printf("最大値は%dです。\n",abs(max));
return(0);
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:絶対値の最大値 24392 まきじ 2005/11/27 19:45:52
<子記事> ソースの添付は字下げしてくださるようにお願いします 24396 管理人 2005/11/27 21:04:14
<子記事> Re:絶対値の最大値 24397 RiSK 2005/11/27 21:17:10
<子記事> Re:絶対値の最大値 24411 ありえないざー 2005/11/29 17:01:29


No.24392

Re:絶対値の最大値
投稿者---まきじ(2005/11/27 19:45:52)


>main関数の中にinput = -inputという式を入れないと
>負数の時の絶対値が最大のときが出力されません。
>scanf("%d",&input);
>if(input > max){
> max = input;
>}

入力値と max を比較してるからです。

>input = -inputという式を入れないといけないということは
>絶対値を返す関数がおかしいということでしょうか?

abs() が呼ばれていないからです。


この投稿にコメントする

削除パスワード

No.24394

Re:絶対値の最大値
投稿者---yuki(2005/11/27 20:46:54)


>>入力値と max を比較してるからです。

これは入力値と何を比較すればよいのでしょうか??
abs関数でのxと比較するということでしょうか?
この場合main関数にかけますでしょうか?

>abs() が呼ばれていないからです。

上記での比較がおかしいからでしょうか?



この投稿にコメントする

削除パスワード

No.24395

Re:絶対値の最大値
投稿者---まきじ(2005/11/27 21:03:35)


>これは入力値と何を比較すればよいのでしょうか??

入力値の絶対値と max


この投稿にコメントする

削除パスワード

No.24396

ソースの添付は字下げしてくださるようにお願いします
投稿者---管理人(2005/11/27 21:04:14)


当掲示板の管理人です。

ソース添付の際は投稿上の注意をご確認の上、字下げしてくださるようにお願いいたします。



この投稿にコメントする

削除パスワード

No.24397

Re:絶対値の最大値
投稿者---RiSK(2005/11/27 21:17:10)


>学校の課題で

そのまま作ればよいでしょう。

// 整数を引数としてとり,その絶対値を返す関数を作成せよ。
int MyAbs(int n) {return n < 0 ? -n : n;}

int main(void) {
    // この関数を使用して10個の整数を入力として受け付けて,
    int n[10], i, max;
    for (i = 0; i < 10個分; ++i) n[i]に入力;

    // その絶対値が最大のものを出力するプログラムを作成せよ。
    for (i = 0; i < 10個分; ++i) max = 絶対値が最大のもの;
    printf("絶対値が最大のもの%d\n", max);
}



この投稿にコメントする

削除パスワード

No.24398

Re:絶対値の最大値
投稿者---yuki(2005/11/27 22:28:16)


まきじ様、RiSK様ありがとうございます。
ようやく理解できるようになりました。
本当にありがとうございます。

管理人様、申し訳ございません!!
これからはきちんとルールを守ります。
本当に申し訳ございませんでした。


この投稿にコメントする

削除パスワード

No.24399

Re:絶対値の最大値
投稿者---Blue(2005/11/27 23:58:45)


マルチです。
http://cgi21.plala.or.jp/keny01/patio/patio.cgi?mode=view&no=60

> マルチポスト(多重投稿)はしません。
守っていませんね。



この投稿にコメントする

削除パスワード

No.24400

Re:絶対値の最大値
投稿者---yuki(2005/11/28 00:15:36)


本当に申し訳ございません!!!!!
課題切羽詰ってたもので←理由になりませんね(泣)

管理人様、Blue様不快な思いをさせてしまい、
まことに申し訳ございませんでした。


この投稿にコメントする

削除パスワード

No.24411

Re:絶対値の最大値
投稿者---ありえないざー(2005/11/29 17:01:29)


解決後で申し訳ありません。
main() もそうですが、それ以前に関数abs

int abs(int x)
{
int i;
    for(i = 0;i < 10;i++){
        if(x < 0){
            x = -x;
        }
    }
    return(x);
}


に関して
>絶対値を返す関数がおかしいということでしょうか?
>すいません、関数初心者な者で・・・。ご意見お願いします。

本人認める「関数初心者」であれば上記関数がとてもおかしいこと
を指摘するべきだったのではと思います。

>ようやく理解できるようになりました。
なので気にする必要は無いかもしれませんが。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧