C言語でファイルから複素数の値を読み込んで表示させるプログラムを作って
C言語でファイルから複素数の値を読み込んで表示させるプログラムを作っています。
扱う値が実数のみの場合に関しては問題ないのですが、
複素数を読み込む時には、実数のみの場合や、虚数のみの場合もあり、
どう読み込んでいいか分からず、アドバイスを戴きたいと考えております。
それ以外のデータの取り扱い自体は問題ないと思います。
下は実数の値を読み込むプログラムとデータセット、
それを拡張した複素数の値を読み込むプログラムとデータセットになっております。
アドバイス、よろしくお願いいたします。
--------------------------------------------------------------------------------
/*データセット sample.dat*/
4 3.5 -2 9
12 37.8 65.4 0.4
79.5 3 23.4 5.3
--------------------------------------------------------------------------------
/*プログラム本体 read.c*/
#include <stdio.h>
#include <stdlib.h>
#define LOW 3
#define COLUMN 4
int main(void){
int i,j;
double x[LOW][COLUMN];
if((fp = fopen("sample.dat","r"))==NULL){
printf("The file is not found. : sample.dat \n");
exit(1);
}
for(i=0;i<LOW;i++){
for(j=0;j<COLUMN;j++){
fscanf(fp,"%lf",&x[i][j]);
}
}
for(i=0;i<LOW;i++){
for(j=0;j<COLUMN;j++){
printf("%lf\n",x[i][j]);
}
}
return 0;
}
--------------------------------------------------------------------------------
/*データセット sample_C.dat*/
4+i i -2 9+i
12 37.8-i 65.4i 0.4+i
79.5 3+i 23.4 5.3
--------------------------------------------------------------------------------
/*プログラム本体 read_C.c*/
#include <stdio.h>
#include <stdlib.h>
#define LOW 3
#define COLUMN 4
typedef struct{
double re;
double im;
}C_double;
int main(void){
int i,j;
C_double x[LOW][COLUMN];
if((fp = fopen("sample_C.dat","r"))==NULL){
printf("The file is not found. : sample_C.dat \n");
exit(1);
}
/*改良したい読み込み部分*/
for(i=0;i<LOW;i++){
for(j=0;j<COLUMN;j++){
fscanf(fp,"%lf",&x[i][j].re);
fscanf(fp,"%lf",&x[i][j].im);
}
}
for(i=0;i<LOW;i++){
for(j=0;j<COLUMN;j++){
if(x[i][j].re!=0){
if(x[i][j].im!=0){
printf("x[%d][%d]=%lf+%lfi\n",i,j,x[i][j].re,x[i][j].im);
}
else{
printf("x[%d][%d]=%lf\n",i,j,x[i][j].re);
}
}
else{
if(x[i][j].im!=0){
printf("x[%d][%d]=%lfi\n",i,j,x[i][j].im);
}
else{
printf("x[%d][%d]=0\n",i,j);
}
}
}
}
return 0;
}
お礼
ありがとうございます☆ いい参考になりました!!!