- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最大値のみレコードを抽出する方法)
最大値のみレコードを抽出する方法
このQ&Aのポイント
- 個数が最大値であるレコードを抽出して、新しいCSVファイルに保存する方法をご教示ください。
- in.csvから個数が最大値であるレコードをピックアップして、out.csvに出力したいと考えています。
- in.csvを構造体に代入し、個数が一つ前のデータより大きい場合はデータを上書きし、小さい場合は代入しない方法を検討しています。他にも効率がよい方法があれば、教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
配列の個数は決めうちにしないでVectorなどを使えばスマートですが、 間単に作るのであれば処理はこんな感じでしょうか。 ■構造体の準備 構造体の配列を作る(例えば100個)。 全部の構造体は、品名と産地をNULLとか空文字で初期化しておく(未使用の状態にする)。 ■CSVを読み終わるまで繰り返す CSVを1行読む if(CSVの品名,産地が同じ構造体があるか){ if(構造体の個数<CSVの個数){ 構造体の個数 = CSVの個数; } } else { 未使用の構造体に、CSVの品名,産地,個数を代入 } ■CSVを読み終わったら 構造体の配列をCSVとして出力。
その他の回答 (2)
- burroughs6
- ベストアンサー率76% (29/38)
回答No.2
失礼しました。 >りんご 青森 4 を見落としてました。 ソートされていないようなので、品名と産地をキーにしたソートが必要 ですね。 ソートを使わないのであれば、品名と産地ごとの構造体が必要です。
- burroughs6
- ベストアンサー率76% (29/38)
回答No.1
>(※in.csvのデータは、ソートされていません。) 品名と産地でソートされているのですか? >in.csvを1行ずつ構造体に代入して、 代入する際に、品名と産地が同じかどうかのチェックが必要ですね。
お礼
ありがとうございます。 >ソートを使わないのであれば、品名と産地ごとの構造体が必要です。 という事は、例えば、品名と産地の組み合わせが、全部で、100通りあれば、その数だけ、構造体を用意する必要があるという考え方でよろしいですよね。そうなると、構造体も配列にした方がよさそうですね。 そして、その構造体ごとで、STLのmax()をつかって、個数の最大値を調べて、個数が最大値のものをCSVに出力するという考え方で実現できますでしょうか。