デバッグなら俺に任せろ!

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ちょっと暇になったから、デバッグしてやるぜ。
不安なコードとかあったら、投げてみ。
色々指摘してあげよう。

第3者の目ってのはバグの発見に非常に役立つと思われ。

つーわけで、C/C++,C#でヨロ
その他のコードでも他の人が見てくれるかもよ。
2デフォルトの名無しさん:04/03/29 23:16
任せられん
3デフォルトの名無しさん:04/03/29 23:21
int main(void){
printf("Hello World")
}

あっているとおもうんですが なぜかえらーがでます!!!!
げいいんがわかりません 教えてください!!!!!!!!!
>>1はDEBUGコマンドをつかったことがないのではないだらうか
51:04/03/30 00:04
>>3

#include <stdio.h>

int main(){
printf("Hello World");
return 0;
}
>>5
もう一行改行すべきだな。細かいことだけど。
>>5
mainでreturn 0は邪道。
83:04/03/30 00:14
>>5でコンパイルしたら、コンパイラに怒られました!
ちなみにCygwin上のgccです。教えてください!それとも>>1さんはBCCしかつかったことがないんですか?
9デフォルトの名無しさん:04/03/30 01:18
ちゃんと拡張子.cにした?
だめなら

#include <iostream>

int main()
{
std::cout << "Hello World\n";
return (0);
}

これは?
.cppね。



101:04/03/30 01:34
>>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かを確かめた後、
    どうやってこのプログラムを作ったらいいんでしょうか?

    
25デフォルトの名無しさん:04/11/06 10:19:55
下記のようにコーディングして、テキストファイルを読み込むと、
当然読み込んだデータの末端に余計な改行が入るのですけど、
不要な改行を付加することなく、スマートに
テキストファイルを読み込む方法はないでしょうか?

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
26デフォルトの名無しさん:04/11/06 10:29:20
27デフォルトの名無しさん:05/02/05 10:30:16
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
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/892.txt
カレンダークラスの動作チェックと最適化(デバッグしながら作ってたら妙なコードになってしまいました)
お願いします。
30デフォルトの名無しさん:2005/09/01(木) 20:24:14
>>11 while (1) の1は何の1ですか?
3129:2005/09/01(木) 20:25:28
>>30
while(true)無限ループ
32デフォルトの名無しさん:2005/09/01(木) 20:28:35
>>31 では、この関数はいつ抜けるのですか?
3329: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文で何をやりたいのかも分かりません
3629:2005/09/01(木) 20:49:49
>>35
省略じゃなかった。for文はロック。a()b()はそれぞれ別スレッドから呼んでいるのかな?
37デフォルトの名無しさん:2005/09/01(木) 20:56:45
>>36 ありがとう。他の部分のコードも見てみたいけど、>>11氏はいないそうですね。
38デフォルトの名無しさん:2005/09/01(木) 22:40:37
>>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型を返すようにするのが定石だと思うけど違ったっけ?

関数の糞実装に関しては特にコメントしない(読みたくないので)
3929:2005/09/01(木) 23:09:50
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/893.txt
コメントを付け足しました。

//ad日進める
void operator+=(int ad);
//差は何日か
int operator-(Calendar& rh);
ここら辺が不安です。

operator+=()
の//ここら辺怪しい//なぜかSum2=-1になってしまった
operator-()
の//ret=sum+(prgny_this-prgny_rh);にしたかった
これがよく分からないです。

>>38
DofMは月が1〜12の範囲なのでDofM[0]はダミーです。
p.s.
非常に失礼しましてごめんなさい。
40デフォルトの名無しさん:2005/09/01(木) 23:17:47
//初期化
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;
}

こんな風にしてくれないと読みにくいわけよね。
41デフォルトの名無しさん:2005/09/01(木) 23:23:31
>>39
・同じ閏判定のコードがあちこちにあってキモイ
・DofMをpublicにする意味は?
・Weekは「曜日」という意味ではないと思うんですが
4229: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;
//省略
これはよく分かりません。
4329:2005/09/01(木) 23:41:33
>>40
済みません。
>>41
・DofMをpublicにする意味は?
ありません。

sum2=-1;
なんでだろう?
4429:2005/09/02(金) 00:02:25
>>41
・DofMをpublicにする意味は?
あ、一月づつ(壁にかける)カレンダー表示の時に一月の日数が要る。と今思った。
4529:2005/09/02(金) 02:48:51
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/896.txt
助言を参考に直しました。

//ad日加算
Calendar Calendar::operator+(int ad)
{
//省略
 //閏チェック
 if(IsLeap(ty)){DofM[2]=29;add=366*sgn;}
 else{DofM[2]=28;add=365*sgn;}
 //結果の年になったか
 if((0<sgn)&&((ad-sum)<add))
 {
  //なぜかSum2=-1になってしまった
  sum2=-1;k=1;
//省略
ここは相変わらずです。
46デフォルトの名無しさん:2005/09/03(土) 12:52:48
すいません、500ファイル、10万行を超えるプログラムが
Releseでビルドして実行ときのみ突然止まります。
どうしたら直りますか?
47デフォルトの名無しさん:2005/09/03(土) 13:05:50
メモリの増設っきゃないだろうね。
それとも一気に500ファイルコンパイルしようとするんじゃなくて
50ファイルくらいに制限するとか
48デフォルトの名無しさん:2005/09/03(土) 13:09:27
いや、止まるのはビルドじゃなくて、実行中
49デフォルトの名無しさん
どこでとまるかを
printf("ここまできてる1\n");
,,,
printf("ここまできてる2\n");
,,,
printf("ここまできてる3\n");

こんなんでみつけなよ

あなたの情報だけじゃ誰もどうしようもない。
他のコンパイラでは問題がなければあなたが使っているコンパイラのバグの可能性もある。