ポケモンの対戦技術スレPART8

このエントリーをはてなブックマークに追加
9名無しさん、君に決めた!
復活
10名無しさん、君に決めた!:03/01/31 11:05 ID:???
>>1
新スレ立て乙
11名無しさん、君に決めた!:03/01/31 11:05 ID:???
HPに努力値振り込むのと防御と特防に均等に努力値振り込むのは

どっちが防御効果高いですか?
12名無しさん、君に決めた!:03/01/31 17:35 ID:???
tes
13名無しさん、君に決めた!:03/01/31 17:50 ID:???
>>11
俺もそれがすごい気になってる

質問スレにHP 2:防御 1 :特防 1で振り込むのが一番硬くなるって書いてあった
14名無しさん、君に決めた!:03/01/31 17:56 ID:???
どっかのスレにHP、防御、特防の努力値配分を出してくれるツールを作った香具師がいたな
15名無しさん、君に決めた!:03/01/31 17:56 ID:???
16名無しさん、君に決めた!:03/01/31 17:57 ID:???
sss
17名無しさん、君に決めた!:03/01/31 17:57 ID:???
=6
おまえのチェックミスを棚に上げんな
18名無しさん、君に決めた!:03/01/31 17:57 ID:???
禿同。はアフォ。早く削除依頼しなさい。
19名無しさん、君に決めた!:03/01/31 17:57 ID:???
=10
自作自演でした。テヘッ
20名無しさん、君に決めた!:03/01/31 17:57 ID:???
自作自演でした。
21名無しさん、君に決めた!:03/01/31 17:57 ID:???
見ればわかります
22名無しさん、君に決めた!:03/01/31 17:57 ID:???
void func(char **);

main()
{
char a[100][100];

func(a);

return 0;
}

void func(char **a)
{
}

↑のようにやったらプログラムが暴走したんですが
対処法はいかに?
23名無しさん、君に決めた!:03/01/31 17:57 ID:???
void func(char a[][100])
24名無しさん、君に決めた!:03/01/31 17:57 ID:???
25名無しさん、君に決めた!:03/01/31 17:57 ID:???
PHP
26名無しさん、君に決めた!:03/01/31 17:57 ID:???
PHPやったことないんですが・・ほんとに応用できるのですか?
27名無しさん、君に決めた!:03/01/31 17:58 ID:???
int a = 4.3;
abs(3.5);
とかのミスってlintで検出できますか?
28名無しさん、君に決めた!:03/01/31 17:58 ID:???
まあ、当然のことですけど
C++
29名無しさん、君に決めた!:03/01/31 17:58 ID:???
30名無しさん、君に決めた!:03/01/31 17:58 ID:???
C言語の感覚で書かれたC++はクソコード
31名無しさん、君に決めた!:03/01/31 17:58 ID:???
誰もそんなことは聞いていない。
32名無しさん、君に決めた!:03/01/31 17:58 ID:???
C++はオブジェクト指向なのになんでCが応用できるのかと小一時間(略
33名無しさん、君に決めた!:03/01/31 17:58 ID:???
キター
34名無しさん、君に決めた!:03/01/31 17:58 ID:???
逆にCに応用できる言語は何ですか?
35名無しさん、君に決めた!:03/01/31 17:58 ID:???
awk
36名無しさん、君に決めた!:03/01/31 17:58 ID:???
C++
37名無しさん、君に決めた!:03/01/31 17:58 ID:???
C++言語の感覚で書かれたCはクソコード
38名無しさん、君に決めた!:03/01/31 17:58 ID:???
誰もそんなことは聞いていない。
39名無しさん、君に決めた!:03/01/31 17:58 ID:???
結局、CとC++は、繰り返しや比較などが同じなだけであって
設計方法は全然違うわけだな。
40名無しさん、君に決めた!:03/01/31 17:58 ID:???
ありがとう。でもそこに書いてあることをほとんど
やってくれなかった。
41名無しさん、君に決めた!:03/01/31 17:58 ID:???
質問!!
C言語ってDVDなどにあるプロテクトもC言語に一種ですか?
42名無しさん、君に決めた!:03/01/31 17:58 ID:???
教えてください

Cでsnprintfを自作することになりました。
参考になる資料とかありましたら教えてください。
フリーで使えるソースが何処かに落ちていると良いのですが。
43名無しさん、君に決めた!:03/01/31 17:58 ID:???
VC++ならCRT\SRCフォルダに。
44名無しさん、君に決めた!:03/01/31 17:58 ID:???
レスどうもです。
VC++見てみたのですが、うーん難しい事してるんですね。
FILEポインタの中身なんて、いじった事無いです。
これprintf系で汎用的に使う為にこんな感じで実装してるのかなー?
そのまま使いたいところだけど、多分ライセンスで引っかかりそう・・・
45名無しさん、君に決めた!:03/01/31 17:58 ID:???
46名無しさん、君に決めた!:03/01/31 17:58 ID:???
マルチいくない!
47名無しさん、君に決めた!:03/01/31 17:58 ID:???
つーか、なんで...

> Cでsnprintfを自作することになりました。

なんてことやってんの ?
48名無しさん、君に決めた!:03/01/31 17:58 ID:???
win上でgccを使っているのですが、
*.libのファイルを*.oなんかに変換できますか?
49名無しさん、君に決めた!:03/01/31 17:58 ID:???
別に *.lib のままでいいのでは?
何か不都合でもあるのん?
50名無しさん、君に決めた!:03/01/31 17:58 ID:???
お答えありがとうございます。
ファイルフォーマットが認識されない、といわれたので。
単に対応していないだけなのでしょうね。
まあ、至急必要なものでもないですし。。。
51名無しさん、君に決めた!:03/01/31 17:58 ID:???
あ、すまん。
*.a じゃなくて *.lib か。
なるほど。
分離ってできたっけかな...。
52名無しさん、君に決めた!:03/01/31 17:58 ID:???
win 上の gcc とは何者で、その *.lib はどっから持ってきたものかを書けよ。
53名無しさん、君に決めた!:03/01/31 17:58 ID:???
これからC言語を始めてみようという初心者です。
LSI CってのをDLしてみたんですが、使い方がよく分かりません。
参考書買ってみたんですが動かし方については詳しく載ってませんでした。
どなたか詳しく教えていただけませんか?
54名無しさん、君に決めた!:03/01/31 17:58 ID:???
lsc ファイル名
以上
55名無しさん、君に決めた!:03/01/31 17:58 ID:???
ごめん、うそ>46
lcc ファイル名
lcc.exeにちゃんとパスを通すこと
あと、_lccも自分の環境に合わせて編集すること
あとは、read.me読めば書いてるよ
56名無しさん、君に決めた!:03/01/31 17:58 ID:???
えっと・・・
まだよくわからないんですが、
MS-DOSを開きますよね。
lcc filename
しますよね。
次は何をすれば動きますか?
57名無しさん、君に決めた!:03/01/31 17:58 ID:???
エラーメッセージが出なければ、もう何もしなくていい。
58名無しさん、君に決めた!:03/01/31 17:58 ID:???
やりかたは分かったんですが、
コマンドまたはファイル名が正しくありません
とでます。
どうすればいいですか?
しつこくてすいません。。。
59名無しさん、君に決めた!:03/01/31 17:59 ID:???
MS-DOSのコマンドラインから

SET PATH=%PATH%***

と入力して

lcc filename

としてみてください。***の部分はパス名(C:\...\LCC\BIN;)です。
ちなみにBINはBINARY(二進)の略で実行可能ファイルが入ったフォルダの
名前として常識です。わかりましたか?
60名無しさん、君に決めた!:03/01/31 17:59 ID:???
51ですが追伸です。参考になればいいのですが、_lccファイルです。

# LSI C-86 compiler's configuration file

-DLSI_C
-XC:\LSIC330C\BIN -LC:\LSIC330C\LIB -IC:\LSIC330C\INCLUDE -T -O
-acdos.obj $LSICOPTS
?Command line argument will be inserted here
-lknjlib -ldoslib -v
61名無しさん、君に決めた!:03/01/31 17:59 ID:???
うぜぇ
Cそのものとは関係ねえ事書くな
62名無しさん、君に決めた!:03/01/31 17:59 ID:???

    ∧ ∧___  ダッコ♪
   /(*゚ー゚) /\
 /| ̄∪∪ ̄|\/
   |        |/
     ̄ ̄ ̄ ̄

63名無しさん、君に決めた!:03/01/31 17:59 ID:???
大人しくしていなさい。
64名無しさん、君に決めた!:03/01/31 17:59 ID:???
セグメンテーション違反ですってなんですか?
65名無しさん、君に決めた!:03/01/31 17:59 ID:???
変なとこに書き込んだりしたときに良く出る。
66名無しさん、君に決めた!:03/01/31 17:59 ID:???
どこが間違ってるのかさっぱりわからんです...
67名無しさん、君に決めた!:03/01/31 17:59 ID:???
変なとこをかいたりしたときに良く出る。
68名無しさん、君に決めた!:03/01/31 17:59 ID:???
セグメンテーション違反は一番良く見るバグだと思うので、
頑張って間違った箇所を探しませう。

・配列の添え字が変な位置を指しているかどうか
・ポインタの扱いが間違っているかどうか

の2箇所を重点的に調べましょう。
69名無しさん、君に決めた!:03/01/31 17:59 ID:???
それはコアダンプ。
70名無しさん、君に決めた!:03/01/31 17:59 ID:???
ありがとうございます。
がんばって探してみます。
卒論間に合うか不安。。。
71名無しさん、君に決めた!:03/01/31 17:59 ID:???
・・・デバッガ使えよ・・・
72名無しさん、君に決めた!:03/01/31 17:59 ID:???
!?そ..それはいったい....?
emacsとかについてるやつですか?
73名無しさん、君に決めた!:03/01/31 17:59 ID:???
gdbとか
74名無しさん、君に決めた!:03/01/31 17:59 ID:???
emacs見てみたらgdbなるものを発見いたしました!
しかし英語表記のため使いかたがいまいちわからぬ。
調べてみます。。。
75名無しさん、君に決めた!:03/01/31 17:59 ID:???
memsetでdouble型の配列の値を全てdouble x;
にすることはできますか?
76名無しさん、君に決めた!:03/01/31 17:59 ID:???
できない。
77名無しさん、君に決めた!:03/01/31 17:59 ID:???
デバッガという言葉も知らない奴が卒論までにgdbを使えるわけがない。
78名無しさん、君に決めた!:03/01/31 17:59 ID:???
デバッガgdbの簡単な使い方。

まずプログラム作成 hoge.c
#include <stdio.h>

main(){
int *a = NULL;
*a = 0;
}


コンパイル時に -g オプションをつける
gcc -g -o hoge hoge.c
実行プログラムをgdbの引数に指定
gdb hoge

gdbのプロンプトが出たらrunを実行
(gdb) run
フォールトエラーなどが出たら、理由と場所を教えてくれる。
Program received signal SIGSEGV, Segmentation fault.
0x8048468 in main () at hoge.c:5
5 *a = 0;

終了するときはquit
(gdb) quit
79名無しさん、君に決めた!:03/01/31 17:59 ID:???
初歩的な質問で申し訳ない。

ファイルからコンソール画面に一行一行読み込んで表示するという、
超基本的なプログラムを書いてみました。
そこで質問なのですが、今のままでは、改行は何も表示されない空白で表されますよね。
この改行部分に「----ここは改行です-----」といったメッセージを表示したいのですが、
どうすればいんでしょう?とりあえず自分が書いたものを↓に。

#include <stdio.h>
void main(){

  FILE *fp;
  char a[20];
  fp = fopen("text.txt" ,"r");

  do{
    if (fgets(a ,20 ,fp) == NULL){
      printf("//////終わりです//////\n" );
      break;
    }else{
      if (a == ""){ ★★★問題の箇所です
        printf("-----ここは改行です-----");
        printf("%s\n" ,a);
      }else
        printf("%s\n" ,a);
      }
  }while(1);
    fclose(fp);
    return;
}
80名無しさん、君に決めた!:03/01/31 17:59 ID:???
if(a=="") を if(*a=='\0') に変更すればいいのでは?
81名無しさん、君に決めた!:03/01/31 17:59 ID:???
if (strlen(a))
a[strlen(a) - 1] = '\0';

ってのを付け加えた方がいいかも。
82名無しさん、君に決めた!:03/01/31 17:59 ID:???
if (strcmp(a, "\n") == 0)
にすればええんでない?
まぁ簡単に
if (a[0] == '\n')
でもいいか。

あとは
・改行の場合はわざわざ a を表示しようとする必要は無い
・do-while じゃなくて、while 内で fgets を使ったので構わない。
・fp が NULL かどうかのチェックは入れる癖をつけておくが吉。
・最後の行にのみ改行が無い場合があることを考慮するべし。
ってとこでしょうか。
83名無しさん、君に決めた!:03/01/31 17:59 ID:???
#include <stdio.h>
int main()
{
 FILE *fp = fopen("text.txt", "r");
 char a[20];

 while (fgets(a, 20, fp) != NULL) {
  if (a[0]=='\n')
   printf("-----ここは改行です-----\n");
  else
   printf(a);
 }
 printf("//////終わりです//////\n" );
 fclose(fp);
 return 0;
}
84名無しさん、君に決めた!:03/01/31 17:59 ID:???
printf(a); と printf("%s", a); は違う。
85名無しさん、君に決めた!:03/01/31 17:59 ID:???
ごめんうっかりしてた。
printf(a)はprintf("%s", a)に読み替えて。

あなたのコードを見て思ったことを書きます。
だいたいさんが言ってくれてるけど。

・fgetsは改行も読み込むのでprintf("%s\n",a)でなくprintf("%s",a)。
・0回以上の繰り返しのときは基本的に, do-whileでなくwhileを使う。
・文字列の比較はstrcmpを使う。a==""としても文字列の比較ではなく
 文字列のアドレスの比較が行われるだけで無意味。

あとのコードでも19文字ジャストの行を読み込むと誤動作します。
19文字ジャストの行を読むと, 次回のfgetsで改行文字だけを読み込む
ので, 文末の改行と空行との区別がつかなくなるためです。
a[]の配列を十分大きくとることで簡単に解決します。
86名無しさん、君に決めた!:03/01/31 17:59 ID:???
> printf("%s", a)

漏れは fputs(a, stdout) のが好きだ。
87名無しさん、君に決めた!:03/01/31 17:59 ID:???
72です!皆さんのご指摘でうまく動くようになりました。
質問の箇所だけではなく、他の様々な部分まで指摘してもらって、感謝してます。
判定文ごとwhileの中に入れろとか、さんの19文字ジャストでおかしくなる・・・とかの話は、
読みながらハタと手を打ってしまいました。

速度面で有利とか、エラーでにくいとか、そういったことが何かあるんですかね?
単に好みの問題でしょうか。
88名無しさん、君に決めた!:03/01/31 18:00 ID:???
速度は大抵fputsのほうが速いだろう。
必ずじゃないけど。
89名無しさん、君に決めた!:03/01/31 18:00 ID:???
教えてください!
return (
x1 >= x2+width2 || x1+width1 <= x2 ||
y1 >= y2+height2 || y1+height1 <= y2
) ? false : true;
ってどういうことですか??
90名無しさん、君に決めた!:03/01/31 18:00 ID:???
if(x1 >= x2 + width2) return false;
if(x1 + width1 <= x2) return false;
if(y1 >= y2 + height2) return false;
if(y1 + height1 <= y2) return false;
return true;

と同じだよ。多分2つの領域の重なり判定と思う。

91名無しさん、君に決めた!:03/01/31 18:00 ID:???
ふむふむ
確かゲーム系で、当たり判定のところっぽい関数だったからそうなのかも!
「||」って、「OR」だったと思うのですが、三項演算子って順々に判定してfalseやtureを返すんですか?
なんか質問部分がわかりにくいーー・・・
92名無しさん、君に決めた!:03/01/31 18:00 ID:???
> 三項演算子って順々に判定してfalseやtureを返すんですか?

三項演算子 xxx ? yyy : zzz は、単に xxx の値の真/偽によって yyy か zzz を返すだけ。

順々に判定するのは、|| (論理 OR 演算子) の方。

xxx || yyy は、xxx が真なら yyy を実行しないで 真 を返す。
(短絡演算で、ググッてくれ。)
93名無しさん、君に決めた!:03/01/31 18:00 ID:???
ありがとう!ググってきましたー。なるほど。よくわかりました
お世話になりました!
94名無しさん、君に決めた!:03/01/31 18:00 ID:???
Cで書いたプログラムなんですが、コンパイルは通るのに実行するとエラーが起こります。
デバッグ(と呼んでいいのかどうか分かりませんが)したいのですが、
どのように行うのでしょうか。
コンパイラはgccをMS-DOS上(MinGW)で使っています。
95名無しさん、君に決めた!:03/01/31 18:00 ID:???
そんなのソースださないと分かるわけ無いだろ。
せめてどうエラー出るのか書けや。
96名無しさん、君に決めた!:03/01/31 18:00 ID:???
やはりソースによって変わってくるのですね。
一般的にどのようにやっていくのかお聞きしたくて、書き込みました。

エラーは、エラーログを作成しています。というメッセージと共に
プログラムが強制終了します。
97名無しさん、君に決めた!:03/01/31 18:00 ID:???
> エラーは、エラーログを作成しています。というメッセージと共に
> プログラムが強制終了します。

.... で、そのエラーログとやらはあるのか ?
98名無しさん、君に決めた!:03/01/31 18:00 ID:???
プログラムを少しづつ削っていって、エラーが出なくなったら直前に
削ったところが、エラーに関係するところだ。大抵は、
99名無しさん、君に決めた!:03/01/31 18:00 ID:???
つーか、エラーログ出てるなら読めよとりあえず(w
100名無しさん、君に決めた!:03/01/31 18:00 ID:???
gdb(gcc用のデバッガ)ないの?
なければprintfとassertと根性でバグ捜せ。
101名無しさん、君に決めた!:03/01/31 18:00 ID:???
エラーログの読みかたわからないです。スマソ
実行したフォルダを探しても該当するようなファイルが見つかりません。
gdbというものは落としてすぐ使えるでしょうか?
探してみます。明日提出の課題なんです。
やはりそれですか・・・

皆さんどうもアリガd
102名無しさん、君に決めた!:03/01/31 18:00 ID:???
おいおい、システムのエラーログに記録されとるんだろ。
実行フォルダには無いぞ。
103名無しさん、君に決めた!:03/01/31 18:00 ID:???
見方教えてください。
お手数かけてほんとスマソ
104名無しさん、君に決めた!:03/01/31 18:00 ID:???
だから、OSは何なんだよ(藁
何も情報書かずに推測するスレか、ここは。
恐らくLinux系だろうけど、君じゃ無理だ多分。その様子だと。
105名無しさん、君に決めた!:03/01/31 18:00 ID:???
もアフォだけど、お前も相当だな。

> コンパイラはgccをMS-DOS上(MinGW)で使っています。

素の MS-DOS はエラーログなんか記録しないだろうから、どうせ Windows の MS-DOS プロンプトじゃねーのか ?
どうせ MAP ファイルなんか見れないんだから、素直に か の2行目に従えよ。
106名無しさん、君に決めた!:03/01/31 18:00 ID:???
100desuyo
107名無しさん、君に決めた!:03/01/31 18:00 ID:???
> printf("-----ここは改行です-----\n");

printf("-----ここは空行です-----\n");
108名無しさん、君に決めた!:03/01/31 18:00 ID:???
厨質問で申し訳ないのですが

while(fgets(buf, 256, infp) !=NULL){
hoge = atoi(buf);
printf("hoge=%d\n",hoge);
}

とやりますと、全部のhogeが0となってしまいます。
読みこんだファイルは4行に渡る30バイトほどの
テキストファイルなのですが・・・

どなたかご教授オネガイイタシマス。
109名無しさん、君に決めた!:03/01/31 18:00 ID:???
入力ファイルの内容を晒してみ?
110名無しさん、君に決めた!:03/01/31 18:00 ID:???
printf("%s",buf);
でちゃんと、bufに文字列読み込まれてるか確認してみる。
103の言うとおり、どんな入力ファイルやねんやろ・・・
atoi関数の使い方もわかっていますか?
111名無しさん、君に決めた!:03/01/31 18:00 ID:???
103,104サソ
アリガdございます。

テキストファイルを
345504
45454
3920
5503
こんな感じに直したらできますた。
文字が入ってたのがいけなかったのでしょうか?
atoiを使う際に"x"などの文字が混入していた際に
無視する方法ってあるのでしょうか?

ほんと厨ですみませそ。。。
112名無しさん、君に決めた!:03/01/31 18:00 ID:???
あるプログラムを作成しました(長いので載せれません)。
そのプログラムはある配列変数の要素を小さく設定した時は
問題なく動いてくれるのですが、大きくするとsegmentation Failureがでます。

gdbをつかってデバッグしました。そしたら、
(gdb) core a.out.core
Core was generated by `a.out'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libm.so.2...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libc.so.4...(no debugging symbols found)...done.
Reading symbols from /usr/libexec/ld-elf.so.1...(no debugging symbols found)...
done.
#0 0x80489ab in main ()
(gdb) where
#0 0x80489ab in main ()
#1 0x8048506 in _start ()
となり、何行目に問題があるのか?という情報は教えてくれません。
どこがおかしいか、長年の経験のある皆様にお聴きしようと思ったしだいです。
助けて下さい。
113名無しさん、君に決めた!:03/01/31 18:00 ID:???
(gdb) where
#0 0x80489ab in main ()
#1 0x8048506 in _start ()
が問題なんですよね?
これってどういう意味ですか?
114名無しさん、君に決めた!:03/01/31 18:00 ID:???
どんなプログラムかも配列をどういうふうに使ってるのかも要素数をどの程度にしたのかもわからないのに答えろというのか・・・
115名無しさん、君に決めた!:03/01/31 18:01 ID:???
atoi()はスペースと+-以外の文字とぶつかるとそこで終了しちゃいますよ
もしかしたら、文字を取り除く関数があるかもしれないけど
自分で取り除くコード書いたほうが柔軟性あっていいかもしれないですね
116名無しさん、君に決めた!:03/01/31 18:01 ID:???
じゃーのせます。
連続投稿なるけどごめんなさい、どこが悪いか全く分りませんので
enumとmainだけとりあえず載せます

#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

enum {
MAX_NODE = 87381, /* 自分で計算 (( pow(4,MAX_DEPTH) -1 ) / 3) */
MAX_RES = 81, /*ネットワーク内のリソースの種類*/
MAX_DEPTH = 9, /*木の深さ*/
MAX_SIM = 100, /*シミュレーション回数*/
REPEAT = 2 /*繰り返し数 シミュレーション数*/
};


117名無しさん、君に決めた!:03/01/31 18:01 ID:???
main()
{
int i,j,k,query,query_number,num_reg,sum_query_number,sim_num,sum_num_reg,num_resource[MAX_RES],node[MAX_NODE][MAX_RES],rt[MAX_NODE][4][MAX_RES];
double adv_num_reg,adv_query_number;
FILE *outp;

srand((unsigned int)time(NULL));
sum_query_number = 0;
sum_num_reg = 0;
for( sim_num = 0 ; sim_num < REPEAT ; sim_num++ ){
/*ノードの登録を初期化*/
node_initialize(node);
/*ルーチングテーブル初期化*/
rt_initialize(rt);
/*リソース数を決定*/
for(i=0; i<MAX_RES; i++){
num_resource[i]=(int)(num_normalcurve() + 0.50);
/*printf("%d\n",num_resource[i]);*/
}
/*各ノードごとの各リソースの登録情報をセット*/
distribute(node,num_resource);
/*MATRIX表示*/
/*print_matrix(node);*/
for(k=0;k<MAX_SIM;k++){
/*QUERY決定*/
query = query_produce();
/*printf("query %d\n\n",query);*/
/*routing開始*/
route(query,node,rt);}
118名無しさん、君に決めた!:03/01/31 18:01 ID:???
query = 3;

/*count the number of the query 3*/
query_number = count_qnum(query,rt);

/*rt表示*/
/*print_query(query,rt);*/
sum_query_number += query_number;
printf("query_number %d",query_number);

/*ノードAの登録数*/
num_reg = sum_reg_num(rt);
sum_num_reg += num_reg;
printf("registration_number %d",num_reg);
}
adv_query_number = (double)(sum_query_number) / (double)(REPEAT);
adv_num_reg = (double)(sum_num_reg) / (double)(REPEAT);

printf("adv_query_number %f",adv_query_number);
printf("adv_num_reg %f",adv_num_reg);

}
119名無しさん、君に決めた!:03/01/31 18:01 ID:???
70〜140MBもスタックに取るつもりかよ
120名無しさん、君に決めた!:03/01/31 18:01 ID:???
そこが問題ですか?enumんとこですよね?
121名無しさん、君に決めた!:03/01/31 18:01 ID:???
http://www6.ocn.ne.jp/~endou/index2.html
      ★こんなサイト見つけました★
122名無しさん、君に決めた!:03/01/31 18:01 ID:???
age
123名無しさん、君に決めた!:03/01/31 18:01 ID:???
何だよ、解決したんじゃなかったのか?
スタックに取りすぎだっつってんの

int i,j,k,query,query_number,num_reg,sum_query_number,sim_num,sum_num_reg,num_resource[MAX_RES],node[MAX_NODE][MAX_RES],rt[MAX_NODE][4][MAX_RES];

これがどれほど巨大なメモリを必要とするかわかる?
124名無しさん、君に決めた!:03/01/31 18:01 ID:???
どうやったらいいのでしょうか?
main関数から変数をおいだせばいいのでしょうか?
配列をなくせばいいのでしょうか?

enumは関係ないのですか?
125名無しさん、君に決めた!:03/01/31 18:01 ID:???
まず第一にバッファの使い方を見直すべし
んな巨大な配列が本当に必要なのか?
どうしても必要ならmallocなり何なりでヒープに取るべし

enumの値を配列サイズに使ってんだから関係あるに決まってる
126名無しさん、君に決めた!:03/01/31 18:01 ID:???
分かりました。
配列を変更するのは難しそうですので、
別の変数を直して行きます。
mallocとか勉強します
127名無しさん、君に決めた!:03/01/31 18:01 ID:???
ぷろぐらむの実行がいつまでたっても終らん。
実行を早くする基本は何?
128名無しさん、君に決めた!:03/01/31 18:01 ID:???
プロファイラ使え。
129名無しさん、君に決めた!:03/01/31 18:01 ID:???
さそ
ありがdございます

while(fgets(buf, 256, ifp) !=NULL){
for(i=0; i<strlen(buf); i++){
if(isalpha(buf[i])){
こんな感じでアルファベットだったらbufからその文字を省くといった
仕様にしたいのですが、bufからその文字だけ省くことなんて
可能なのでしょうか?

再度の糞厨質問ですいません。
ご教授オネガイイタシマス。
130名無しさん、君に決めた!:03/01/31 18:01 ID:???
VC++買おうと思って製品情報見てるとVisual Studio .NETのページに行っちゃうんですが
Visual Studio .NET て何ですか?
131名無しさん、君に決めた!:03/01/31 18:01 ID:???
VB,C#,VC++が全部入り
132名無しさん、君に決めた!:03/01/31 18:01 ID:???
11万円もするよぉ!うわぁーぁぁん
133名無しさん、君に決めた!:03/01/31 18:01 ID:???
ある4つほどの配列をファイルに書き込もうとして、
fwriteを使って書き込みました。
別のプログラムでそれを読み込もうとしてfreadで読み込んだのですが、
読み込んだ配列の中身が途中から0になってしまっています。
具体的には
a[130][100],b[100][30],c[100],d[30]を書き込んで
読み込んだaおよびbが途中から0になっていました。
けれどもcとdは正常に読み込めていました。
エラーチェックはしていますがエラーは出ていません。

プログラムも見直していますが、さっぱりわかりません。
どなたかご教授願いまつ。
134名無しさん、君に決めた!:03/01/31 18:01 ID:???
ほんとに全部要るのか?
135名無しさん、君に決めた!:03/01/31 18:01 ID:???
実際のものより小規模なモデルを作り、プログラムが正しく動作しているかを検証する。
各処理の実行時間を調べて、時間がかかっている部分を高速化する。
(但し、複雑になるような高速化は避ける。)
いくつかの規模のモデルを実行して、時間を測定し、実際のモデルでどれだけ時間が
かかるかを見積もる。
時間がかかり過ぎるようなら、別のアルゴリズムを探す。
別のアルゴリズムが見つからなければ、複雑な高速化に取り組む。
それでも時間がかかり過ぎるなら、プログラムを作ることの意義を見直す。
136名無しさん、君に決めた!:03/01/31 18:01 ID:???
省いた後、隙間を詰める。
もしくは、省く文字以外を別バッファにコピーする。
137名無しさん、君に決めた!:03/01/31 18:01 ID:???
#include <ctype.h>を追加して、

char tmp[256], *src, *dst ;

for ( src=buf, dst=tmp; *src; src++ ) {
  if ( isdigit( *src ) || *src=='-' || *src=='+' )
    *dst++ = *src ;
}
*dst= '\0' ;
hoge= atoi( tmp ) ;

但し、これだと "-1 2 +3" が "-12+3" になってしまうから
それいう可能性があるなら加工しる!

123で、"アルファベットだったらその文字を省く" って言ってるから、
if ( !isalpha( *src ) )
  *dst++ = *src ;
のほうがいいかな。
138名無しさん、君に決めた!:03/01/31 18:01 ID:???
先頭の空白は無視するというatoiの仕様を利用して、余計な文字をスペースに置き換えたら?
139名無しさん、君に決めた!:03/01/31 18:01 ID:???
ファイルサイズが期待した通りになっているかを確認。
ファイルの中を見てみて、0が書かれているようなら、
fwrite、そうでなければ読み込みがfreadを見直す。

たぶん、二次元配列のサイズ計算が間違えているんだと思う。
途中からとかではなくて、実際にどこから0が書かれているかを
調べるのもいいと思う。(地道なことをちゃんとやらんと)
140名無しさん、君に決めた!:03/01/31 18:01 ID:???
読み込むときも書き込むときもバイナリモードにした?
あ、UNIX系なら関係ないけど。
141名無しさん、君に決めた!:03/01/31 18:01 ID:???
全部いらなくても、商利用したいときとか…

ところで、シェアウェアって、やっぱ商利用?
142名無しさん、君に決めた!:03/01/31 18:01 ID:???
そりゃそうでつ。
143名無しさん、君に決めた!:03/01/31 18:02 ID:???
細かい訂正ですが、b[100][32]でd[32]でした。

カエレ!(・∀・)とか言われそうですが、
ファイルサイズの計算はどうすればいいのでしょうか・・・
バイナリファイルの中身はどうやって見ればいいのでしょうか・・・バイナリエディタですか?
二次元配列のサイズ計算というのがよく分からないのですが・・・
今いろいろと検索していますがよく分かりません・・・

aはa[30][0]から0になっていて、bはb[7][6]から0になっています。

WindowsのCygwinってやつでやってます。
一応fopenにはwbやrbはちゃんと書いているので
大丈夫だと思います・・・
144名無しさん、君に決めた!:03/01/31 18:02 ID:???
Visual C++ .NET Standard
買おうと思いますがどう思われますか?
VBは弄った事あります
145名無しさん、君に決めた!:03/01/31 18:02 ID:???
スレ違い祭りか?
146名無しさん、君に決めた!:03/01/31 18:02 ID:???
Visual C# .NET
Visual C++ .NETて何が違うんですか?
147名無しさん、君に決めた!:03/01/31 18:02 ID:???
Cygwin なら
ls -l ファイル名
でファイルサイズが見れますよ。

バイナリファイルの中身は
dump ファイル名 | less
(less でなく more でもいいです。お好きなほうを)
で見れます。
148名無しさん、君に決めた!:03/01/31 18:02 ID:???
C#とC++という時点で違う。
149名無しさん、君に決めた!:03/01/31 18:02 ID:???
> ファイルサイズの計算はどうすればいいのでしょうか・・・
printf("%d", sizeof a);
もしくは
sizeof(aの型) * 130 * 100
として計算。あとはバイナリなんで、a, b, c, dを全部足せばよい。

> バイナリファイルの中身はどうやって見ればいいのでしょうか・・・バイナリエディタですか?
バイナリエディタもしくは16進ダンプするツールを探す。
なければ作れ。(簡単だから)
予想では0は書かれていないと思う。

> 二次元配列のサイズ計算というのがよく分からないのですが・・・
> (略)
> aはa[30][0]から0になっていて、bはb[7][6]から0になっています。
c, dは大丈夫で、a, bが駄目というんで、二次元配列の扱いが間違えているんだと思う。
fwrite()のところで3000や1350という数を渡してしまっている。
3000は130 * 100 を 30 * 100にしてしまっているとか…
150名無しさん、君に決めた!:03/01/31 18:02 ID:???
いいんじゃない
151名無しさん、君に決めた!:03/01/31 18:02 ID:???
ありがd。
とりあえずプログラムもう一度見直して
ファイルの中身見たりしてみまつ。
152名無しさん、君に決めた!:03/01/31 18:02 ID:???
Visual C++ .NET Standard は
最適化が無くて、できた実行ファイルも配布禁止だったような。
完全に学習用なんで、それでもいいんなら買ったんでいいんでは?
153名無しさん、君に決めた!:03/01/31 18:03 ID:???
autoって書くのって時代遅れっぽぃ?
154名無しさん、君に決めた!:03/01/31 18:03 ID:???
>それって自動変数じゃねーだろ。
>(今時誰も書かないけど、auto ってキーワードもあるし...。)
そういわれたらそうかも(^^;
へんないいまわしだw
staticで宣言した瞬間にautoじゃなくなるもんね
>グローバル変数/関数のスコープには触れなくて良いのか ?
うーん、staticってなんでしか?って聞いてる人にあんまり難しいこといってもなぁ〜
って思いまして。

つまるところは内容が保持されるってことがいいたい。

そうすると、スコープの話になりますね・・・

>>(今時誰も書かないけど、auto ってキーワードもあるし...。)
う〜ん、C始めて、8年やけど、いまだかつてautoキーワード使ったこと無いわw
使うことってあるの?
155名無しさん、君に決めた!:03/01/31 18:03 ID:???
EXEとか言っているあたりWindows上でコンパイルしたな・・・・
xreaはLinux(CPUはIntel系)だから。
156名無しさん、君に決めた!:03/01/31 18:03 ID:???
printf("Content-type:text/html\n\n");
こんなん付けていましたが・・・ダメでした・・。
環境はVCなんです。・・うーぬ。
レスありがトン。
157名無しさん、君に決めた!:03/01/31 18:03 ID:???
トクトクでコンパイルしたものをXREAにアップすれば動くかも
158名無しさん、君に決めた!:03/01/31 18:03 ID:???
Windowsじゃだめなのですか!!
それは気付かなかった・・っていうか知らなかった〜
Linux対応にするにはどうすればいいか、わかります・・?
159名無しさん、君に決めた!:03/01/31 18:03 ID:???
strtok(バッファの内容を改変してもいいとき)
もしくは strchr(よくないとき)を使う。

: の後は空白を空ける。
printf("Content-type: text/html\n\n");

Linux 上でコンパイルする。
160名無しさん、君に決めた!:03/01/31 18:03 ID:???
他のバッファにコピーするならsscanf(src,"%[^#]",dest);こんな感じかな?
161名無しさん、君に決めた!:03/01/31 18:03 ID:???
自分とこでLinux環境整えてそこでコンパイル、が一番楽なんじゃないかなぁ…
Cygwin使えばWIN上でLinuxバイナリ作れる?
ttp://www.sixnine.net/cygwin/cygwin-doc/devel/cygwin-to-linux-cross-howto.html
162名無しさん、君に決めた!:03/01/31 18:03 ID:???
Linuxヵー自分全然わかんないッス・・・。
まだ遠い道なのかな・・。
163名無しさん、君に決めた!:03/01/31 18:03 ID:???
レンタル鯖でCGIするなら、やっぱperlとかの方がいいっしょ。
実験用に自前鯖つくるか
164名無しさん、君に決めた!:03/01/31 18:03 ID:???
*.cgi の中身ってどんな言語?
ってか、コンパイルされた状態なの?
テキストソースなの?
165名無しさん、君に決めた!:03/01/31 18:03 ID:???
実行できるなら何でも。
166名無しさん、君に決めた!:03/01/31 18:03 ID:???
のことならを読めば分かると思うけど・・・

> C言語で
> それをコンパイルして
167名無しさん、君に決めた!:03/01/31 18:03 ID:???
そういう意味か・・・

標準入出力と環境変数にアクセスする機能があれば言語は問わない。
Cで書かれたものならもちろんコンパイルしないとだめ
168名無しさん、君に決めた!:03/01/31 18:04 ID:???
確かにそういう意味かもしれんな...。

に補足するなら、サーバが許可してない形式のは実行できなかったと思う。
インタプリタ言語なら、もちろんインタプリタがサーバに置いてないと実行できない。
ホームでインタプリタを自前でコンパイルして使うという手もあるが...。
169名無しさん、君に決めた!:03/01/31 18:04 ID:???
const struct ABC {int i;} a;
struct ABC b;

ってすると、なんで a しか定数にならないのー?
型限定子なのに
170名無しさん、君に決めた!:03/01/31 18:04 ID:???
書き換え不能なstruct ABC型のaだからじゃない・・・
何がおかしいんだろ・・・
171名無しさん、君に決めた!:03/01/31 18:04 ID:???
int findpos(char s[], int lim)
{
int i;

for (i = 0; s[i] != '\0' && i < lim; i++)
{
;
}
if (i == lim)
{
while (i >= 0 && (s[i] == ' ' || s[i] == '\t'))/*@*/
{
i--;
}
}

return i;
}

@の条件が常に偽になるのはなぜなのでしょう?
172名無しさん、君に決めた!:03/01/31 18:04 ID:???
free()でsegmentation faultが発生するんですが考えられる原因は何でしょうか
173名無しさん、君に決めた!:03/01/31 18:04 ID:???
・mallocで得た領域でない。
・既にfree済み。
174名無しさん、君に決めた!:03/01/31 18:04 ID:???
const struct ABC {[?[struct]?] int i;} a;
175名無しさん、君に決めた!:03/01/31 18:04 ID:???
「困った1」ではなくて「困った」でした。スマソ。
176名無しさん、君に決めた!:03/01/31 18:04 ID:???
常に偽になるわけないでしょ。
findposに与える引数を工夫してみな。
177名無しさん、君に決めた!:03/01/31 18:04 ID:???
それ以外にも、ポインタとかの使い方間違えてて、メモリ管理がぐちゃぐちゃになってるとか...。
178名無しさん、君に決めた!:03/01/31 18:04 ID:???
>変数を後ろに宣言する何の必要があるのか?
関数でも変数でも定義や参照の後ろで宣言するのは意味無いし
179名無しさん、君に決めた!:03/01/31 18:04 ID:???
,263
1)でした...
静的に確保した領域を開放しようとしてました.
どうもありがとうございました.
180名無しさん、君に決めた!:03/01/31 18:04 ID:???
それで正常です。
構造体の定義の部分に const をつけても、
その構造体変数を作ろうとした場合に const になるわけではありません。
定義の部分でついでに定義した構造体変数が const になるのです。

常に const になって欲しいんならこんな感じで。
typedef const struct __ABC {int i;} ABC;
ABC a = { 0 };
ABC b = { 5 };
181名無しさん、君に決めた!:03/01/31 18:04 ID:???
ありがとうございます。
その方向で工夫してみます。
182名無しさん、君に決めた!:03/01/31 18:04 ID:???
再帰関数を書いたときにauto変数であることを明示するために書いたことがある。
183名無しさん、君に決めた!:03/01/31 18:04 ID:???
>const struct ABC {int i;} a;
だと
const struct ABC a;
でって、ABCがconstになるわけじゃないですからね。
そもそも、型を定数にしてなんかいいことある?

あえてするなら
struct ABC {const int i;};
かな?

184名無しさん、君に決めた!:03/01/31 18:04 ID:???
sizeof honyaraと、sizeof(honyara)って何か違いますか?
185名無しさん、君に決めた!:03/01/31 18:04 ID:???
don't worry.
186名無しさん、君に決めた!:03/01/31 18:04 ID:???
#define honyara honya + ra
後は自分で考えませう
187名無しさん、君に決めた!:03/01/31 18:04 ID:???
バトルタワースレもこれで潰されてたな・・・
188名無しさん、君に決めた!:03/01/31 18:04 ID:???
です。
んー、簡単なプログラムかいて、色々実験してみたんだけど、
結果は、同じになります。
あんまり悩む事じゃないのかな??
189名無しさん、君に決めた!:03/01/31 18:04 ID:???
それは、そんな定義する奴の方が悪いと思うけど。
190名無しさん、君に決めた!:03/01/31 18:04 ID:???
じゃ↓を試してみ
#define honyara 7 + 11
printf("%d\n",sizeof honyara );
printf("%d\n",sizeof(honyara));
191名無しさん、君に決めた!:03/01/31 18:04 ID:???
型に対してsizeofするときは括弧が必要なんじゃなかった?
192名無しさん、君に決めた!:03/01/31 18:04 ID:???
それは同意だが、は、何が違うのか聞いてるので…
193名無しさん、君に決めた!:03/01/31 18:04 ID:???
だからと言ってそんな変な例を出してどうする。

sizeof 単一式
sizoof(型名)

と言うだけのことだろ。規格書ぐらい読めよ。
194名無しさん、君に決めた!:03/01/31 18:06 ID:???
ごめん、コードはまた今度な。
195名無しさん、君に決めた!:03/01/31 18:06 ID:???
俺が思うに、1 6\n2 7\n3 8・・・と表示してゆくのではなく、
1から5までを表示したあとに一番上の行間で戻って少し右にずらし6から10までを表示したいんだと思う。
196名無しさん、君に決めた!:03/01/31 18:06 ID:???
× 行間で
○ 行まで
197名無しさん、君に決めた!:03/01/31 18:06 ID:???
1 6
2 7
3 8
4 9
5 10
↑これを
#include <stdio.h>
int main(void){
int a,b;
for(a=1;a<6;a++){
for(b=a;b<=10;b+=5)
printf("%3d",b);
printf("\n");
}
}
こうじゃなくてああ
198名無しさん、君に決めた!:03/01/31 18:06 ID:???
1 6
2 7
3 8
4 9
5 10
↑こういった出力結果が欲しいだけなんか?
だったら
int i;
for (i=1; i<=5; i++)
 printf("%d %d\n", i, i+5);
これでええやん。
199名無しさん、君に決めた!:03/01/31 18:06 ID:???
それだと1 -> 6 -> 2 -> 7という順で表示されるから嫌なんだと思う。
カーソルを移動させるための関数が必要だな。標準にはない。
200名無しさん、君に決めた!:03/01/31 18:06 ID:???
俺も当初そう思ったんだけど,
を見る限り1 -> 6 -> 2 -> 7と表示させようとしてるような。
201名無しさん、君に決めた!:03/01/31 18:06 ID:???
よう分からんけど、の環境で
同一プロセス内のスレッドが複数ある時の話じゃないか?
202名無しさん、君に決めた!:03/01/31 18:06 ID:???
「Java 謎+落とし穴」のp50参照
203名無しさん、君に決めた!:03/01/31 18:06 ID:???
C言語って関数内関数が使えないはずですよね?
gccだと通っちゃうんですが。何故?
204名無しさん、君に決めた!:03/01/31 18:06 ID:???
gccが独自拡張してるからだYO!
-ansi -pedantic-errors
の、「ANSI準拠以外認めない」オプション付けたらエラーになる筈

ところで
、61
の掛け合いに激しくワラタんだが、
反応ないのをみるに、これって激しく既知のネタ?
205名無しさん、君に決めた!:03/01/31 18:06 ID:???
Not Found.
206名無しさん、君に決めた!:03/01/31 18:06 ID:???
知らなんだ。イイ! ね。
特に作業用の引数が必要な再帰関数使うときとか。
207名無しさん、君に決めた!:03/01/31 18:06 ID:???
サンクス

というかなんで標準Cじゃ使えないんだよヽ(`Д´)ノ
スコープがちょっと違うだけだろうが!
208名無しさん、君に決めた!:03/01/31 18:06 ID:???
> #define honyara (honya + ra)

> って宣言するだろ。

このくだらないつっこみのために遅レスしたの?
209名無しさん、君に決めた!:03/01/31 18:06 ID:???
> #define honyara (honya + ra)

> って宣言するだろ。

#define honyara ((honya) + (ra))
210名無しさん、君に決めた!:03/01/31 18:06 ID:???
>このくだらないつっこみのために遅レスしたの?
規格書を読んでいた為ではないかと。
211名無しさん、君に決めた!:03/01/31 18:06 ID:???
あんたの意味なし煽り突っ込みよりマシかと。

趣味の差かと。
念には、念を入れると言う考え方もあるけど、俺はマクロ側で () 必須にするのが好み。

それもあるが、毎日 2ch 見てるわけじゃないし...。
212名無しさん、君に決めた!:03/01/31 18:06 ID:???
>俺はマクロ側で () 必須にするのが好み。

#define a(b) (b * 5)
printf("%d\n", a((4 + 8)));

という意味だったら死刑。
213名無しさん、君に決めた!:03/01/31 18:07 ID:???
早くこの荒らしアク禁に汁!
214名無しさん、君に決めた!:03/01/31 18:07 ID:???
煽ったつもりはないですけど。
煽っているのはの方でしょ。
215名無しさん、君に決めた!:03/01/31 18:08 ID:???
これ (=このくだらないつっこみのために遅レスしたの?) 書いといて...

> 煽ったつもりはないですけど。

と来たか...。

で煽りがないとは言わんけど、は見てんのかなぁ。
216名無しさん、君に決めた!:03/01/31 18:08 ID:???
驚いたので感想を書いただけです。
亀レスでなければ驚きもしないですけど。
くだらないという表現がまずかったでしょうか。