defineについて

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

defineについて

#1

投稿記事 by clr » 14年前

defineを使ったfor文を試してみたのですが、
以下のコードを実行すると数字が延々と表示されて上手くいきません。
間違っているところを教えていただきたいです。
OSはmac10.6でxcodeを使っています。

コード:

#include<stdio.h>
#include<math.h>

#define f(x) (a/2.0)*(exp(x/a)+exp(-x/a))
#define LOWER -1.0
#define UPPER 1.0
#define STEP 0.1

main(){

	double a=1.0,x;

	for(x=LOWER;x<=UPPER;x=x+STEP){
		printf("%f\n",f(x));
	}
	
}

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: defineについて

#2

投稿記事 by bitter_fox » 14年前

clr さんが書きました: 以下のコードを実行すると数字が延々と表示されて上手くいきません。
「数字が延々と表示されてうまくいきません」とありますが、上手くいくの基準が分かりませんので、どういった出力を得られれば上手くいったのかを教えていただけますか?
詳しくはフォーラムルールをお読みください。

setton

Re: defineについて

#3

投稿記事 by setton » 14年前

ためしにコンパイルしてみましたが…
うまく行きましたよ?
実行結果は以下の通りです。
1.433086
1.337435
1.255169
1.185465
1.127626
1.081072
1.045339
1.020067
1.005004
1.000000
1.005004
1.020067
1.045339
1.081072
1.127626
1.185465
1.255169
1.337435
1.433086
1.543081
一応こうなりましたが、コメントも何もないので、あなたがどのような動きを期待して造ったのかが分かりません。
これで期待通りの動きですか??

clr

Re: defineについて

#4

投稿記事 by clr » 14年前

>>bitter_foxさん
すみません。
x=LOWERからxをSTEP刻みでx=UPPERとなるまで増やして、それぞれでf(x)(カテナリー曲線)の値を表示させたい
(定義域が[LOWER,UPPER]で、f(LOWER)を表示、f(LOWER+STEP)を表示、f(LOWER+STEP+STEP)...を表示させたい)
のですが、エンドレスに数字が出力されるといった感じです

>>settonさん
そうです、そのような感じに出力したいです。
でもやっぱりエンドレスに数字が出力されるんですよね…

box
記事: 2002
登録日時: 14年前

Re: defineについて

#5

投稿記事 by box » 14年前

clr さんが書きました: でもやっぱりエンドレスに数字が出力されるんですよね…
そういうとき、私だったら、f(x)の値だけではなくxの値も出力してみることをまず考えます。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

clr

Re: defineについて

#6

投稿記事 by clr » 14年前

ここに投稿したコードをコピペして、もう一回実行したら上手くいきました。
なんでさっきまでは上手く行かなかったんだろう…

>>boxさん
なるほど…、終了条件にxが絡んでるからですかね。
参考にします。

clr

Re: defineについて

#7

投稿記事 by clr » 14年前

あまり腑に落ちないのですが、結果がちゃんと出力されたので解決としておきます。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: defineについて

#8

投稿記事 by ISLe » 14年前

ありがちなのは

for(x=LOWER;x != UPPER;x=x+STEP){

というふうになっているときですね。

clr

Re: defineについて

#9

投稿記事 by clr » 14年前

>>ISLeさん
何回も見直したので、コードはここに投稿したものと全く同じだったはずなんですよね…
xcodeに問題があったのかもしれません

閉鎖

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