• ベストアンサー

VisualC#でデータの読み込み

VisualC#の超初心者でプログラミングも初めてです。 文字や数値(整数や小数点あり)の大量データ(テキストファイル)から最大値や最小値等を求めるプログラムを作りたいのですが、まずデータの読み込みがよくわかりません。 Cの本やVisualC#の本を買って読んでいますが、いまひとつ理解できません。 また、CとC#の違いもよくわかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

#1さんの回答のように StreamReaderでファイルを開いて処理といった格好になるでしょう 例 # データファイルの中の各データのセパレータが1つの半角スペース # だと仮定してコーディングしてあります  // 各変数の宣言  ArrayList lstF = new ArrayList();  ArrayList lstH = new ArrayList();  ArrayList lstD = new ArrayList();  string sBuf;  string[] sData;  // ファイルのオープン  TextReader rd = new StreamReader("ファイル名")  // 終端まで繰り返し  while ( rd.Peek() <> -1 )  {   // 1行読み込み   sBuf = rd.ReadLine();   // データの分解   sData = sbuf.Split( new char[] { ' ' } );   // 各データの格納   lstF.Add( double.Parse(sData[4]) );   lstH.Add( double.Parse(sData[5]) );   lstD.Add( double.Parse(sData[6]) );  }  // ファイルをクローズ  rd.Close();  // 要素の最大数を取得  int nItem = LstF.Count - 1;  // 降順に並べ替え  lstF.Sort();  lstH.Sort();  lstD.Sort();  // 各項目の最大値 最小値を表示  Console.WriteLine("MaxF{0} MinF{1}", lstF[0], lstF[nItem] );  Console.WriteLine("MaxH{0} MinH{1}", lstH[0], lstH[nItem] );  Console.WriteLine("MaxD{0} MinD{1}", lstD[0], lstD[nItem] ); # 字下げは全角スペースです # 潮位にの最大最小の求め方不明につき計算省略

imoko0701
質問者

お礼

ありがとうございました。 大変参考になりました。 なかなか、本を読んで独学でやっていますが、難しいです。 他にもやりたいことはたくさんあるのですが、挫折しそうになりましたが、また少し明るくなりました。

imoko0701
質問者

補足

データがタブ区切りの時の読み込みは、どのようにしたらいいのか、よくわかりません。そのデータの中味は文字列もあれば、整数もあれば、実数もあり、いろいろです。

その他の回答 (1)

  • nep0707
  • ベストアンサー率39% (902/2308)
回答No.1

個人的には、ことC#に関しては本よりインターネットの情報のほうが有用なことが多いような気がします。 MSの出しているハンドブックくらいなら本でも役に立つんでしょうけど、あきれるほど高いですし(2万円以上しなかったかな)。 >まずデータの読み込みがよくわかりません。 テキストファイルから情報を読み取りたい、ということですよね? 具体的にどういうことを考えていてどこまで出来てどこで躓いているのかわからないので 一般論的な回答になりますが、このあたりが参考になればと思います。 http://msdn2.microsoft.com/ja-jp/library/system.io.streamreader(VS.80).aspx これ以外にも、.NETプログラミングをやるなら、 MSDNは何かにつけて使うことの多いサイトだと思いますよ。 >また、CとC#の違いもよくわかりません。 CとC#は全く別の言語と理解するのがいいと思います。

imoko0701
質問者

お礼

即答ありがとうございます。 具体的な内容ですが、たとえば以下のようなファイルから最大周期、最大潮位、最小周期、最小潮位などを求めたいと思います。 年月日時  周期    波高    水深         1997 619 2   0.310  2.800  113.310 1997 619 3  0.190  2.560  135.870 1997 619 4   0.160  1.960  131.910 1997 619 5  0.170  1.670  114.010 1997 619 6  0.180  1.650  109.480 1997 619 7  0.190  1.690  109.750 1997 619 8  0.190  1.730  111.060 1997 619 9  0.190  1.750  112.750 1997 61910  0.200  1.770  114.100 以下データ数としては大量にあるとします。 このようなデータを読み込んで処理をしたいと思っています。 >CとC#は全く別の言語と理解するのがいいと思います。 ということは、VisualC#で作成したいと思っていますが、C言語の本やC言語のHPを見ても参考にはならないということでしょうか。 重ね重ねよろしくお願いします。

関連するQ&A

  • VisualC++

    VisualC++.net2003でのプログラムを読めと言われてただ今勉強中なのですが、VisualC++.net2003を勉強するのにVisualC++6.0を解説したサイトもしくは本で勉強してもいいものなんでしょうか。 又、Win32プログラミングとはどういったものなんでしょうか? 当方、C言語、C++もあまり自信が無いのですが、なにか参考になるVisualC++.net2003の解説サイト、もしくは本はないでしょうか? 幾つか探したのですが、やはりここでもVisualC++6.0で解説されているサイトがあり、どうしたものかと悩んでいます。

  • テキストデータの読み込みについて

    C言語のテキストデータの読み込みについてです。 C言語のプログラムについてです。 2444,1114,2807, 1984,2845,2086, 658.1,-1564.0,1239.7, -102.0,958.4,123.1, 12.7,6.0,82.7 2439,1110,2802, 1973,2865,2108, 658.8,-1563.7,1239.6, -102.0,957.1,121.9, 12.8,6.0,82.7 2441,1106,2806, 1967,2888,2124, 659.4,-1563.5,1239.5, -102.2,956.4,121.0, 12.8,6.1,82.8 2440,1109,2808, 1964,2896,2127, 660.0,-1563.3,1239.4, -102.7,956.2,120.7, 12.8,6.1,82.8 2441,1112,2807, 1981,2894,2120, 660.6,-1563.0,1239.4, -103.3,956.2,120.1, 12.8,6.1,82.8                                       ↑ 上の様なカンマとスペースで15個に区切られているtxtファイルがあるのですが、このtxtデータの10コ目と11コ目をを計算で使いたく、取り出したいと考えているのですがscanfを使いどのように取り出すことが出来るのか、また取り出したデータから数値を引くことを教えて頂きたいです。 つまり -102.0   958.4 -102.0   957.1 -102.2 と 956.4 -102.7   956.2 -103.3   956.2,             を取り出して計算に使いたいです。 そして1番上の数値だと、 -102.0と958.4 を読み込み、例えばそれぞれ100を引いた値を配列に入れたいです。 -102.0と958.4 → -202.0 と 858.4 のように取り出したいです。 教えて頂きたいです。お願いします。

  • VisualC++について

    私はプログラミング初心者です。いっさいプログラミングはしたことがありません。 そんな私に友人からVisualC++でゲームをつくらないかという誘いを受けました。 でもまったくわからないので何が必要なのか?初心者向けの本でわかりやすい本はないか知りたいのです。どうか教えていただけないでしょうか? また、学校の先生にC++をやるんだったらLinuxがいいと薦めめられたのですがLinuxでWindows用のゲームは作れるのですか?

  • textデータからの読み込み

    C#でプログラミングをしています。 textデータ→ファイル名はsample このデータには、「ノート」「本」「消しゴム」 とか単語がいくつか書かれているんですが、これを読んできて配列に入れようとしたいんです。 そこで、 string[] sample_record = File.ReadAllLines("E:\\sample\\sample.txt", System.Text.Encoding.GetEncoding("Shift_JIS")); というプログラムを書きました。そしたら、実際にsample_recordに入っているのは、文字化けしたのが入ってしまいます。 stringでしているのに、そのまま単語が読めず文字化けするのは何故ですか??

  • VisualC++.NETかVisualC#.NETか

    こんにちは。 今、VisualBasic6でプログラムをしています。今回、VBを卒業してCを勉強したいと思っているのですが、VisualC++.NETとVisualC#.NETの違いがいまいち分かりません。というか、.NETという物自体が分かっていない初心者です。VB6ではランタイムが必要でしたが、この2つではどうなのでしょうか?ちなみにVB歴約2年です。 .NETの基本的なことから教えていただけると非常に助かります。 回答よろしくお願いします。

  • VisualC++でRS232C経由のデータの送受信方法

    仕事でVisualC++でプログラムを作っているのですが、VC++は初心者なので解からない事がいっぱいです。 今作っているプログラムは、VisualC++でRS232Cを使って送られてくるデータをダイアログのエディットボックスに表示するというプログラムなんですけど、どうやってデータを受取るのかまたそのデータをどうやって表示するのかがまったく解からない状態です。 解かる方は教えて下さい。 よろしくお願いします。

  • アクセスのデータ型。数値型についてお聞きしたいのですが・・・

    アクセスのデータ型。「数値型」ですが、「フィールドサイズ」に (1)バイト型(0~255の範囲。小数点以下の数値は扱えない) (2)整数型(-32,768~32,767の範囲。小数点以下は扱えない) (3)長整数型(-2,147,483,648~2,147,483,647の範囲。小数点以下は扱えない) (4)単精度浮動小数点型(-3.402823×10^38~3.402823×10^38の範囲。             小数点以下の数値が扱える) (5)倍精度浮動小数点型(-1.79769313486231×10^308~-1.79769313486231×            10^308の範囲。少数点以下の数値が扱える) (6)十進型(-10^28-1~10^28-1の範囲。小数点以下の数値が扱える) と6種類決められますが、それぞれの「選び方の違い」と「その理由」を 教えてください。 たとえば、(1)~(3)くらいなら分かります。 扱える数値の桁数が違うということですよね?で、(1)~(3)を選ぶ時と(4)~(6)を 選ぶときで大きな違いというと、「小数点以下の数値が扱えるかどうか」 ですよね?そういう認識であっているか・・・ということと、上記の(1)~(6)を 「選び分ける必要がある場合」というのを教えてください。 なぜ、このような6種類に分かれているのか、人に説明しないとなりません。 よろしくお願い致します。m(_ _)m

  • Accessのデータ型について

    Access2002のデータ型について教えてください。 (1)テキスト型とメモ型の違いですが255文字まではテキスト型でそれ以上はメモ型になると聞きました。それなら全てメモ型にすればいいと思ったのですが、テキスト型の方にする意味はどうしてでしょうか?メモ型よりもメリットがあるからでしょうか?テキスト型、メモ型の違いを教えてください。 (2)又数値型のバイト型と整数型、長整数型についても同じ疑問です。全て長整数型にしておけばいいと思ったのですが、バイト型にしなくてはいけない理由はなんでしょうか?違いを教えてください。

  • VisualC++

    現在VisualC++6.0を使いC++言語を勉強しています。 あるテキストファイルを読み込んでそのファイルの中の文字列を 数字と英文字を切り分けて一行ずつ表示するプログラムを作りたいのですがどうやって切り分ければよいのかわかりません。(テキストファイルは英文字と数字のみで構成されていることを前提) 一行ずつ表示するのはfgets関数を使えばいいと思うのですが 切り分けの作業がどうも上手いこといきません。 一文字ずつ読み込んでその文字がA~Zの中にあれば 切り分ければと思い試してるのですが上手いこといきません。。 教えてください。

  • エクセルで数値の桁数を一定の法則で統一したい

    E列にA~D列のデータから計算された数値が並んでいます。 たとえば E1:9.9 E2:86.08695652 E3:212.8571429 E4:1158.13953488372 これらを E1:9.90 (整数1桁の場合は四捨五入して小数2桁まで)       1未満の数値も小数2桁で(例、0.96) E2:86.1 (整数2桁の場合は四捨五入して小数1桁まで) E3:213  (整数3桁の場合は四捨五入して小数カット) E4:1158 (整数4桁の場合は四捨五入して小数カット) 上記の法則で見やすく整理したいのです。 整数4桁が最大です。大量のデータをまとめて整理出来る方法は ないでしょうか?よろしくお願いします。

専門家に質問してみよう