• 締切済み

ファイル入出力

こんにちわ。私は大量のデータ読み込みそのを離散化させて0か1と して出力したいと思います。私は以下の流れでプログラムを組みました。 (1)stepとf1~f11、レコード数の2元配列を組む (2)データからf1からf11のレコード最大値と最小値を見つける (3)データの値-最小値/最大値-最小値で規格化 (4)規格化の値で0.5以上を1それ以外を0と出力 一応この流れで作ったのですが上手くいきません。作ったプログラム とデータを添付します。よろしくおねがいします。

みんなの回答

回答No.1

こんばんは. プログラムとデータが見当たりませんが… 以下の内容について補足を行ってください. (1)「大量の」の数量を概算でいいので記述してください. (2) 配列はmalloc()等で確保しているのか記述してください. (3)「上手くいかない」のはコンパイルエラーのためか実行時エラーのためか明確にしてください. (2)を使わない方法だと(1)の数量によっては, データを全て2次元配列に記憶するのが適切でない場合があります. この場合はデータベースソフトウェアを利用するのでなければ, 規格化のために一旦ファイルを走査してから, 再びファイルの先頭に戻って逐次的にデータを処理してゆくことになるでしょう.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイルの入出力

    学生です。まだ習い始めて間もないのですがよろしくお願いします。 27.000000,207.000000,116.000000 48.000000,90.000000,116.000000 48.000000,90.000000,116.000000       : テキストの中にある上記のカンマ区切りのデータをfscanfで読み込んで違うテキストに同じ数値を出力したいのですがうまく出力できません。 0.000000,0.000000,+NAN 0.000000,0.000000,+NAN 0.000000,0.000000,+NAN      : 数値は上記のように出力されてしまいます。 プログラムは以下の通りです。 main() { FILE *fp; double m[30][3]; int i,j; double e1,e2,e3; fp=fopen("data00.txt","r"); for(i=0;i<30;i++){  fscanf(fp,"%f,%f,%f\n",&e1,&e2,&e3);  m[i][0]=e1;  m[i][1]=e2;  m[i][2]=e3; } fclose(fp); fp=fopen("data01.txt","w"); for(j=0;j<30;j++){  fprintf(fp,"%f,%f,%f\n",m[j][0],m[j][1],m[j][2]); } fclose(fp); getch(); exit(0); } データの読み込みがうまくいってないのだと思いますがわかりません。 間違いがあったならご指摘お願いします。

  • C♯の配列について

    C♯でプログラムを作っているのですが、配列の要素数の最大値と最小値の求め方がわかりません。配列の値の最大値の求め方は調べれば出てくるのですが、要素数の最大値等は調べてもわかりませんでした。 例えば下記のような配列があった場合 int[,,] a =new int[100,100,100] a[2,3,6]=1 a[4,5,9]=1 a[13,46,79]=1 a[8,15,45]=1 a[1,33,68]=1 それぞれの要素数の最小値1、3、6、最大値13、46、79は どのようにプログラムで求めればいいのでしょうか? よろしくお願いします。

  • プログラミングについて質問です。

    キーボードから配列に代入された10個の実数データの平均,最大値,最小値を求め,表示するソースプログラムを作成したいです.また、平均値,最大値,最小値はそれぞれを計算する関数を作り,求めたいです。 このプログラムをわかりやすいように簡単なコードで作ってくれませんか?

  • 両替プログラムなど

    学校の課題で出たプログラムなのですが、いまいちわかりません。 (1)1000円を500円、100円、50円、10円を使って両替する全てのパターンを出力するプログラム。 (2)整数を入力し、上位の桁から順に各桁の英語読みを出力するプログラム。配列使用。 (3)0~100までの任意の値を複数入力して、入力された値の個数、平均値、最大値、最小値を出力するプログラム。 (2)については、315と入力するとthree one fiveと出力されるプログラムです。 (3)については、複数入力と入力された値の個数の部分がわかりません。 コードを全て記述して教えてくれればうれしいですが、考え方、ヒントだけでも結構です。 非常に困っています。助けてください。

  • 一つのテキストから独立にそれぞれの最大値を求めるプログラム

    こんにちわ。c言語の質問です。  f1 f2 f3 f4 10 2.434 4.234 3.242 4.566 20 2.767 4.756 3.666 4.867 30 2.534 4.555 3.777 4.555 40 2.777 5.355 4.244 5.424 とうtextfileがあり、10~40はステップ数、小数点の値はf1~f4の数値を表しています。このtextfileを読み込んでf1~f4の最大値をそれぞれ独立に求めるプログラムを作りたいのですが、1つのテキストから独立にもとめられるか、またステップ数の10~40を無視しれ最大値を求められるかがわからなくプログラムできません。よろしくお願いします。

  • 配列と反復の組み合わせ、ファイルの入出力

    C言語初心者です。 どうしても分からないので投稿しました。 たとえば、 ==読み込むファイル== x 2 3 5 7 9 ・・・ 17 ==== という、xの値が10通りある読み込むファイルがあるとします。 このファイルを読み込み、y=a*xという関数でそれぞれのxに対するyの値を出力したいのです。またこの時、aの値を1~10と変化させたときのyの値も出力したいのです。 出力ファイルのイメージは、 ==出力ファイル== (a_1,x_1)(a_1,x_2)・・・(a_1,x_10) (a_2,x_1)(a_2,x_2)・・・(a_2,x_10) (a_3,x_1)(a_3,x_2)・・・(a_3,x_10)       ・・・       ・・・       ・・・ (a_9,x_1)(a_9,x_2)・・・(a_9,x_10) (a_10,x_1)(a_10,x_2)・・・(a_10,x_10) です。 反復、ファイル入出力、二次元配列を用いて作るのだと思うのですが、うまく作ることができません。 ファイル入出力などなしで、xの値を一つ指定し、aの値を1~10まで変化させたときのyの値を表示させるプログラムを作ったのですが、これもまだうまく動きません。 ご教授してもらえたらとても助かります。 よろしくお願いします。 #include <stdio.h> void main(){ double y,a,x; int i; printf("x=\n"); scanf("%lf",&x); for(a=0;a<10;a++){ a=a++; y=a*x; printf("y=%lf\n",y); } }

  • C言語でファイルの入出力

    C言語についての質問です。 統計学のシュミレータを作っていまして 大量の数値データ(1000程度)のデータを入力する必要があるのですが scanfなどで入力要求するには、数に無理がありますので 外部テキストファイルからプログラムに読み込みたいのですが 方法が分かりません。 希望としては、まずテキストファイルに 1000個の数値データを入力しておいて (数値データのみをコンマとか改行で区切ったものをあらかじめ作成しておく) それを1000個の配列 int data[1000]に 順番にインポートできるようにしたいです。 データ数は1000個で固定、すべてint型でOKです。 数値として処理したいので 文字列としてインポートしてしまうのはダメです。 あくまでint型の数値として考えてください。 回答よろしくお願いします。

  • ファイルの入出力2

    指定したフォルダ内にあるcsvファイルのデータを 指定したhtmlファイルに出力するプログラムを書いているのですが、 下記のままだとcsvファイルにあるすべてのデータをとってきてしまいます。実現させたいことは「指定したフォルダ内にあるcsvファイル2行目のデータだけファイル出力する」というものです。 どなたかご協力お願いします。 #!/usr/bin/perl #--------------------------------------------------------------# # ディレクトリを開く #--------------------------------------------------------------# opendir(DIR,"test/"); #--------------------------------------------------------------# # 出力ファイル名を指定 #--------------------------------------------------------------# $dest = "test.html"; open (OUT, ">$dest") or die "$!"; #--------------------------------------------------------------# # 出力ファイルにhtmlを出力 #--------------------------------------------------------------# print OUT '<html> <head> <title>無題ドキュメント</title> <style type="text/css"> <!--.style1 {color: #FFFFFF}--> </style> </head> <body> <table width="419" height="105" border="0" cellpadding="0" cellspacing="0"> <tr> <th bgcolor="#000000"><span class="style1">名前</span></th> <th bgcolor="#000000"><span class="style1">住所</span></th> <th bgcolor="#000000"><span class="style1">性別</span></th> </tr>'; #--------------------------------------------------------------# # ディレクトリにあるファイル名を取得 #--------------------------------------------------------------# while ($filename = readdir(DIR)) { # ディレクトリにあるファイルパスを取得 $path = "test/$filename"; if(-f $path) { # ファイルオープン open (IN, $path) or die "$!"; while (<IN>) { # カンマ区切りでデータを取得&改行削除 chomp(@data = split(/,/, $_)); print OUT "<tr>\n"; # 各行の3つのカンマ区切りデータを取得 print OUT "<th bgcolor=\"#666666\">",$data[0],"</th>\n<td>",$data[1],"</td>\n<td>",$data[2],"</td>\n"; print OUT "</tr>\n"; } close(IN); } } #--------------------------------------------------------------# # ディレクトリを閉じる #--------------------------------------------------------------# closedir(DIR); print OUT "</table> </body> </html>"; #--------------------------------------------------------------# # ファイルを閉じる #--------------------------------------------------------------# close(OUT);

    • ベストアンサー
    • Perl
  • 配列数式を用いて、最小値を表示させたい

    配列数式について教えてください。 先回、こちらで質問させていただいて、なんとか理解できつつあります。回答していただきました方、どうもありがとうございました。 一応の理解はできたのですが、応用しようとしたところ、うまく数値が表示されてこないため、再度質問させていただきたいと思います。どうかよろしくお願いいたします。 表を添付いたしましたが、1月2日から4日までで、時間ごとにその最大値と最小値が表示されています。 今回、1月2日に合致したデータで、配列数式を用いて、その最大値と最小値を表示させようとしました。 その結果、最大値はちゃんと表示されるにも関わらず、最小値の値が「0」の表示となってしまいます。 最大値の式は MAX((A2:A10="1月2日"*1)*C2:C10) 最小値の式は MIN((A2:A10="1月2日"*1)*D2:D10) としています。 どこがまちがっているのでしょうか? ご教授、よろしくお願いいたしますm(_ _)m

  • 数値データの規格化

    数値データの規格化の方法を教えてください 最大値がXmax,最小値がXminであるN個のデータ群 Xn(n=1,2,3・・・)があります. このデータを最大値がA,最小値がBとなるように規格化したいです. 元のデータ群Xnで最大値を1,最小値を0となるような規格化は分かるのですが, そこから,最大値をA,最小値をBとなるように変換する方法が分かりません. よろしくお願い致します.