ある値を入力した場合・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
an

ある値を入力した場合・・・

#1

投稿記事 by an » 9年前

ある値を2つ入力して、どっちが1に近い値かどうかを調べる処理を作りたいのですが、近い値って言うのがわからなくっていきず待ってます。
何かいい方法はないでしょうか??
どなたかお知恵をお貸しください!!お願いします。

ゆーずぃ(携帯)

Re: ある値を入力した場合・・・

#2

投稿記事 by ゆーずぃ(携帯) » 9年前

まずは値が正か負かをそれぞれ調べます。

両方正:小さい方を選択(5と10なら5)

両方負:大きい方を選択(-3と-10なら-3)

正と負:負数に-を掛けて絶対値を求めます。その上で両方正の場合として求める。

ビット演算など使えばもっとスマートに出来そうですが。参考までに。
(携帯からですが、ゆーずぃが書きました)

ISLe
記事: 2648
登録日時: 9年前
連絡を取る:

Re: ある値を入力した場合・・・

#3

投稿記事 by ISLe » 9年前

1が目的地
ある値が現在地
として考えてみたら分かりませんか?
#正負の向きがあるので比較は絶対値で。

アバター
Ultimate
記事: 38
登録日時: 9年前
住所: 埼玉県
連絡を取る:

Re: ある値を入力した場合・・・

#4

投稿記事 by Ultimate » 9年前

ここでは数直線を思い浮かべてみてください。
ある点からある点までの距離のことを何と言ったでしょう・・・それは絶対値です。
2つの数を入力し、それぞれ1との差の絶対値を求めて、その絶対値が小さいほうが1に近い数だとわかります。
stdlib.hにはabsという絶対値を求める関数がありますが、ここではあえて自分でその関数を作ってみたいと思います。
下に解答例を書いておくので、まずは上に書いたヒントをもとにがんばってみてください。
► スポイラーを表示

an

Re: ある値を入力した場合・・・

#5

投稿記事 by an » 9年前

なるほど、思いつきませんでした・・・・。
結構、簡単なことでしたね^^;参考にさせていただきます。

皆さんありがとうございました!!

アバター
Tatu
記事: 445
登録日時: 9年前
住所: 北海道

Re: ある値を入力した場合・・・

#6

投稿記事 by Tatu » 9年前

ある数を二乗したものはその絶対値を二乗したものに等しいことを利用して書いてみました。

コード:

#include <stdio.h>

int main(void){
	int a,b,c;//3点の座標
	int d;//abとbcの長さの二乗の差
	int end=1;//終了判定

	do{
		printf("a,b,cの座標を整数で入力してください\n");
		printf("a=");
		scanf("%d",&a);
		printf("b=");
		scanf("%d",&b);
		printf("c=");
		scanf("%d",&c);

		d=(a-b)*(a-b)-(a-c)*(a-c);

		if(d==0) printf("b,cはaから同じ距離にあります\n\n");
		else if(d<0) printf("bのほうがaに近いです\n\n");
		else printf("cのほうがaに近いです\n\n");

		printf("もう一度やりますか?1:はい それ以外の整数:いいえ\n");
		scanf("%d",&end);
	}while(end==1);

	return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る