• ベストアンサー

プログラミング初心者です。CSVファイルのデータ編集がうまくできません。

学校の課題が全く進まなくて困ってます・・・ 問題:「販売日」,「顧客名」,「商品名」,「単価」,「数量」のデータがコンマ区切りで記述されているCSV ファイルが与えられたとする. そこで,以下のことを実行するプログラムを作成せよ. 1. CSV ファイルのデータに加え,各行に「売上金額」のデータを追加したファイルを出力する.  なお,「売上金額」は「単価×数量」である. 2.顧客別の売上金額を記述したCSVファイルを出力する.なお,売上金額の降順でデータを記述すること. 3. 商品別の売上金額を記述したCSVファイルを出力する.なお,売上金額の降順でデータを記述すること. 4. 商品別の販売数を記述したCSVファイルを出力する.なお,販売数の昇順にデータを記述すること. 与えられたCSVファイルの一部↓ 販売日,顧客名,商品名,単価,数量 2006/4/1,菓子工房 春,季節のアイスセット,1800 ,5 2006/4/1,有)井上製パン,ゼリーセット,1500 ,3 2006/4/4,グルメット下条,クッキー詰め合わせ,2300 ,2 2006/4/4,北野フルーツプラザ,フローズンフルーツ,2200 ,6 2006/4/5,TEA LON,紅茶ケーキ,1000 ,2 2006/4/5,北野フルーツプラザ,フローズンフルーツ,2200 ,1 2006/4/8,有)井上製パン,シナモンパンセット,900 ,4 ・・・ 1はなんとかクリアできたのですが、2以降で完全に詰まりました。 顧客別(商品別)に売上をまとめる方法が思いつかないんです。 どなたか知恵を貸していただけないでしょうか・・・

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

  • ベストアンサー
回答No.1

自分だったら、顧客(商品)をキーとして、CSVの行を値とするハッシュ(連想配列ともいう)を使って実装すると思います。まずは値の昇順、降順を考えずにCSVの行になるような形式で追加だけしていって、出力するときにsplitしてsortして、出力します。 というのでどうでしょうか?

kapperxxxx
質問者

お礼

お礼遅れて申し訳ありません、おかげさまでどうにか提出に漕ぎ着けることができました! 取っ掛かりすら見いだせていなかったので本当に助かりました。ありがとうございました。

その他の回答 (1)

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.2

while等で一行毎に読み込むのはOKですね? 次は各行を配列に入れます。 顧客名をキーとして、売上(単価×数量)をハッシュに入れましょう。 最後はソートして、各キーとハッシュ値を出力しておしまいです。 $a<=>$b ←こんなのに見覚えがあればソートも上手く行くと思います。

kapperxxxx
質問者

お礼

お礼遅れて申し訳ありません。「顧客名をキーとしたハッシュ」というアドバイスをもとになんとか解決できました。本当にありがとうございます。