複素数の演算なのですが・・・

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

複素数の演算なのですが・・・

#1

投稿記事 by ダン » 12年前

はじめまして。今、複素数の課題でどうにもうまくいかず投稿させてもらうことにしました。

環境はwindows7 VC++2010でC言語は初心者です。
目標としては2数の実部虚部をdouble型で入力したあとに結果としてa+jb (jは虚数)のように表示したいのですが
いろいろ変えても正しく結果が表示されないので書き方自体に問題があるのだと思うのですが、printfのところの文の
中がおかしいのかなと思っていたりするのですがアドバイスおねがいします。

コード:

#include <stdio.h>

int main( void )
{
  double  a, b;    
  double  c, d;    
  double  x, y;    
  double  p;      
  
	/*	二値入力 */
	printf( "a + jb (a,b)= " ); // Z1の入力
	scanf( "%d %d", &a,&b );
	printf( "c + jd (c,d)= " );
	scanf( "%d %d",&c,&d ); // Z2の入力

	/*	加算 Z3=Z1+Z2 */
	x=a+c;
	y=b+d;
	printf( "加: %f%+fj\n",x,y ); // Z3の出力

	/*	減算  Z3=Z1-Z2 */
	x=a-c;
	y=b-d;
	printf( "減: %f%+fj\n",x,y ); // Z3の出力

	/*	乗算 Z3=Z1*Z2 */
	x=a*c;
	y=b*d;
	printf( "乗: %f%+fj\n",x,y ); // Z3の出力

	/*	除算  Z3=Z1/*Z2 */
	p = c*c + d*d;
	x=(a*c+b*d)/p;
	y=(-a*d+c*b)/p;
	printf( "除: %f%+fj\n",x,y ); // Z3の出力

	return 0;

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

Re: 複素数の演算なのですが・・・

#2

投稿記事 by box » 12年前

ダン さんが書きました:

コード:

  double  a, b;    
  double  c, d;    
	scanf( "%d %d", &a,&b );
	scanf( "%d %d",&c,&d ); // Z2の入力
double型の変数に値を入れようとしているのに、
書式文字列が %d で本当に正しいでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ダン

Re: 複素数の演算なのですが・・・

#3

投稿記事 by ダン » 12年前

アドバイスありがとうございます。
まったく意識がdouble型ということに向いてませんでした・・・
直してみると正しく起動できました。
有難うございました!

かずま

Re: 複素数の演算なのですが・・・

#4

投稿記事 by かずま » 12年前

ダン さんが書きました:

コード:

	/*	乗算 Z3=Z1*Z2 */
	x=a*c;
	y=b*d;
(a + b*i) * (c + d*i) = (a*c - b*d) + (a*d + b*c)*i = x + y*i

x = a*c - b*d
y = a*d - b*c

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: 複素数の演算なのですが・・・

#5

投稿記事 by たかぎ » 12年前

「std::complex<double>を使えばよいのに」と考えるのは私だけでしょうか?

閉鎖

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