
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ここのサイトの情報でボーランドのただソフトを入手して
複素数cプログラムを作ってみたのですが動きました
そのプログラムは
gomi.cpp:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<complex.h>
int main(void)
{
complex<double>j(0.0,1.0),z;
doublea,b,x,y;
printf("please input double number a\n");
scanf("%lf",&a);
printf("please input double number b\n");
scanf("%lf",&b);
z=a+j*b;
printf("abs(%lf+j*%lf)=%lf",a,b,abs(z));
getch();
return0;
}
(メモ帳で作成)
です
試してみてください
gomi.cppをコンパイルするには
bcc32 gomi
をリターンすればできます
実行は
gomi
をリターンすればいいのです
通常は
complex j(0.0,1.0),z;
でいけるのですがこの「ただコンパイラ」は
complex<double>j(0.0,1.0),z;
でないと駄目でした
下記サイトからダウンロードして試してください
参考URL:http://www.borland.co.jp/cppbuilder/freecompiler …
No.2
- 回答日時:
もしボーランドかマイクロソフトのコンパイラを使っているのなら
cとc++が統合されていますので
cでプログラムを組む場合であっても複素数型のクラスは使えます
クラスといってもほぼ通常の型と同じように使えます
使えるようにするには文頭で
#include <complex>
を記述しなければなりません
すると
complex x,y,z,j(0.0,1.0);
といったように複素数がていぎできます
double a=1,b=2,c=3.5,d=1.5;
として
x=a+j*b,y=c+j*d;
として
z=x*y;
といったように複素数の計算ができます
勿論
z=exp(j・b);z=exp(x);
とすることもできます
オイラーの式を知っているならばzの意味は分かると思います
ほかに関数
real、imag、conj、abs等もつかえます
相当便利ですよ
c++を知っていなくてもあたかも複素数型が一つ増えたかのように使えますよ
自分で複素数型を定義するにはやはりクラスで定義しないと駄目ですね
しかも自作の定義の場合abs、conj、real、imagなど
関連関数を(使いたいなら)自分で定義しなければなりません
簡単ですけど煩わしいですね
構造体で定義したものは通常の演算ができないし融通が利かないのでやめた方がいいでしょう
No.1
- 回答日時:
C言語では複素数型の変数を持っていませんから、実数のプログラムを拡張して複素数まで広げることはできません。
普通は複素数の実部と虚部を手計算で展開した式をプログラムに書き込まなければなりませんから大変面倒です。そこで、
(1)ここにある複素数計算パッケージが利用できる可能性はあります。自分で作るのであれば参考になるかもしれません。
http://www.mscom.or.jp/~tog/anna/CMPLX.C
(2)C99という1999年に規格化された言語に複素数の変数が規定されました。UnixであればGNUのC99コンパイラで使用することができるかもしれませんが、知人が挑戦して挫折していますので何か問題があるかもしれません。
http://seclan.dll.jp/c99d/
(3)C++ではComplexクラスを定義し、演算子をオーバーロードして複素数演算に拡張することができます。C++に慣れていればこちらはスムーズに実数演算を拡張できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語 関数プロトタイプ宣言の...
-
doubleの変数にintとintの割り...
-
C言語でdouble型の小数点の引き...
-
listに構造体を格納
-
至急です! マクロ定義で #defi...
-
C 開放してるのにエラー(doubl...
-
C言語の型による処理速度の違い
-
C言語を実行すると-infが出てき...
-
割り算ができない
-
float型とdouble型の変数の違い...
-
difftime()について
-
C言語で-23乗を取り扱うには
-
float?数字の後にLがつくもの
-
(C,C++言語)関数の引数は自動キ...
-
型について
-
-1.#IND00と出てしまうのですが...
-
fgets()による繰り返し入力(c言語)
-
たくさんの数の平均を求める方...
-
C言語のプログラムで#include<m...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
doubleの変数にintとintの割り...
-
float型とdouble型の変数の違い...
-
c言語で、繰り返し文の中で、0....
-
至急です! マクロ定義で #defi...
-
C 開放してるのにエラー(doubl...
-
C言語の型による処理速度の違い
-
C言語 関数プロトタイプ宣言の...
-
float と double
-
ラグランジュの補間法のCプログ...
-
C言語のプログラムで#include<m...
-
c言語のコンパイルエラー canno...
-
2分法で方程式の複数の解を自...
-
2次方程式の解を求めるプログ...
-
C言語で台形公式を使った二重積...
-
Cプログラミングの問題です。ニ...
-
物体が往復する動きを作りたい
-
関数におけるif文とreturn文に...
-
doubleは常に%lfとするべきなのか
おすすめ情報