
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;
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
念の為もう一度確認するけど, フォーマットは本当にそれでいい? 虚部が i の前にあったりしない? 実装上そっちの方が実は簡単なんだけど....
ま, いずれにしてもフォーマットが決まっていれば努力と根性だけど.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
printf による16進表示について
-
C言語で複数列のデータを1列の...
-
#pragma warning(disable: 4996...
-
型によらないCSVファイルの読み...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
「Aに対するBの割合」と「Aに対...
-
C言語の型による処理速度の違い
-
有効数字について 以前質問をし...
-
正の数aは4の倍数で、7でわると...
-
(C言語)めちゃくちゃな値にな...
-
なぜ、C++の標準ヘッダをインク...
-
2曲同時再生するにはどうした...
-
C言語の二分法のプログラムにつ...
-
c++でテンプレートのコードでわ...
-
【C++】関数ポインタの使い方
-
比較回数と交換回数表示について
-
関数ポインタについて
-
エラー 添字が付けられた値が、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
【C言語】全角文字の配列を、全...
-
#defineが使用するメモリ領域に...
-
エラーについて質問です。
-
printf による16進表示について
-
空白を含んだ文字列がうまく格...
-
プログラミングの授業の課題です
-
csvファイルの読み取り
-
Cプログラムについて
-
strtok
-
矢印キーを押下してコンソール...
-
C言語で複数列のデータを1列の...
-
ポインタと配列
-
構造体メンバの初期化
-
言語Cについて教えていただけま...
-
C++で指定文字列のカウント方法...
-
小数の指数表示
-
VC++でSQLへSELECT文を送ったの...
-
reallocでエラー
-
ファイル
おすすめ情報