トップページ > プログラム > 2014年11月30日 > s9KnSNdW

書き込み順位&時間帯一覧

15 位/260 ID中時間01234567891011121314151617181920212223Total
書き込み数2000000000000000003000016



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
スレ立てるまでもない質問はここで 139匹目

書き込みレス一覧

スレ立てるまでもない質問はここで 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' は別ものだぞ


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。