1 :
デフォルトの名無しさん :
04/03/29 23:12 ちょっと暇になったから、デバッグしてやるぜ。 不安なコードとかあったら、投げてみ。 色々指摘してあげよう。 第3者の目ってのはバグの発見に非常に役立つと思われ。 つーわけで、C/C++,C#でヨロ その他のコードでも他の人が見てくれるかもよ。
2 :
デフォルトの名無しさん :04/03/29 23:16
任せられん
3 :
デフォルトの名無しさん :04/03/29 23:21
int main(void){ printf("Hello World") } あっているとおもうんですが なぜかえらーがでます!!!! げいいんがわかりません 教えてください!!!!!!!!!
>>1 はDEBUGコマンドをつかったことがないのではないだらうか
>>3 #include <stdio.h>
int main(){
printf("Hello World");
return 0;
}
>>5 もう一行改行すべきだな。細かいことだけど。
>>5 でコンパイルしたら、コンパイラに怒られました!
ちなみにCygwin上のgccです。教えてください!それとも
>>1 さんはBCCしかつかったことがないんですか?
9 :
デフォルトの名無しさん :04/03/30 01:18
ちゃんと拡張子.cにした? だめなら #include <iostream> int main() { std::cout << "Hello World\n"; return (0); } これは? .cppね。
>>8 FreeBSDのgccとVC++を使っておるぞ
BCCなんて使ってない。
11 :
デフォルトの名無しさん :04/03/30 17:11
C の初心者です。事情があって、ロックやアンロックを使わずに相互排他をやらなくてはならなくなったので、 その為の関数を作ったのですが、先輩から「バグがある」と言われてしまいました。 どこが悪いのか検討もつきません。教えてください。 int flag1 = 0, flag2 = 0, turn = 1; void a(void) { while (1){ for (flag1 = 1, turn = 2;flag2 && turn == 2;) ; critical_area_a(); flag1 = 0; } } void b(void) { while (1){ for (flag2 = 1, turn = 1;flag1 && turn == 1;) ; critical_area_b(); flag2 = 0; } }
int main() { return 0; } これだけなのにうごきません。
>>11 一例として、a()を呼び出し、直後にb()が呼び出されたとき、
flag1=1;
flag2=1;
turn=1;
turn=2;
の順に実行されたらどうなりますか?
>>13 a は flag2 && turn == 2 でブロック。
b は flag1 && turn == 1 から抜ける。
↓
critical_area_b();
flag2 = 0; //b
↓
a は flag2 && turn == 2 から抜ける。
critical_area_a();
flag1 = 0;
でつ。
15 :
デフォルトの名無しさん :04/03/31 00:08
>>11 pertersonのアルゴリズムをやろうとしてんだったら
それで正しいような気がする。ていうかturnの使い方をぎゃくにしろよ。
なんでそんな分かりずらく書くん?
volatileがない
17 :
デフォルトの名無しさん :04/04/02 21:43
頼みたいコードはたくさんあるんだが・・・ ソース公開したくないし・・・w うーむ、迷うなぁw
あてにするな
考えるな 迷うのは心の贅肉 感じるんだ
来た!見た!買った!
21 :
デフォルトの名無しさん :04/04/11 15:53
任せた!(age)
22 :
名無しさん@そうだ選挙に行こう :04/07/11 09:58
ageだな
デバッグはお任せします。 作ることだけに専念したいので。
24 :
デフォルトの名無しさん :04/11/06 08:50:29
ここで質問していいのか分からないんですけど、 Insert キーのプログラムを作りたいんです。 もしInsert on ならカーソルの横文字がの一つ右へ移動してそこに新しい文字を出すみたいな。 例 ABCDEF上に カーソルがCとDの間にあって Bを打つと ABCBDEF (Insert on 時) (Insert off 時) ABCDEF→ABCBEF。 MOV AH,12H INT 16H AND AL,100000000B JZ exit 最初に↑のように打って INSERT KEYがONかOFFかを確かめた後、 どうやってこのプログラムを作ったらいいんでしょうか?
下記のようにコーディングして、テキストファイルを読み込むと、 当然読み込んだデータの末端に余計な改行が入るのですけど、 不要な改行を付加することなく、スマートに テキストファイルを読み込む方法はないでしょうか? Open TextFilePath For Input As #1 Do Until EOF(1) Line Input #1, Temp ReadData = ReadData & Temp & Chr(13) & Chr(10) Loop Close #1 Text1.Text = ReadData
age
28 :
デフォルトの名無しさん :2005/06/30(木) 23:23:03
void data_input(int a); int a_data; int main() { int i,select; for(i=0; i<3; i++) { scanf("%d",&select); data_input(select); } } void data_input(int a) { if(a==1){ scanf("%c",&a_data); return; } return; }
29 :
デフォルトの名無しさん :2005/09/01(木) 19:53:31
30 :
デフォルトの名無しさん :2005/09/01(木) 20:24:14
>>11 while (1) の1は何の1ですか?
31 :
29 :2005/09/01(木) 20:25:28
32 :
デフォルトの名無しさん :2005/09/01(木) 20:28:35
33 :
29 :2005/09/01(木) 20:33:08
>>32 知らんけど省略されてるとこでif()break;でもしてるんじゃない。
34 :
デフォルトの名無しさん :2005/09/01(木) 20:36:35
>>33 それだと、 flag1 = 0; と flag2 = 0; に意味はあるのでしょうか?
35 :
デフォルトの名無しさん :2005/09/01(木) 20:39:07
>>11 for文で何をやりたいのかも分かりません
36 :
29 :2005/09/01(木) 20:49:49
>>35 省略じゃなかった。for文はロック。a()b()はそれぞれ別スレッドから呼んでいるのかな?
37 :
デフォルトの名無しさん :2005/09/01(木) 20:56:45
>>36 ありがとう。他の部分のコードも見てみたいけど、
>>11 氏はいないそうですね。
>>29 > int DofM[13];
いきなり意味不明の略語。しかもpublic。
Day of monthかなんかだと推測はできるが、なぜ13個あるのだろうか?コメントは一切ない。
Init()とSetup()があるのはどういう意味だろう?当然のごとく何の説明もない。
int GetWeek(int y,int m,int d); y,m,dからWeekを取得するらしい。意味がわからない。
void Now(); たぶんこの関数を呼ぶとオブジェクトを現在の時刻に初期化するのだろう。
こういうのってstaticにしてCalender型を返すようにするのが定石だと思うけど違ったっけ?
関数の糞実装に関しては特にコメントしない(読みたくないので)
39 :
29 :2005/09/01(木) 23:09:50
//初期化 void Init() { DofM[0]=0; DofM[1]=31; DofM[2]=28; DofM[3]=31; DofM[4]=30; DofM[5]=31; DofM[6]=30; DofM[7]=31; DofM[8]=31; DofM[9]=30; DofM[10]=31; DofM[11]=30; DofM[12]=31; } こんな風にしてくれないと読みにくいわけよね。
>>39 ・同じ閏判定のコードがあちこちにあってキモイ
・DofMをpublicにする意味は?
・Weekは「曜日」という意味ではないと思うんですが
42 :
29 :2005/09/01(木) 23:33:57
//差は何日か int Calendar::operator-(Calendar& rh) { //省略 //閏チェック if(((ty%4==0)&&(ty%100!=0))||(ty%400==0)){DofM[2]=29;add=366*sgn;} else{DofM[2]=28;add=365*sgn;} //結果の年になったか if(nowy_this==rh.Year)break; else { //1年分加算 sum-=add; nowy_this+=sgn; } } //日数を返す ret=sum+(prgny_this-prgny_rh); //省略 これは出来ました。 //ad日進める void Calendar::operator+=(int ad) { //省略 //なぜかSum2=-1になってしまった sum2=-1;k=1; //省略 これはよく分かりません。
43 :
29 :2005/09/01(木) 23:41:33
>>40 済みません。
>>41 ・DofMをpublicにする意味は?
ありません。
sum2=-1;
なんでだろう?
44 :
29 :2005/09/02(金) 00:02:25
>>41 ・DofMをpublicにする意味は?
あ、一月づつ(壁にかける)カレンダー表示の時に一月の日数が要る。と今思った。
45 :
29 :2005/09/02(金) 02:48:51
すいません、500ファイル、10万行を超えるプログラムが Releseでビルドして実行ときのみ突然止まります。 どうしたら直りますか?
メモリの増設っきゃないだろうね。 それとも一気に500ファイルコンパイルしようとするんじゃなくて 50ファイルくらいに制限するとか
いや、止まるのはビルドじゃなくて、実行中
どこでとまるかを printf("ここまできてる1\n"); ,,, printf("ここまできてる2\n"); ,,, printf("ここまできてる3\n"); こんなんでみつけなよ あなたの情報だけじゃ誰もどうしようもない。 他のコンパイラでは問題がなければあなたが使っているコンパイラのバグの可能性もある。