下記の通りに、品名、産地、個数が書かれている
in.csvから、個数が最大値であるレコードをピックアップして、
out.csvに出力したいと考えてます。
どのようにしたら、可能でしょうか。
(※in.csvのデータは、ソートされていません。)

私は、in.csvを1行ずつ構造体に代入して、
個数が一つ前のデータより、大きい場合は、
データを上書きする。小さい場合は、代入しない
という方法で、out.csvが作れるのではないかと
考えてますが、他にも効率がよい方法がありましたら、
教えてください。

========in.csv===========
品名  産地  個数
りんご 青森  2
りんご 青森  3
もも  山梨  5
もも  山梨  6
もも  山梨  7
かき  和歌山 8
かき  和歌山 5
かき  和歌山 3
りんご 青森  4
========================


========out.csv=========
品名  産地  個数
りんご 青森  4
もも  山梨  7
かき  和歌山 8
========================

以上です。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

配列の個数は決めうちにしないでVectorなどを使えばスマートですが、


間単に作るのであれば処理はこんな感じでしょうか。
■構造体の準備
構造体の配列を作る(例えば100個)。
全部の構造体は、品名と産地をNULLとか空文字で初期化しておく(未使用の状態にする)。
■CSVを読み終わるまで繰り返す
CSVを1行読む
if(CSVの品名,産地が同じ構造体があるか){
if(構造体の個数<CSVの個数){
構造体の個数 = CSVの個数;
}
} else {
未使用の構造体に、CSVの品名,産地,個数を代入
}
■CSVを読み終わったら
構造体の配列をCSVとして出力。
    • good
    • 0

失礼しました。


>りんご 青森  4
を見落としてました。

ソートされていないようなので、品名と産地をキーにしたソートが必要
ですね。
ソートを使わないのであれば、品名と産地ごとの構造体が必要です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>ソートを使わないのであれば、品名と産地ごとの構造体が必要です。
という事は、例えば、品名と産地の組み合わせが、全部で、100通りあれば、その数だけ、構造体を用意する必要があるという考え方でよろしいですよね。そうなると、構造体も配列にした方がよさそうですね。

そして、その構造体ごとで、STLのmax()をつかって、個数の最大値を調べて、個数が最大値のものをCSVに出力するという考え方で実現できますでしょうか。

お礼日時:2009/05/25 22:43

>(※in.csvのデータは、ソートされていません。


品名と産地でソートされているのですか?

>in.csvを1行ずつ構造体に代入して、
代入する際に、品名と産地が同じかどうかのチェックが必要ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング