- スレ立てるまでもない質問はここで 139匹目
863 :デフォルトの名無しさん[sage]:2014/11/30(日) 00:36:16.43 ID:s9KnSNdW - >>847
fp1やfp2からデータを読み込むときに code1 や code2 は i をインデックスにして使っているだから data1 や data2 も同じように i を使ったほうが分かりやすくね? わざわざ ptr を使う必要がわからん。 あと、最後の if(code1[i]=='\0'){ ってのもダメだな char * と char の比較になってる if(code1[i][0]=='\0') にするとか あとこれが一番でかいけど fp1に無くてfp2にあるデータは反映されないってところかなw もう一個、code3とdata3ってのを作って fp1のデータのループで ・code3に無いcode1を見つけたら登録&数値を代入。 ※ひとつのファイルでcodeの重複がある場合に ・code3にあるcode1を見つけたら破棄(最初のデータのみ有効)、もしくは代入(最後のデータのみ有効)、もしくは数値を加算(両方有効)。 fp2のデータのループで ・code3に無いcode2を見つけたら登録&数値を代入。 ・code3にあるcode2を見つけたら数値を加算。
|
- スレ立てるまでもない質問はここで 139匹目
868 :デフォルトの名無しさん[sage]:2014/11/30(日) 00:45:05.56 ID:s9KnSNdW - >>847
自分だったら 読み込みの段階で一時的に配列に記憶させるのをやめて、 最初から出力用の配列に登録、代入または加算をするようにする。 仕様(特に重複codeが存在する場合の挙動)がよくわからんので、どちらが良いかはなんとも言えないが。 あと出力のcode3がソートされているようにするなら、そのコードも必要だね。
|
- スレ立てるまでもない質問はここで 139匹目
887 :デフォルトの名無しさん[sage]:2014/11/30(日) 18:05:44.56 ID:s9KnSNdW - >>870
・38行目からのループ (配列確保時に初期化していることが前提だが) このやり方だと、code3[i] は常に0のはず。 これだと、code3[i]は常に0であり、code1[j] との比較では、 j=0 のときで常に真になるので、ファイルの中の先頭のデータのみが延々と書き込まれる問題に。 (引数のi と j を間違えたのかな?) 重複データのどうこうするための処理を入れるなら、 code1を外側、code3を内側のループにして、code1、code3ともにループの最初で値が0だったらループを終了する処理(break;)を入れる。 (ループの判定式に入れてもいいんだけど、習ってる?→ for(i=0; i<50 & code1[i]!=0 ; i++) /* i が50未満、code[i]が0以外ならループの処理を実行する。 */ ) 48行目のループでも、code2が0だったらループを終了する方法をとったほうが良いよ。
|
- スレ立てるまでもない質問はここで 139匹目
891 :デフォルトの名無しさん[sage]:2014/11/30(日) 18:24:49.69 ID:s9KnSNdW - いや、そもそも、
for(i=0; i<50 && code1[i]!=0 ; i++) の書き間違いだったりする
|
- スレ立てるまでもない質問はここで 139匹目
892 :デフォルトの名無しさん[sage]:2014/11/30(日) 18:26:52.62 ID:s9KnSNdW - j=iだったのか
見てなかった
|
- スレ立てるまでもない質問はここで 139匹目
903 :デフォルトの名無しさん[sage]:2014/11/30(日) 23:27:41.03 ID:s9KnSNdW - せめてっていうか "" と '\0' は別ものだぞ
|