1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

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

 私は

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

掲示板1

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

No.6014

値が出なくて困っています。
投稿者---ケン(2006/07/03 10:48:57)


Goudou関数の値が出なくて困っています。
どこが間違っているのかわからないので教えてください。
お願いします。


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

#include "limits.h"

#define N 11

#define A 2045
#define B 257
#define C 9378
#define M LONG_MAX

double Goudou();

int ig;
long int g_pre;


main(){

double r=0.5,x,y,a;

int in=0;

for(ig=1;ig<N;ig++){


x=Goudou();

y=Goudou();

a=sqrt((x-0.5)*(x-0.5)+(y-0.5)*(y-0.5));

if(a<=r){

in++;

}

printf("%d %lf\n ",ig,x);
}


}



double Goudou(){

int g;
double r;


if(ig==1){

g=B;

}

else{
g=(A*g_pre+C)%M;

}

g_pre=g;

r=g_pre/M;

return r;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:値が出なくて困っています。 6017 YuO 2006/07/03 11:17:48
<子記事> Re:値が出なくて困っています。 6031 papa 2006/07/03 16:41:49


No.6017

Re:値が出なくて困っています。
投稿者---YuO(2006/07/03 11:17:48)


>Goudou関数の値が出なくて困っています。
>どこが間違っているのかわからないので教えてください。
>お願いします。

掲示板利用宣言の,
>ソースの添付は「HTML変換ツール」で字下げします。

>環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
を守ってください。

前者が守られていないので読む気にならないコードですし,
後者が守られていないので何に困っているのかが全くわかりません。
# あなたが書いたとおりにプログラムは値を返しているはずです。

HTML変換ツールを使って字下げを正しくしたあと,
・どのような入力を使ったのか
・どのような出力を期待したのか
・実際の出力はどうであったのか
を説明してください。



この投稿にコメントする

削除パスワード

No.6024

Re:値が出なくて困っています。
投稿者---acid(2006/07/03 12:56:09)


最低限、これがどんなプログラムで、どういう結果が出て、質問者は何を期待しているのか、この3つが書かれていないと誰も答えられません。
ソースがしっかりしていれば、そこから読み取ることも出来ますが、このソースでは無理です。
ヘッダのlimit.hは何なのか(見た所使われていない)、
igをグローバルにする必要はあるのか(グローバルは使わないにこしたことはない)、
ていうかもうちょっとマシなdefineのつけ方をしろ、とか色々あります。
その辺りを直してから出直してこいやーw


この投稿にコメントする

削除パスワード

No.6027

Re:値が出なくて困っています。
投稿者---REE(2006/07/03 13:25:47)


>ヘッダのlimit.hは何なのか(見た所使われていない)、

LONG_MAXを使っているので、必要でしょう。



この投稿にコメントする

削除パスワード

No.6031

Re:値が出なくて困っています。
投稿者---papa(2006/07/03 16:41:49)


>Goudou関数の値が出なくて困っています。

この関数に、大きな問題があるように見えます。

> if(ig==1){
>
> g=B;
>
> }
>
> else{
> g=(A*g_pre+C)%M;
>
> }

gの値の範囲は、0〜(LONG_MAX-1)となります。

> g_pre=g;

g_preの値の範囲も同様です。

>r=g_pre/M;

整数どうしの割り算を行ない、しかも除数がLONG_MAXですので、
rの値は常に0.0となります。

これがお望みの結果なのでしょうか?



この投稿にコメントする

削除パスワード

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





掲示板提供:(有)リアル・インテグリティ