ページ 1 / 1
乱数と2次方程式について
Posted: 2006年12月02日(土) 02:48
by たくみ
1~20までの乱数を3つ発生させ二次方程式ax^2+bx+cを解け。この処理を10回繰り返させる。 という課題を学校の先生からいただいたぼですが、発生させた3つの数をうまくあてはめられず困っています どなたか教えてください お願いします
Re:乱数について
Posted: 2006年12月02日(土) 03:53
by 管理人
たくみさん、こんにちは。管理人です。
えぇと、問題の意味がよくわかりません。
乱数を発生させて3点を決定し、そこを通る2次方程式を解くというものなんでしょうか?
3点はそれぞれ格子点でいいんでしょうか?
乱数を3つ発生させ、という問題文が本当なら、
y=x上の点ということになりますが、(例えば(2,2),(6,6)等)そこを通る点でいいんでしょうか?
2次関数は直線と3つの交点を持てないので、
よく調べて、問題文をもう一度かいてみてください。
Re:乱数について
Posted: 2006年12月02日(土) 04:49
by Justy
>>えぇと、問題の意味がよくわかりません
私も今ひとつよくわからなかったのですが、最大限に推測すると多分
「乱数1~20を a, b, cに代入し、ax^2+bx+c = 0の x値を解く。これを10回繰り返して結果を表示」
ということなのではないでしょうか。
問題なのはたくみさんがどこまで習っていて、今何で詰まっているのか、ですよね。
Re:乱数について
Posted: 2006年12月02日(土) 05:02
by 管理人
あ、そういうことですか。
それなら通りますね。
さすが、私とは違う・・。
でもそれならとても簡単ですね、式さえかけば解ける^^;
エックスイコールニエーブンノマイナスビープラスマイ・・って解の公式を。
特定の範囲内の乱数発生方法は、他のトピでも紹介しているので、参考にしてみてください。
それをみてもわからなかったらまた聞いてください。
Re:乱数について
Posted: 2006年12月02日(土) 08:13
by box
サンプルです。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define ITERATION (10) /* 繰り返す回数 */
#define MAXRANDOM (20) /* 発生させる乱数の最大値 */
void get_coefficients(int *a, int *b, int *c);
void solve_equation(int n, int a, int b, int c);
int main(void)
{
int a, b, c, n = ITERATION, i;
srand((unsigned int) time(NULL)); /* 乱数の初期化 */
for (i = 1; i <= n; i++) {
get_coefficients(&a, &b, &c); /* 二次方程式の係数を得る */
solve_equation(i, a, b, c); /* 二次方程式を解く */
}
return 0;
}
void get_coefficients(int *a, int *b, int *c)
{
/* 1~MAXRANDOMの範囲の乱数を発生させる */
*a = rand() % MAXRANDOM + 1;
*b = rand() % MAXRANDOM + 1;
*c = rand() % MAXRANDOM + 1;
}
void solve_equation(int n, int a, int b, int c)
{
double d = b * b - 4 * a * c; /* 判別式 */
double x1, x2, re, im, e = 2 * a;
printf("%2d) %2dx^2+%2dx+%2d=0\n", n, a, b, c);
if (d > 0) { /* 実数解2個 */
x1 = (-b + sqrt(d)) / e;
x2 = (-b - sqrt(d)) / e;
printf("x1=%f\n", x1);
printf("x2=%f\n\n", x2);
}
else if (d == 0) { /* 実数解1個 */
x1 = -b / e;
printf("x(重解)=%f\n\n", x1);
}
else { /* 虚数解 */
re = -b / e;
im = sqrt(-d) / e;
printf("x=%f±%fi\n\n", re, im);
}
}
Re:乱数について
Posted: 2006年12月02日(土) 14:09
by たくみ
アドバイスしてくださったみなさんへ
みなさんアドバイスありがとうございます。 今学校では乱数を習い始めたばかりで、今朝先生にメールして問題の意図を教えていただいたところ 3つ乱数を発生させ二次方程式ax^2+bx+cの式にあてはめ、10回繰り返す という意味ということがわかりました
BCC Developer のエラーについて
Posted: 2006年12月14日(木) 21:37
by a.k.a.dRESSING
BorlandC++ Compiler 5.5の使い方で
① BCC Developer のメニューから[プロジェクト]→[メイク]を選択。
エラーが起きなければ実行するためのソフトがこれで作成されます。
エラーがあった場合は画面下のウインドウにエラー内容が出てきます
ので指示にしたがって修正してください。
② 次に[実行]→[実行]を選択してソフトを起動します。
まで手順通りに行いましたが、
エラー E2209 C:\Documents and Settings\裕樹\デスクトップ\bccdev1221\裕樹\test\DrawPixel.cpp 1: インクルードファイル 'DxLib.h' をオープンできない
エラー E2141 C:\Documents and Settings\裕樹\デスクトップ\bccdev1221\裕樹\test\DrawPixel.cpp 3: 宣言の構文エラー
というのが出てきて実行できません。どうすればいいのでしょうか?お願いします
Re:BCC Developer のエラーについて
Posted: 2006年12月14日(木) 22:14
by box
> エラー E2209 C:\Documents and Settings\裕樹\デスクトップ\bccdev1221\裕樹\test\DrawPixel.cpp 1: インクルードファイル 'DxLib.h' をオープンできない
作成しようとしているプログラムがインクルードしている
ヘッダーファイルが、Borland C++ Compilerの環境に
含まれていない、ということです。
もしかすると、Microsoftの開発環境で作成することを
前提としているプログラムなのかもしれません。
> エラー E2141 C:\Documents and Settings\裕樹\デスクトップ\bccdev1221\裕樹\test\DrawPixel.cpp 3: 宣言の構文エラー
DrawPixel.cppの3行目に何らかの文法エラーがある、ということです。
Re:BCC Developer のエラーについて
Posted: 2006年12月14日(木) 22:49
by 管理人
DxLib.hがコンパイルしようとしているフォルダに入ってないんじゃないですか?
コンパイルしようとしているフォルダにDxLib.hがきちんとはいっているかどうか確認してみてください。
Re:BCC Developer のエラーについて
Posted: 2006年12月14日(木) 23:07
by バグ
BCC用のDXLibファイルでないとか、プロジェクト内にヘッダーファイルが登録されてない可能性もありますね。
Re:BCC Developer のエラーについて
Posted: 2006年12月14日(木) 23:21
by 管理人
バグさん、お久しぶりです^^
>BCC用のDXLibファイルでないとか・・
そうですねぇ、、しかしオープンできないとなると、それ自体ないような気もします。
・フォルダ内にヘッダファイルがあるか
・Bcc用とVS用の2種類のものがありますので、Bcc用のものをきちんとダウンロードしているか
確認してみてください。
Re:BCC Developer のエラーについて
Posted: 2006年12月15日(金) 22:33
by a.k.a.dRESSING
できました!皆様ありがとうございました
Re:BCC Developer のエラーについて
Posted: 2006年12月16日(土) 21:42
by 管理人
解決されてよかったです☆
頑張ってくださいね^^