宿題手伝いますYO!!


宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること
・質問内容がちゃんと日本語になっていること
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。

前スレ http://pc3.2ch.net/test/read.cgi/tech/1027756023/


http://pc3.2ch.net/test/read.cgi/tech/1026138039/
http://pc.2ch.net/test/read.cgi/tech/1024592344/
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
http://pc.2ch.net/tech/kako/982/982853418.html
http://piza.2ch.net/tech/kako/972/972032579.html

>>1
乙~


       リーナス                       ジョブス
        /⌒◆                      ◆⌒\
       / 冫、)                     ( ヘ´   ヽ
     _/  ` ∠_                       ヽ´   人
    イ  ゝイノ | ヽ                      冫y彳 (;⌒ヽ
    || ヘ  。   | /|                    / 。  |  /|ヽ
    || |  。 /  | |         ゲイツ        | | 。 /.|   | |
    |  |  。 /  | |                     | | 。 / .|   | |
    |⌒|  。   | |          /⌒◆       | | 。 _| イ| |
    \|` ヽ   ヽ/         / 冫、)      ゞ |`ヽ |   | |
    /|\人/\|        ―/  ` ∠_      \|\人ヽ /|冫
    || || | | | |       /|  ゝイノ | \      ヽ|| | |/  |
    ||/|| | | | |       / '||   。    ||  \      || | ||  /
      || | | | |       / /|   。 /  |\  )      || | ||/ |
      ヽ| | | |.     ┌|⌒|_|   。 /  |/⌒/ |     || | | |  |
       ヽ| | |      || |  | |   。   / _/ | |      ヽ| | |  |
        | | |     || |⌒|\人ヽノ|⌒|  | |        ヽ| |  |
        | く__く     >>  ̄\__ | ̄ヾ.くく         >_ > )
        \   >.  /ヽ.__/     ̄\./ ̄/        <   /
         `ー' .   ̄ ̄           ̄ ̄       `ー'
navi2chで始めてスレ立てた…不具合あったら言ってくれ.

>>3
微妙にウケタw
>・マルチポストは厳禁です。
>・キーワードが分かっているなら、http://www.google.co.jp を活用すること
>・質問内容がちゃんと日本語になっていること
>・自分の力で頑張ってみたことを伝えられる人。
>・どこまでわかったのかを書くこと。

こんなくだらないことを書くなボケ
1にかまわずどんどん質問しろよ
6モナ吉:02/08/15 23:45
お疲れ~>>1さん
>>5
あ、それ前スレからのコピペだよ.
ちなみに前スレのRinaたんは前前スレからコピペしてますた.
一応, 張った方がいいと思ったんだ…すまん.
>>1が前スレより短いのがすごくいい。

>>7
まあまあ、大したことじゃない。気にするこたない。
新スレ立ててはみたものの, 宿題が来ないと暇だな….
あ, 仕事しろよとか言うなよ.
長いソースを貼る必要があるなら↓ここも使える鴨。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
>>11
フォローthx. 今度から>>1に入れたほうがいいね.
8月の末あたりにドカっと来るのだろうか
>>13
そうかもしれん….
嵐の前の静けさってやつだね・・・
(;´Д`)ハァハァ
この時期はやってる奴は遊んでるし, やらない奴は'まだ'遊んでるしで
一番暇なんだろうね….
ほほう。
暇だなぁ…. 誰か宿題作ってよw
これからくるであろう宿題を、予想して先に解く。
こうか? >>19

#include <iostream>

using namespace std;

int main(int argc, char **argv) {
  cout << "シャイン!! >> 25" << endl;

  return 0; // exit successful.
}
君主論で有名なマキャベリがさ、戦争をしたときに作戦を立てたんよ。
でその時に、いくらなんでもどんな馬鹿でもこんなことはやるまい、と思われる選択は除去して練ってたわけ。
そしたら、その相手がやるまいと思われた作戦を取ってきて、マキャベリは見事に敗北。
そのときの言葉が「真の馬鹿には勝てん」。

なにがいいたいかというと、こんなところで聞いてくるようなヤツの宿題は予想できねぇってコト。
>>21
良いこと言った!
>>21
昔の将棋ゲームとかで、コンピュータ相手にセオリー無視なことをしたら勝手に降参してきた経験があるが、
それに近い?
>>21
しかし、それを狙ってやったらその敵将は名称だな。
ということは、誰にも予想できないような宿題を作れれば・・・
夏休みの宿題は
「夏休みの宿題をやらないこと」
>>25
たしかにここにいる誰もが手伝えないな…。
しかし、バグなんて予想できないほど馬鹿なものであることが多いしな。
28デフォルトの名無しさん:02/08/16 06:43
>>23
最近でもそんな将棋マンガがあったなあ。
ところで
こ こ の 1 の 家 族 構 成 と か は ど う な っ て ま す か
>>1ですが何か?
30デフォルトの名無しさん:02/08/16 10:59
>>11
そこのいた、かちゅ~しゃに対応してないから嫌い。

できるだけ回線つなぐ時間を短くしないとばれるんだよー。
31デフォルトの名無しさん:02/08/16 12:54
>>11
スペースで字下げしても大丈夫なのか。
だったらいいかも。
32デフォルトの名無しさん:02/08/16 12:54
早く宿題やりてーよー…
C++の宿題こないかな~
33デフォルトの名無しさん:02/08/17 05:43
おい!>>1
家族構成はどうなっていらっしゃるのですか?
34KB:02/08/17 06:20
HSPの質問です。
gifo 7 ってなんですか?
ヘルプにないです
「GI-Fo」というアメ産のTV番組があってな、
その7作目ということだ。
36デフォルトの名無しさん:02/08/17 06:27
なんというかこのスレ立てたヤシは取り合えずセクハラされるという
仕組みだったことを忘れてた。

おい!>>1
彼氏のほどはいらっしゃるのですか?
37デフォルトの名無しさん:02/08/17 06:33
普段は学校のパソコンで
「スタート」→「プログラム」
から、VisualCというものを使っていたんですが、
家のパソコンには入っていないようです。
どうすればいいでしょうか?
学校のパソコンをソーシャルファッキングしてください。
具体的にはHDDをぶっこ抜くと、、
3937:02/08/17 06:49
>>38
わかりますた。朝一でがめてきまぷ。
40KB (HSP):02/08/17 06:52
いや違いました、 ginfo 7 でした。質疑応答スレを参照。
何をききたいかといいますと。
input で代入された複数の文字を上それぞれが、かぶさらないように、
複数にランダムに横に並べるには?ということです、はい。お願いします。
HSPDA.dll は#include が難しかったので、標準命令で。
座標を乱数で出しても、文字の長さで変わってしまうので…
>39
VisualStudioのパッケージ盗んだほうがいいんじゃない?
どうせ学校の研究室なんてパッケージが
その辺にゴロゴロ置いてあるだろうし。
>>40
> ・マルチポストは厳禁です。
>・キーワードが分かっているなら、http://www.google.co.jp を活用すること

つか、一発で出たぞ。心が狭いから教えてやらんけど。
43KB (HSP):02/08/17 07:05
何が出たんですか?>>42
unko
45asdf ◆ZlQYR1MY :02/08/17 07:16
GINFO Is Not For Omae.
47KB (HSP):02/08/17 08:10
ginfo 7 hsp ででてこないんですYO!!
マニュアルにも ginfo 6 までしかないし。
マルチポストを指摘してくださったのなら分かると思いますが。
481:02/08/17 08:41
>>33
一人暮らしだ、残念ながら。

>>36
男だ、俺は。彼女ならいるぞ…いつ別れてもおかしくないような雰囲気なのが1人な。

>>47
>マルチポストを指摘してくださったのなら分かると思いますが。
おぃおぃ、なんて図太い奴なんだよ…。
>HSPの質問です。
>gifo 7 ってなんですか?
>ヘルプにないです
っていうか宿題じゃねーじゃん。マニュアルに載ってないんだったら試しに自分で
使ってみれ。
49KB (HSP):02/08/17 09:43
ソースコードとかへたに乗せちゃうと、
チーチャーに見つかる やも知れない。
夏休みの宿題ですYOこれ。自由課題ですからね。
つかいましたよ>>48 んでもわけわからねぇっす。
エラーにならないのが不思議。
>ソースコードとかへたに乗せちゃうと、
>チーチャーに見つかる やも知れない。

>夏休みの宿題ですYOこれ。自由課題ですからね。
これ、相反してませんか?自由課題なら別に見付かってもいいじゃないですか。
考えて分からないところを聞いてるんだから。

>つかいましたよ>>48 んでもわけわからねぇっす。
だったら使わなければいいでしょう。自由課題なら自分でできる範囲でいいんだから
調べても分からないなら諦めたらどうですか?
51Kate@1:02/08/17 10:50
ワタシが本当の1、Kateです。
恭祐さんのオタクにHomestayしています。
ProgrammingのHomeworkにadviseできますから、
ココで日本語おぼえれたらうれしいです。

それでは、ヨロシクオナガイシマス!
そんなアホな…。
53コギャルとHな出会い:02/08/17 10:51
http://s1p.net/nnn1

   朝までから騒ぎ!

  ヌキヌキ部屋へGO

   女子高生とH
この広告短くなったな
>>54
祭り板に広告アッタクスレがあったね。
いま読んでるところ…。
VisualBasic(ノーマル・EXCELのVBAも同じ?)で
認証チェック機能の1部分 『小文字チェック』を作らなくてはいけないのですが、
どこから手をつければいいのか分かりません。
VBなんてこの課題が与えられて初めて知りました。

EXCELのVBAで作った認証フォームに6文字のIDを入力します。
その入力したIDの中に英語の小文字が含まれていたらfalseを返す、
 {VisualBasicで作成せよ}

というのが課題なのですが本やVB紹介のサイトを見ても載ってありませんでした。
文字列をどうにかすればいいのだとは思うのですが、
どなたか優しい方お教えくださいませんか?
57世界一のうんこ:02/08/17 13:53
>>56
文字コード調べたらええんでないの
文字コードとは何ですか?
厨すぎる質問ですいません。本当に分からないんです。おまけにバカです。
5956です:02/08/17 14:00
lcaseとかのことでしょうか?
60デフォルトの名無しさん:02/08/17 14:02
>>53

http://ime.nu/kado7.ug.to/net/
↑こっちが404になってて、潰れたのかと思ったら、
単に移転しただけだったのか。
F5攻撃とかやるんなら、俄然参加するけどな…
61世界一のうんこ:02/08/17 14:06
>>58
文字も内部的には数字だよ
たとえば'A'は16進数で41。
6256です:02/08/17 14:15
>文字も内部的には数字だよ
>たとえば'A'は16進数で41。
>>61 世界一のうんこさん
なんとなく(自分のこの曖昧さがいつもいけないと思うのですが)
小文字を数字として扱っていって
小文字だけを弾く(排除する)方向で考え方は合っていますでしょうか?
6309052905722:02/08/17 14:17
09052905722
64たけちん:02/08/17 15:20
C言語のコメント(/*で始まり*/で終わる)の正規表現を求めなさい。
演算子は次のものを使用すること。
1.または "|"
2.連結は省略してよい
3.0個以上の繰り返しは"*"
4.1個以上の繰り返しは"+"
任意の文字は<文字>であらわす。
また、「c1,...,cn以外の文字」は
<c1,...,cn以外の文字>とする。

プログラムの問題ではありませんが解ける人いますか?
コメント内に"*/"が入らないようにすることができません。
コンパイラを造ったことがある人とかいませんか?
お願いします。
65デフォルトの名無しさん:02/08/17 15:24
/*<*/以外の文字>**/
コレじゃダメか

perlの正規表現で書け、とかなら簡単なんだけど、
こんな擬似正規表現定義されてもなぁ…
66たけちん:02/08/17 15:33
>>65
それだと
/* * */というコメントが掛けませんよ。
とりあえず、どんな定義でもいいので正規表現
で書いてくれたらいいです。
あとはこちらで形を直してみますので。
よろしくお願いします。
67コギャルとHな出会い:02/08/17 15:36
http://book-i.net/sswab/

  ヌキヌキ部屋へ

女子高生とHな出会い
68デフォルトの名無しさん:02/08/17 15:40
69デフォルトの名無しさん:02/08/17 15:41
/*<*|/以外の文字>**/

こうじゃないんだから
/* * */
これは書けるんじゃないの?
70デフォルトの名無しさん:02/08/17 15:58
perlでやるとなると、改行を跨いで複数行にわたったコメントの
処理が少し面倒だな
ついでに

char *string = "文字列 /* コメントか */ ちんこ";

こういうのはどうするんだろうか…
7166:02/08/17 16:19
>>69
えーと<ab以外の文字>はaとb以外の文字であり
「abの文字列以外の文字列」といった意味ではありません。

>>70
perlでなくてもなんでも良いですよ。
分かる範囲で独自に正規表現を定義してもらってもかまいません。

後、最初に述べた表現では0個以上や1個以上がわかりに
くいようですのでtexのように{/}^*とかで表してもらった
方が良いかもしれません。
72たけちん:02/08/17 16:22
すいません。コンピュータを再起動したので名前忘れてました。

>>70
あまり複雑なのは考えなくていいですよ。
そういったのはないものとして考えてください。
お願いします。
73 :02/08/17 17:04
>>72
/\*\([^*]\|\*[^/*]\)*\*+/
7472:02/08/17 17:07
emacsの正規表現で書いてしまった。一般的な正規表現ではこうだな。
/\*([^*]|\*[^/*])*\*+/
75Kate:02/08/17 17:12
>>たけちん
operatorがそれだけしかないのですか。unbelievable!!!
もし'/'や'*'をescapeしなくてよいならば、
/*<文字>**/
ですむでしょ?minimam-matchingならばね。どうかしら。
76デフォルトの名無しさん:02/08/17 17:13
/*(<*以外の文字></以外の文字>)**/

屁理屈レベル。
括弧()はありなのか
77デフォルトの名無しさん:02/08/17 17:20
m(\/\*.*?\*\/);

未テスト
78たけちん:02/08/17 17:24
>>74
([^*] | \*[^/*])*
ここの意味がいまいちわからないんですが、
\*は"*"の意味ですね?
[^*]はどういう意味でしょうか?

>>75
/*<文字>**/
これだと”/* */ */”がいけてしまうことになりますよ。


>>76
括弧はありです。

> /*(<*以外の文字></以外の文字>)**/

これだとコメント内が2文字づつしか書けないですよ。
たぶん、このようにしようとしたんだと思いますけど、

> /*(<*以外の文字> | </以外の文字>)**/

これだと ”/* */ */”このような文字列が可能になってしまいます。
79デフォルトの名無しさん:02/08/17 17:27
> /*(<*以外の文字></以外の文字>)**/

括弧の後ろに一つ * があるじゃんよ
この * は()にかからないのか
/**/の処理は、state machineでよくでるけど、
状態のあるのを正規表現にするのはむつかしくない?
8174:02/08/17 17:31
>>78
[^*] は * 以外の文字。
[^/*] は / と * 以外の文字。
82たけちん:02/08/17 17:34
>>79
> /*(<*以外の文字></以外の文字>)**/
まず最初の2文字は”/*”の意味ですね。
そして、次に
> (<*以外の文字></以外の文字>)*
は「0個以上の”*”以外の文字と”/”以外の文字」という意味ですよね?
ということはa=*以外,b=/以外とすると
ab,abab,ababab...となります。
これでは”/* a */”といった表現が入りません。
83 :02/08/17 17:35
>>79
それだと /* * */ や /* / */ にマッチしないよ。
84デフォルトの名無しさん:02/08/17 17:35
>>82
なるほど
85デフォルトの名無しさん:02/08/17 17:37
>>75
>/*<文字>**/
>これだと”/* */ */”がいけてしまうことになりますよ。
つまり欲張りマッチというわけか…
86たけちん:02/08/17 17:38
>>81
> /\* ([^*] | \*[^/*])* \*+ /
これだと”/* **a */”が入っていませんよね。
他にも”*”の後に文字列が続く場合が入りません。
そもそも/* */式のコメントって正規表現じゃ表せないんじゃ?
88たけちん:02/08/17 17:44
>>85
説明が悪かったようなのでもう一度簡単に説明します。
まず最初は”/*”で始まり、終わりは”*/”で終わります。
その間には任意の0個以上の長さの文字列が入ります。
要するに、何もなしでもいいわけです。(ex. /**/ )
ただし、文字列の中に”*/”が含まれてはいけません。
”*”や”/”が入るのはいいです。(ex. ×/**/*/ ○ /*/*/)
8974:02/08/17 17:46
>>86
なるほど。それじゃ、これでどうだ?

/\*([^*]|\*[^/*]|\*\*[^/*])*\*+/
</><*>(<*以外>|<*></*以外>|<*><*></*以外>)*<*>+</>
90たけちん:02/08/17 17:49
>>87
それが表すことができるようです。
僕も考えていたんですがどうしても”*/”が
文字列の中に入るのを避ける方法が思いつきませんでした。
この問題には続きがあり、これをオートマトンで表します。
オートマトンの方は解ったんですけど、正規表現は解りませんでした。
91たけちん:02/08/17 17:53
>>89
> </><*>(<*以外>|<*></*以外>|<*><*></*以外>)*<*>+</>
うーん、これだと”/* ***a */”が無理ですね。

</><*>(<*以外>|<*>+</*以外>)*<*>+</>
これならどうでしょうか?
9274:02/08/17 18:00
>>91
それが正解みたいやね。
93たけちん:02/08/17 18:05
>>74
そうですか。
ありがとうございます。
貴方のおかげです。

他の皆さんも一緒に考えてくれてありがとうございます。
94デフォルトの名無しさん:02/08/17 18:40
でもさ、C言語のコメントって最小マッチだよ。
>>91
> </><*>(<*以外>|<*>+</*以外>)*<*>+</>
</*以外>に*はいらんのでないか?
96たけちん:02/08/17 18:55
>>95
いります。
あると、”/* **/ */”といったことが書けてしまいます。

>>94
最小マッチとはどういう意味ですか?
97たけちん:02/08/17 19:15
調べてきました。
最大マッチ=パターンマッチがもっとも長い文字列とマッチする
最小マッチ=パターンマッチがもっとも短い文字列とマッチする
てことですね。

なんて言うか、ソースからコメント文にマッチするのを探すのではなく、
コメントの構造を正規表現で表すとどうなるかという問題でした。
問題文の説明が足りなかったと思います。
すいません。
9895:02/08/17 21:27
>>96
すまん、94を忘れてた。
どうでもいいけど、「たけちん」とかいう人がこんな事聞いてくるとヘンな気分だな
100たけちん:02/08/18 20:58
>>99
なぜですか?
>たけちん
だってlhasaやsusieの作者がたけちんだから。
102元たけちん:02/08/19 00:39
>>101
すいません、知りませんでした。
今度から他の名前にします。
いや別に改名する必要はないけど(w
肝心の宿題がちっとも来ない罠。ageてみるか…。
嵐の前の静けさ…
静けさだけで嵐の季節は過ぎたりしてね。
すわ、異常気象か?
107デフォルトの名無しさん:02/08/19 17:47
BASICのプログラムの宿題が出たのですが
分かる方いらっしゃいますか?
とりあえず書いてミロ
>>107
BASICにも色々あるしねー。
とにかくいきなり具体的に全部出してみるしか
110107:02/08/19 17:56
波をシミュレートしたプログラムを作れといわれているんですが何処から手をつけていいかわからず困っています。
よろしくお願いします。
波、ってサイン波とかじゃなく、津波とかの波か?
112107です:02/08/19 17:59
次のプログラムは自然数Aに対してその平方根を近似する分数B/Cを求める
ものでここではB/Cの代わりにBとCを並べて出力している。

100 INPUT A
110 B=0
120 C-1
130 B=B+1
140 IF B*B<A THEN GOTO 130
150 PRINT B;",";C
160 FOR D=1 TO 4
170 C=2*C
180 B=2*B-1
190 IF B*B<A*C*C THEN B=B+1
200 PRINT B;","C
210 NEXT D
220 END
113107です:02/08/19 18:02
2を出力したとき
  
(  )、1
(  )、2
(  )、4
(  )、8
(  )、16  と出力される。

5を入力したとき
(  )、1
(  )、2
(  )、4
(  )、8
(  )、16  と出力させる。
120LINE、間違ってないか?
115107:02/08/19 18:05
サインとコサインを足した波です。
Asin(a) + Bcos(a)

でAとBは変えられるようにして画面表示させます。
わかる方いますか。
116107です:02/08/19 18:06
第150行で表示されるBの値として、当てはまるものをつぎの1~4の
中から選ぶと(  )である。

① Aの2乗がn以上となる最大の整数n
② nの2乗がA以上となる最小の整数n
③ Aの2乗がnより大きくなる最大の整数n
④ nの2乗がAより大きくなる最小の整数n 


>>112-113,116
> 120 C-1
> 2を出力したとき
どうにかしろ
>113
2を
2,1
3,2
6,4
12,8
23,16

5を
3,1
5,2
9,4
18,8
36,16

>116
119だすと:02/08/19 22:56
構造体のフローチャートの書き方が分かりません。図解で載っているHPの
アドレスを教えて頂けないでしょうか。
120デフォルトの名無しさん:02/08/19 23:03
「構造体のフローチャート」という言葉の意味が分かりません。図解で載っているHPの
アドレスを教えて頂けないでしょうか。
121だすと:02/08/19 23:08
すんません。超初心者です。構造体のアルゴリズムの書き方が
図解で載ってるようなHPは無いでしょうか、あったら紹介して
頂けませんでしょうか。プログラミングの問題ではないんですが
本とかに載ってないんです。
「構造体のアルゴリズム」という言葉の意味が分かりません。図解で載っているHPの
アドレスを教えて頂けないでしょうか。
構造体のアルゴリズムって何ですか?
無関係とは言わないが、そういう言葉の使い方はしません。
124Java厨:02/08/19 23:13
構造体なんて過去の腐った汚物は投げ捨ててクラスを覚えなさい。
>>121
構造化されたプログラムのフローの図法なら
PAD(Problem Analysis Diagram)とか
>>124
お前みたいな馬鹿がいるから(そして重いから)Javaが叩かれるんだよ. 失せろ.

>>125
PADかぁ…懐かしいですな. あれってまだ使ってるとこあんの?
>>121
構造体の視覚化ならUMLのクラス図とかオブジェクト図とか

>>126
どうなんでしょ?
128デフォルトの名無しさん:02/08/19 23:23
>>124
Java厨にも成り切れてない奴ハケーン
半端にC++かじったの丸出し
>>127
いまだにフローチャート書き出す奴がいて欝…。
ずっと俺様図で書いてたわけだから、それを標準化したUMLは偉大だと思う。

>>128
アフォーは放っておきましょうや。
でも構造化プログラミングの図を描くなら、フローチャートで用足りるのでは?
やっぱUMLの、それに代わる図(あるのか知らないけど)を使いますか?
俺(他人のための資料としての)図は描かないんで、良く分からんのですが…
アクティビティ図じゃ不満かい(´ー`)yー~~~

132>>118:02/08/20 03:11
ありがと~ 
133107です:02/08/20 03:27
次のプログラムはx=0、1・・・・・、9に対するA掛けるXの2乗+bx+cの
最小値と最大値を求めるものである。(  )に適当な行番号を入れて
プログラムを完成せよ。

100 INPUT " a=";A
110 INPUT " b=";B
120 INPUT " c=";C
130 U=C
140 V=C
150 FOR X=0 TO 9
160 Y=A*X*X+B*X+C
170 IF Y>=U THEN GOTO ( )
180 U=Y
190 IF Y<=V THEN GOTO ( )
200 V=Y
210 NEXT X
220 PRINT "最小値";U
230 PRINT "最大値";V
240 END
134107です :02/08/20 03:33
上のプログラムを実行して、a=?に対して -1,b=?に対して7,c=?に対して28
を入力すると、180行は(   )回 、200行は(   )回実行され
最小値=(   )
最大値=(   )
が表示される。また、170行の不等号>=を>に、190行の不等号<=を
<に変更したのち、同じデータを入力すると、180行は(    )回
200行は(   )回実行され
最小値=(  )
最大値=(  )
        が表示される。
135107です :02/08/20 03:38
(2)

冒頭のプログラムの170行と180行を削除して、170行を
170(            )
と書き直しても同じ結果を得る。同様に190行と200行を削除し
190(            )
と書き直すこともできる。ただし、上記の(  )については、下記より
もっとも ふさわしいものを一つずつ選んで書きなさい。

IF Y>U THEN U=Y IF Y<U THEN U=Y
IF Y=U THEN U=Y IF Y>V THEN V=Y
IF Y<V THEN V=Y IF Y=V THEN V=Y
>>133
190, 210

>>135
IF Y<U THEN U=Y, IF Y>V THEN V=Y

>>134
てめーで計算すれ。
>>134
3, 2, 40, 10
4, 3, 40, 10
か?

ってか、このスレってこういう工房の宿題を求めてるのか?
このスレは宿題を手伝うスレで
丸投げするヤシを甘やかすスレではないと思われ。
というわけで>>107は氏ね。
139107です :02/08/20 15:37
すみませんでした。
140 :02/08/20 23:42
●投げオーケー。どんどんこいよ。
暇だから。
141デフォルトの名無しさん:02/08/20 23:53
>>138
他スレで丸投げされると嫌だからこのスレがあるんだろ。
うるせーバカ。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。

丸投げする人は、せめて

・自分の力ではまったく頑張っていないこと
・まったく分からないこと

この2つぐらいは書こうよ。
144デフォルトの名無しさん:02/08/21 01:01
丸投げするならするでもいいが、きっちり丸投げしろと思う今日この頃。
宿題をそのまま書き写したほうが、まだましではないかと、思う次第であります。
145▽・w・▽:02/08/21 01:54
みんながんばれー!
>>144
同意。独自の言葉を使われても困ってしまう。
>>145
お、わんちゃん久しぶり。
わんちゃんって
▼・w・▼
じゃなかったっけ?
▽・w・▽
だとザリガニみたいでヤ
元祖は白抜きだったような。
150デフォルトの名無しさん:02/08/21 17:24
俺、このスレ暦短いんだけどさ、
大体いつもどんな宿題来んの?
大学で出されたと思われる宿題が結構多い気がしたんだけど
結構多いっつーか、ほぼ全て。
極まれに新人君への宿題とかあるかも。
初めて来たが、>>1の注釈にワロタ
▽・w・▽
154デフォルトの名無しさん:02/08/21 19:08
>>151
ふーん、なるほど。
気軽にネットできる環境にいて、なおかつ2ch利用者で、
そのうえこのスレの住人で…、っていう条件で間引きされていくと
宿題の種類は限定されてくるのかもね
…いや、投稿者の種類が限定されるだけか…
>>154
ネットで丸投げできる人 (=ねたも気にしない) で
2chねら (=学校で「逝ってよし」と優越感たっぷりに逝っているヤシ=初心者=厨房で…
>>145
チ○○立ちます他。
事実
man(namihei,mail)
man(fune,femail)
man(sazae,femail)
man(masuo,mail)
man(katuo,mail)
man(wakame,femail)
man(tarao,mail)

を用いて

parent(sazae,X) → tarao
marriage(namihei,fune) → true

とか、なるべく沢山家族関係を判断できるようにしろといわれました。
当方文系で理系音痴なため、何がなんだかさっぱりです。
教官をギャフンと言わせたいので力をお貸しください。
159デフォルトの名無しさん:02/08/22 09:20
age忘れ
事実が足りない気がするのだが気のせいか?
>>160
や、足りないものは勝手に補ってよいそうなので。
とりあえずこちら(教官)側からの条件はこれだけ、らすぃです。
なんつーか、ただギャフンと言わせたいだけなら
問題文の不備を指摘したレポートでも書いたほうが良いと思われ。
なるべく沢山家族関係~からみて、家系図ツリーのようなものを
つくる宿題とみていいだろう。イソノ家を例につかっていることから、
そんなにパフォーマンスは問題にしなくてもいいだろうと推測できる。

まず、各人につき 妻/夫、子、父、母 が記されていれば、
家族関係はその連鎖で表現できる。(祖父:父の父/母の父など)
(嫌がらせがしたいなら、妻/夫を複数もてるようにしたり、同性の結婚、
継母、養子、近親婚などの要素を盛り込むこともできよう)

あとは、すべての人にIDを付け、自分からみた家族関係を
IDで表現させる。人名->ID、ID -> 人(家族関係)の巨大なハッシュに
全てを放り込み、家族チェーンをたどるごとに、テーブルを見にいく。
実際には、AddChild(p,c)とか、Marriage(p,p)とかを使い、関係を構築
するのがよいとおもわれる。
#近親婚による、無限ループには注意せよ。
>>162
や、できないならできないでそう言ってあげればいいじゃん。
かく言う漏れもできません。

>>158
ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/prolog/
この辺じゃだめなのけ?
mail, femail (プ
言語の指定はないのか?
167158:02/08/22 11:46
遅くなってすみません。言語はprologってのです。
>>158さんのリンク先見て勉強してきます。

>>163さん、ありがとうございます。
おっしゃってる方向でやってみようと思います。

なんとかなったら、成果を貼るべきなんでしょうか?
168デフォルトの名無しさん:02/08/22 13:45
Delphi6にて/言語は関係ないかも...
目的、プログラムからWINDOSのアクティブデスクトップにhtmlを登録する。
関連するunit   ShlObj,comobj, WinInet;
現在の進捗
IActiveDesktop <WINDOWSのコンポーネントを使って実現する(多分)
このコンポーネントを使って壁紙の変更はできている。(コンポーネントの呼び出しは間違っていない)

質問
1)このコンポーネントでそもそもアクティブデスクトップにHTMLを登録できるのか?

2)もし可能ならどのメソッドを使うのか?

msdnURL
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iactivedesktop/iactivedesktop.asp
3)いくつか該当しそうなメソッドがあるので、
ADDDesktopItem()
ADDUrl()
を試したのだが...パラメーターエラーを返してくる。
何処がエラーだか分からない。(続きます)
169デフォルトの名無しさん:02/08/22 13:46
V以下資料&実験報告
hObj := CreateComObject(StringToGUID('{75048700-EF1F-11D0-9888-006097DEACF9}'));
ADesktop := hObj as IActiveDesktop;

with Cop do begin
dwSize:= sizeof(Cop);
iLeft:=0;
iTop:=0;
dwWidth:=300;
dwHeight:=300;
izIndex:=0;
fCanResize:=true;
fCanResizeX:=true;
fCanResizeY:=true;
iPreferredLeftPercent:=100;
iPreferredTopPercent:=100;

end;
With Co do begin
dwSize:=sizeof(Co);
dwID:=0;
iComponentType:=COMP_TYPE_HTMLDOC;
fChecked:=true;
fDirty:=true;
fNoScroll:=true;
cpPos:=Cop;
StringToWideChar('hoge',wszFriendlyName, MAX_PATH);
StringToWideChar(OpenDialog1.FileName,wszSource,INTERNET_MAX_URL_LENGTH);
StringToWideChar(OpenDialog1.FileName,wszSubscribedURL,INTERNET_MAX_URL_LENGTH);
end;
// Ecode:=ADesktop.ADDUrl(hwnd,wstr,Co,ADDURL_SILENT);
Ecode:=ADesktop.AddDesktopItem(Co,0);

実行するとパラメーターが不正とエラーが帰ってくる。

---------------------------------------------------------------
かなりお手上げ状態です。
パラメーターが不正は、おそらくconponent 構造体が間違っていると推測されるが
どこが間違っているか不明。

さらに続きます
170デフォルトの名無しさん:02/08/22 13:47
ShiObj unitで宣言されている _tagCOMPONENTの宣言文
type
{$EXTERNALSYM _tagCOMPONENT}
_tagCOMPONENT = packed record
dwSize: DWORD; // Size of this structure
dwID: DWORD; // Reserved: Set it always to zero.
iComponentType: Integer; // One of COMP_TYPE_*
fChecked: BOOL; // Is this component enabled?
fDirty: BOOL; // Had the component been modified and not yet saved to disk?
fNoScroll: BOOL; // Is the component scrollable?
cpPos: TCompPos; // Width, height etc.,
wszFriendlyName: array[0..MAX_PATH - 1] of WideChar; // Friendly name of component.
wszSource: array[0..INTERNET_MAX_URL_LENGTH - 1] of WideChar; //URL of the component.
wszSubscribedURL: array[0..INTERNET_MAX_URL_LENGTH - 1] of WideChar; //Subscrined URL
end;

msdnのそれと見比べると微妙に違う部分がある
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/component.asp

------------------------

どなたか解かる方、ご教授ください。
171デフォルトの名無しさん:02/08/22 13:54
http://www7.big.or.jp/~mb2/bbs/up/img-box/img20020822093804.gif

問題:
まずランダムな2つの数を決定する。(例:12と39)
セル間の最短距離を求めるアルゴリズムを考えよ。(上の場合:5)

上の問題なんですけど、どなたか、お助けください。
ひとつに着目して、その回りを考えて求める気がするんですが…
よろしくお願いします。できれば、Cでお答えいただくとうれしいです
hexに座標を打って、srcからdstへの直線のベクトルを算出し、
それに一番ちかいhexを新たなsrcとして、dstに到着するまでに
経由したhexの数を数える、というあたりか。
ちなみに、hexを移動するのにコストがかかるなら、
ダイクストラ法を使うべき。で、それを見越すなら、
この問題も、hexを接点とし、まわりのhex接点へ
コスト1の枝がのびているような感じで解くべし。
>>172
座標があるなら、連立方程式を解くだけだぞ。
そか、座標があるなら、sqrt( (x1-x2)² + (y1-y2)² )で
小数点以下切り上げで済むんかな、、、微妙に不安デス

えと、連立方程式ッテ?
縦のセル数と斜めのセル数を使って連立方程式を立てろ。
最短距離は縦セル数+斜めセル数になる。
177171:02/08/22 17:13
>>172=173=175,176
ありがとうございます。
ところでどのように、連立方程式を立てるのですか?
それに、これを座標に変換した場合、
任意のセルはどのように表されるのでしょうか?

1を第一層として、周りを順に2・3…層と考えてランダムな定数(一つ目を)
の層数(3n(n-1)+2<=N<=3n(n+1)+1 (n=1,2,3...))を求めましたが、
後が続きません。

もう少し、お付き合い願えたらうれしいです。。。
178176:02/08/22 17:55
>>177
座標の単位を横ax 縦ay
座標上での 2セルの差を横x 縦y
斜めセル数 m 縦セル数 n とすると

x = ax * m
y = ay / 2 * m + ay * n

という方程式が立てられる。
179デフォルトの名無しさん:02/08/22 20:45
Cです。

int型の変数、aとbを用意し、それぞれ3と7で初期化する。
そのふたつの変数の値を足したものをディスプレイに表示せよ。

誰かわかりませんか?
>>179
#include <stdio.h>
int main(void){int a=3,b=7;printf("%d",a+b);return 0;}

じゃだめなのか?
もっと深い意味があるのか??
181デフォルトの名無しさん:02/08/22 20:53
>>180
動きました! ありがとうございます!
もうintとかprintfとかさっぱり分からないんです。というか授業出ていませんので。
授業出ないなら教えてくれる友達ぐらい確保しとけよ・・・
マジレス房がツレタ(^Д^)
( ・ω・)ノ――――@" クルクル ( ・ω・)ノ@ パシッ
そんな宿題が夏にでているとは、、、
在る意味驚愕
185デフォルトの名無しさん:02/08/22 20:57
printfが分からんのによくコンパイルと実行ができたな。
俺でもわかるのにな(藁 >int,printf

でもたまに思わず

int func(void)

int func()
としてしまう罠。
187デフォルトの名無しさん:02/08/22 21:03
>>180がわからないとは、
Helloworld以上>>180以下ということか。
文字列s1中に含まれる[a-z]([]は除く)を[abcd ・・・ xyz]に展開し
s2に入れる関数expand(s1,s2)を作れ。
っていう問題。
プログラミング言語Cの演算3-3なんですけども。
189デフォルトの名無しさん:02/08/22 23:11
アンサーブックに載って…、イヤイヤイヤ…
190デフォルトの名無しさん:02/08/22 23:24
a-z
という文字列が見付かったら、
abcdefghijklmnopqrstuvwxyz
という文字列に置き換えればいいの?
それとも
c-h → cdefgh
とかも対応するのか
191デフォルトの名無しさん:02/08/22 23:28
>>190
後者にも対応します。
問題ではさらに、
a-b-cや0-9などの対応もせよ、とあります。
forループで一発だぁね…(ぼそ
>>191
手元にその本がないから何ともいえんのだが、
[a-]とか[-z]とか[a-2]とか[z-a]とか[-]とかが与えられたときどーすんだ?
そのプロトタイプだとa2があふれる可能性が考えられるが、それは別にいいのか?

問題は省略せずに全部書いておくれ。
>>188  バグ付きですが…

void expand( char *s1, char *s2 )
{
  char *pt;
  char ch;
  int isnotfirst = 0;

  pt = NULL;

  while( '\0' != *s1 ) {
    if( isnotfirst && '-' == *s1 && *s2 < *(s1+1) ) {
      for( ch = *s2+1; ch < *(s1+1); ch++ ) {
        s2 ++;
        *s2 = ch;
      }
    }
    else {
      if( isnotfirst ) {
        s2 ++;
      }
      else {
        isnotfirst = 1;
      }
      *s2 = *s1;
    }
    s1++;
  }
  *(s2+1) = '\0';
}
>>193
問題に与えられていない条件については
鼻から悪魔が出てもかまわないということで
まったく考えない、とか。
196デフォルトの名無しさん:02/08/23 10:11
鼻から悪魔? ん~、その比喩がわけわか。
いつ鼻から牛乳が飛び出してもおかしくない、そんな雰囲気がいいんじゃねえか
198171:02/08/23 21:32
解決しますた
>>193
問題文は以下のとおりです。

--
文字列s1中のa-zのような省略記法をそれと等価な完全リストabc
・・・・・xyzにしてs2中に展開する関数expand(s1,s2)を書け。大文字、小文字、数字
を許し、a-b-cやa-z0-9や-a-zのような場合も処理できるようにせよ。先
頭および最後の-は文字とみなすことにする。

--

>>194ありがとうございます。参考にさせてもらいます。
200デフォルトの名無しさん:02/08/25 19:30
質問があります。
今、ファイルを検索してコマンドライン引数で指定した文字列が
ファイルの中にあれば、
その文字列を取り出して出力させる。といったプログラムを作っているのですが、
findfirst,findnextなどを使って同じディレクトリのファイルを検索することは
できるのですが、
サブディレクトリの検索の仕方が分かりません。
どなたか教えていただけないでしょ
うか。
初歩的な質問かもしれませんがよろしくお願いします。
再帰を使え
>>200
OSはWindowsか?
unixあるいはgccならopendirなんだが・・・Windowsは知らん。
質問があります。
なんていわなくてもわかってる(w
質問がありません。以上
>>200
ffblk->attrib|FA_DIREC
>>200
grep?
言語は?
VC++だと思うが…。
209デフォルトの名無しさん:02/08/26 07:39
Cでproxyサーバーをスキャンするプログラム作ってるんですけど、
connect()の返り値が0のときでも、proxyじゃない場合があります。
proxyかどうか調べるには、どうすればいいでしょうか?
んなもん実際にリクエストだして、
ちゃんとしたブツを転送してもらえるか
確認するしかねーだろ。
自分とこの鯖に検証用のファイルをおいて、
プログラム内蔵のと比較するとかが楽だな。
211▽・w・▽:02/08/27 21:53
がんばれー

      ∧_∧
      (;´Д`)
     /    \
  __| |     | |__
  \   ̄ ̄ ̄ ̄ ̄   \
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||

>>212
まさか、居残り??
214:02/08/28 01:41
操作的意味論、コルーチン、バックトラックについて
分かり易く説明できる方いませんか?
>>214
迷路で行き止まりにぶちあたったときに、前の分岐点まで戻って、
他の道を進もうというのがバックトラック
通称“怪僧”。ニコライ2世の妻アレクサンドラが招き息子のアレクセイを病気から救ったのがコルーチン。
>>214
コルーチンは擬似マルチタスク。
途中で処理を中断し、他のコルーチンに制御を移したりでき、
中断した場所から再開できたりする。
218215=217:02/08/28 02:30
>>214
操作的意味論は知らん。
>>216
あれ、ラスプーチンじゃなかったっけ?
とマジレスしてみるテスト
221:02/08/28 13:14
どうも、ありがとう。分かりやすかったです。
コルーチン
【子ルーチン】
”サブルーチン”の埼玉地方の方言
223デフォルトの名無しさん :02/08/29 16:51
assignment-by-copyとassignment-by-sharingが
どういうものか説明できる人いませんか?
日本語だと、コピー割り当てと共有割り当てになるんだろうか?
>>223
assignmentは「代入」という訳をあてたほうがいい。
225デフォルトの名無しさん:02/08/29 23:39
操作的意味論はアルゴリズムが以外と近いのか?
なんかボケてる?
226デフォルトの名無しさん:02/08/29 23:49
int i = j; // copy
int& i = j; // share
>>223
assignment-by-sharing
 参照型の代入で参照の値(アドレス)はコピーされるけど、
 参照している実体の方はコピーせず共有する。

assignment-by-copy
 参照型の代入で参照の値(アドレス)はコピーされ、
 参照している実体の方もコピーする。
 それか
 値型の代入で値(実体)がコピーされる。
 のどちらかだとおもう。
>>227
なんかへんだぞ。そのままでいいだろ
assignment-by-copy:代入した結果オブジェクトの複製が作られる
assignment-by-sharing:代入した結果オブジェクトを共有する
229C初心者:02/08/30 23:40
勉強のため、クイックソートのアルゴリズム図解を参考に、
テキトーに関数を書いてみました。
…が、どーみてもメモリ食いまくる、極悪ソースにしか見えないんです。
アルゴリズムを勘違いしまくってるんだと思うんですが、
わかんないです。

----<ここから>----
void qSort(int *ps, int num) {
  int lbuf[MAX], rbuf[MAX], i, l = 0, r = 0, n, base;

  n = num / 2;
  base = *(ps + n);
  for(i = 0;i < num;++i) {
    if(i != n) {
      if(*(ps + i) < base)
        lbuf[l++] = *(ps + i);
      else
        rbuf[r++] = *(ps + i);
    }
  }

  for(i = 0;i < l;++i)
    *(ps + i) = lbuf[i];
  *(ps + i) = base;
  for(i = 0;i < r;++i)
    *(ps + l + i + 1) = rbuf[i];
  
  if(l > 1)
    qSort(ps, l);
  if(r > 1)
    qSort(ps + l + 1, r);

  return;
}
----<ここまで>----
記述言語はみてのとーり、Cです
MAXはソート対象の最大配列数です
関数の引数は、
ひとつめ、整列させたい配列の始点
ふたつめ、整列させたい配列の件数
 です(対象配列はint型、ソートは昇順で固定)

間違ってるとこ、変なとこ、どしどし指摘お願いします。
230デフォルトの名無しさん:02/08/30 23:44
>>200
ディレクトリ見つけたらSetCurrentDirectoryでそのディレクトリに移動して
またFindFirstすれ。
231デフォルトの名無しさん:02/08/30 23:46
すいません。宿題を手伝ってください。
言語は日本語で楽しい思い出という題で400字詰原稿用紙5枚です。
期限は9月2日なのでそれまでにできるようによろしくお願いします。
232デフォルトの名無しさん:02/08/31 00:17
C++でBMPファイルの処理をしろという宿題で、まずはヘッダを読み込もうと思い
struct BitMapfileHeader{
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
};
という構造体を作って、
BitMapfileHeader header;
ifstream in("hogehoge.bmp", ios::in | ios::binary );
in.read((char *) &header, sizeof header);
としてみたのですがうまくいきません。こういった構造体にファイルから入力するいい方法ありませんか?
なぜ既にあるもの(BITMAPFILEHEADER)をつくる?
234デフォルトの名無しさん:02/08/31 00:31
え、すでにBITMAPFILEHEADERって存在するんですか?
235デフォルトの名無しさん:02/08/31 00:36
>>233
ねえよ
餓鬼をだまして遊ぶなよ
windows.h
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
237デフォルトの名無しさん:02/08/31 00:38
>>235
餓鬼をだまして遊ぶなよ
>>233
どこにあるんだよ・・・
239デフォルトの名無しさん:02/08/31 00:48
>>238
彼の頭のなかさ
妄想とも言うが
240233:02/08/31 00:52
何を言いたいのか分からんが標準ライブラリにないといいたいのか?
C++ではboostも日常的だからそれはないと思うが
241デフォルトの名無しさん:02/08/31 00:57
boostってなに?
それも妄想
思いっきりあるじゃん、BITMAPFILEHEADER。
スペルが違うかと思ってMSDN探しちまったよ。
もしかしてネタじゃなかったのか......
ネタということにしたいんですね:-)
245232:02/08/31 02:16
書き忘れていましたが、環境はgcc version 3.1でOSはBSD系です。
246デフォルトの名無しさん:02/08/31 02:18
>>245
その環境にはBITMAPFILEHEADERないぞ.

247232:02/08/31 02:37
>>246
ということは自分で定義してて正解ですよね?

BitMapfileHeader header;
ifstream in("hogehoge.bmp", ios::in | ios::binary );
in.read((char *) &header.bfType, 2);
........
とかやってみたんですが結果は変わらず。
>247
問題を切り分けできないか?
・そもそもファイルから読み込みできているのか?
・構造体への読み込みができないのか?

char head[20];
in.read(head, 20);

でheadにちゃんとファイルの先頭20バイトが読まれてる?
粗印面とはどうなってる?
>247(=232)
うちのCygwin+gcc(x86)でやってみましたが、
まず、sizeof BitMapfileHeader が16になりました
249さんが指摘してるように、bfTypeメンバの後ろに2byteの詰め物が入ってると思います
ですから
in.read((char *) &header, sizeof header);
とやるのはさすがに強引

あと
in.read((char *) &header.bfType, 2);
の方はうちではちゃんと'B'と'M'が読みとれてましたが、ダメだったですか?
>>250
普通は直交化専用の関数なりクラスなりを作成して、
そこで読み書きするんだろうね。
無理に一発で構造体に読み込まなくてもいいんでないかい?
夏休みも後一日か。
さよなら夏厨
253デフォルトの名無しさん:02/08/31 19:00
Java で

  MyClass m = new MyClass();
  m = null;

ってやると、m の中に入っている参照は、gc の対象になりますか?
(すぐ gc されるかどうかは別として)
なるんじゃない?
あ、MyClassのコンストラクタ内の仕様によっちゃそうともいえないけどね。
どっかに自分自身のインスタンスを渡してたりすると…ま、そんなひっかけなしね。
>>246
$ grep BITMAPFILEHEADER /usr/include/wine/wingdi.h
} BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER;
>>252
大学生の夏休みはまだまだ続くがな。
258 :02/08/31 19:24
そんなに夏休みがあって
学力が身につくのかね、、、
259253:02/08/31 19:27
253です。

>>254
>>255

> どっかに自分自身のインスタンスを渡してたりすると…ま、そんなひっかけなしね

なるほどー。

ありがとうございます。
本当に聞きたかった事をちゃんとかいてみます。

class MyClass extends Thread {
  public void run() {}
}
public class Test {
  public static void main(String[] args) {
    MyClass m = new MyClass();
    // m.start();
    m = null;
  }
}

MyClass の実装が、上のようにスレッドオブジェクトだとしても、おなじでしょうか?

まだ start() されてないスレッドオブジェクトは gc されますか?
run() を実行中の場合は、gc されないんだろうな、ということは実験でわかりました。
run() が終了してしまったら、gc の対象になるってことでしょうか。

http://www.y-adagio.com/public/standards/tr_javalang/index.htm
このへんは一生懸命調べたのですが、わかりませんでした。

# 決まっていない、のかな。
260デフォルトの名無しさん:02/08/31 22:16
ニューラルネットワークわかる人いますか?
261232:02/08/31 22:45
>>249, 250
char ch[2];
in.read(ch, 2);
//or
in.read((char *) &header.bfType, 2);
でBMきちんと読み込まれていることを確認しました。

>>251
一旦線形リスト(やそのほかの方法?)に読み込んで、それから構造体に
読み込むっていうことですか?
262デフォルトの名無しさん:02/08/31 22:48
C言語で、読み込んだ英文中の文字(大・小区別、数字含む)数を数えて、
度数分布で表示するプログラムをつくってるんだけど、
文章が長いと、グラフも長くなり、何行にもなって見づらい。
そこで、グラフを#の数で表示しているのだけど、
#一つあたりの示す文字数を文章の長さによって変えようかと思う。
どうすればいい?

考えたのは、一番数が多かった文字を#50個ほどで表して、
そこから#一つあたりの量を出し、他の文字のグラフも表示する。
ただ、プログラムは書けない・・・
誰かお願いします。

あとgoogleで見つけたのは
ttp://www.ced.is.utsunomiya-u.ac.jp/~mie/renshuu3.cpp
でも、これだとファイル名が固定されてしまう。
263デフォルトの名無しさん:02/08/31 23:13
卒論で何か製作しようと思ってるんだけど、(java)
何をつくっていいかわからん。
ヒントくれーー!
そんなの、担当教官に聞けばいいのに・・・
265デフォルトの名無しさん:02/08/31 23:24
担当の方が無能っぽいので、
また皆に聞いた方が良い案が
浮かびそーなので書いてみた。
>>263
ネトゲー
267デフォルトの名無しさん:02/08/31 23:30
センスがあったら、作るんだけどね--。
センスがないのでちょいキツイな。
268manko_chinko ◆c2rpKRNM :02/08/31 23:33
>>267
いい店教えましょうか?
>>265
自分の研究室で取り扱ってるテーマとかないの?
画像処理、自然言語処理、データベースとか、そんなの。
道を外れると、卒業が怪しくなるぞ
270デフォルトの名無しさん:02/08/31 23:56
>>262
int table[SIZE];
max = 0;

for (i = 0; i < SIZE; i++)
if (table[i] > max) max = table[i];

271デフォルトの名無しさん:02/09/01 00:00
>>270
ありがと。参考にしてみます。
272デフォルトの名無しさん:02/09/01 00:22
>269
テーマないんですよ。。
自分で決めろってかんじです。
自由なことができる反面、
選択肢が広すぎるため
テーマが決められないって感じです。
273 :02/09/01 00:30
>>272
じゃ、漏れの仕事半分くらいまわしてもいい?(w
>>273
あとで10倍くらいになって跳ね返ってくる罠。
>>272
馬鹿っぽい担当でも聞いておくのが正しい処世術です。
聞かずに自分で決めちゃうと、協力や助言をもらえないどころか、
嫌がらせや妨害をうけることもあります(まあめったにないけどな)。
276デフォルトの名無しさん:02/09/01 15:26
>273
俺もあまり使えないから、
結局自分でやるハメになるかもよ?(藁

>275
今度学校に行った時に教授の隠された
才能を探してきます!
277デフォルトの名無しさん:02/09/01 17:22
http://www.pro.or.jp/~fuji/mybooks/cpro/cpro.0.6.html
この問題の解を教えてください。

自分では三つ目のループをsqrtにするぐらいしか思い浮かびませんでした。
278デフォルトの名無しさん:02/09/01 17:47
>>277
ウェブ版には答えないのね。

http://club.pep.ne.jp/~asuzui/page9.html
279デフォルトの名無しさん:02/09/02 00:00
BASICで1から10までの数を
ランダムで一回ずつ出すには
どうしたらいい?
Basicって、どのBasic?
281デフォルトの名無しさん:02/09/02 00:22
>279 10要素の配列に1~10を入れて、シャッフルすればいいじゃん?
Basicだろうと何だろうと。。。

最適なアルゴリズムは、たぶんこうだろ↓

さいしょ:配列A(10)に、1~10の値を重複なく入れておく
A={1,2,3,4,5,6,7,8,9,10}
1回目:1~10の乱数をとる・・・例えば 3 が出れば、A(1)とA(3)を交換。
A={3|2,1,4,5,6,7,8,9,10}
2回目:2~10の乱数をとる・・・例えば 9 が出れば、A(2)とA(9)を交換。
A={3,9|1,4,5,6,7,8,2,10}

K回目:K~10の乱数をとる・・・例えば R が出れば、A(K)とA(R)を交換。

最終的に、「10回の反復で配列A(10)をシャッフルできた」ことになる。
282279:02/09/02 00:30
>>280俺はよくわからんけど
ポケコンのベーシックです
>279 281はわからんの?
284279:02/09/02 00:47
やってることは何となく分かるけど
それをどうやって書けばいいのやら
以下を K=1~10について繰り返す:
  K~10の乱数をとる・・・例えば R が出れば、A(K)とA(R)を交換。

これを書けないと、やばいとおもうぞ。それ以前に、乱数の出し方わかるのか?
286279:02/09/02 01:09
乱数の出し方は確か
『乱数を意味する語』10←1からその数まで
これしか知りません
Basicだったら、RND(x)とか、そんなのじゃないか?説明書ないの?
しかし、説明書が読めれば人に聞かないものかもしれない罠。

ふつう、直接出せるのは「0~Nの乱数」とかだと思う。
んで、↓こういうふうに足し算や引き算でずらしたりする。

「K~10の乱数」=「0~(10-K)の乱数」+K
289279:02/09/02 01:19
説明書には
RND 式
と書いてあります
ちなみにポケコンの種類は
SHARPのPC-G850Vです
「RND N」=「1~Nまでの乱数」
でいいのかな。0からじゃなくて、1からって書いてある?
291279:02/09/02 01:26
1からです
ちなみに一回ずつ出す方法ですよ
じゃあこんなかんじかな
「K~10の乱数」=「1~(1+10-K)の乱数」+K-1=「(RND (11-K))+K-1」
うそかもしれん

>>291
なんかわかってないっぽいな。
>>281は何をやってるかっていうと、
既に選んだ数字を配列の左側に寄せておいて、
重複して選ばないようにしてるんだよ。
293279:02/09/02 01:35
>>292
281みたいなのはベーシックでも出来るんですか?
>>293 なんで出来ないの?

(1) A(1)~A(10)に、1~10の値を入れておく
(2) 以下を K=1~10について繰り返す:
  (2-1) K~10の乱数をとり、Rに入れる。
  ※ここでA(R)の値が、重複のない乱数
  (2-2) A(K)とA(R)を交換。

結果:A(1)~A(10)に、ランダムな順番で1~10が並んでいる。
295279:02/09/02 01:42
ああ、何となく分かってきたかも…
皆さんありがとうございました
がんばってみます
提出は今日じゃなくて最初の授業だし
ランダム初期関数とかは?
time渡して~~
randomize()とかあった?
綴り違うかも・・・
297デフォルトの名無しさん:02/09/02 02:09
webテキストじゃなくて、プログラムにおける
「リンケージ情報」ってどういうことじゃろうか?
>>297
想像=「linkerがどこをどう結合したらいいかってのを決められるように、
compilerがobject programの中に付け加える情報」?

コンパイルの過程に出てくる話でしょ。linkerの役割をちゃんと調べれば
わかるんじゃない?
1010 DIM A(10)
1020 FOR I=1 TO 10
1030 A(I)=I
1040 NEXT I
1050 FOR I=1 TO 10
1060 K=RND 10
1070 B=A(K)
1080 A(K)=A(I)
1090 A(I)=B
1100 NEXT I
1110 FOR I=1 TO 10
1120 PRINT A(I);
1130 NEXT I
300277:02/09/02 11:19
>>277でピタゴラス数を出すプログラムについて聞いていた者です。
>>278で教えて頂いたページをみて考えたら、こんなのになりました。
24284ms → 20ms と速くはなったんで、これで一応正解と考えても良いのでしょうか?

#include <iostream>
#include <time.h>
#include <list>
using namespace std;

typedef struct DATA {
 long a;
 long b;
 long c;
} DATA;

long gcm( long a, long b )
{
 long c;
 if ( a < b )
  return gcm( b, a );
 c = a % b;
 if ( c == 0 )
  return b;
 return gcm( b, c );
}

bool comp( DATA a, DATA b )
{
 return ( a.c < b.c ) ? true : false;
}

続きます。
301277:02/09/02 11:22
int main ( void )
{
 clock_t begin; double end;
 begin = clock();
 list< DATA > l;
 DATA d;
 long a, b, x, y, z, time; time = 0;
 for ( a = 1; a < 100; ++a ) {
  for ( b = 1; b < a; ++b ) {
   z = a*a + b*b;
   if ( z > 10000 )
    break;
   x = a*a - b*b;   y = 2*a*b;
   if( gcm( y, x ) != 1 )
    continue;
   if ( x*x + y*y == z*z ) {
    d.a = ( x < y ) ? x : y;
    d.b = ( x > y ) ? x : y;
    d.c = z;
    l.push_back( d );
   }
  }
 }
 l.sort( comp );
 list< DATA >::const_iterator it;
 for ( it = l.begin(); it != l.end(); ++it ) {
  d = *it;
  cout << ++time << "\t" << d.a << "\t" << d.b << "\t" << d.c << endl;
 }
 end = clock() - begin; printf( "%.3f\n", end );
 return 0;
}
302277:02/09/02 11:25
>>300-301 長文すいません。
しかも改行多すぎって怒られて、無理矢理つなげてますし…

よろしくお願いします。
早くなって、答えがあってればいいんでないの?
>>299
まぁそれでもいいけどね。ちょっと雑だけど
(1) A(1)~A(10)に、1~10の値を入れておく
(2) 以下を K=10~1について繰り返す:
  (2-1) 0~K-1の乱数をとり、Rに入れる。
  ※ここでA(R+1)の値が、重複のない乱数
  (2-2) A(K)とA(R+1)を交換。

結果:A(1)~A(10)に、ランダムな順番で1~10が並んでいる。

↑こうすれば乱数が簡単にならない?亀レススマソ。
>>305 そだね。「FOR ~ STEP -1」とか書くんだっけ?
>>306
あっBASICだったけか!?PascalではDowntoを使うんだね。
BASICはSTEP -1 とすればいいのか。
>>305
ちなみに乱数が1ベースらしいから、↓これが一番自然かな

(1) A(1)~A(10)に、1~10の値を入れておく
(2) 以下を K=10~1について繰り返す:
  (2-1) 1~Kの乱数をとり、Rに入れる。
  ※ここでA(R)の値が、重複のない乱数
  (2-2) A(K)とA(R)を交換。
309デフォルトの名無しさん:02/09/03 23:40
今、32ビット単一マイクロ・プロセッサをVerilogで作成しているのですが、
命令メモリの所がどうしてもコンパイルできません。下記のプログラムで、assign文のところで、エラーが出ます。
どこが間違っているのでしょうか?
・Data_mem
module data_mem(read_data,data_addr,read_data2,mem_write,mem_read,clk,mem_addr,
mem_data,rst,result);
parameter size = 32;

input[31:0] read_data2, mem_data ;
input[3:0] data_addr, mem_addr;
input mem_write,clk,rst,mem_read;
output[31:0] read_data,result;

reg[31:0] data_memory[0:size-1];

always@(negedge clk)
if(rst)        data_memory[mem_addr]<=mem_data;
else if(mem_write) data_memory[mem_addr]<=read_data2;

assign read_data=(mem_read)? data_memory[data_addr]:32’bz;
assign result =(~rst)& data_memory[mem_addr] :32’bz;
endmodule

>>309
Verilogは知らんのだけど、ざっと見た限りでは、
エラーが出ているのは、2番目のassign文か?
はずれたら、多分オレには無理。

あとこの板、Verilog使いは少ないと思うぞ。
かといってどの板に行けばいいかは知らん。
>assign result =(~rst)& data_memory[mem_addr] :32’bz;

Verilog知らないけど、これって「assign X = A ? B : C」という形?
だとすると、「?」が「&」に化けてるのではないだろーか。
あるいは、末尾の「:32’bz」が余計だとか。

ところで、「’」が全角だが、これも怪しいぞ
312デフォルトの名無しさん:02/09/06 13:31
age
313デフォルトの名無しさん:02/09/06 14:32
TCP_Wrapperをつかってnmapなどでportscanしてきた奴のIPをhosts.allowのDenyに
一定時間(10分程度でいい)登録する方法などありませんでしょうか?

一定時間(1分とか)に同じIPからportを10種ほど叩かれたら止めたいです。

Perlとかで作れたら助かります。
参考になるサイトとかこれを改造したら?とかでもいいです。
よろしくお願いします。
すごい宿題だね
新人さんが先輩に出された宿題、なのに1000タカラギコ。
誰かに出された宿題をネタに雑談するスレはここですか?







とか言ってみる。
>>313
portscanの検出のやり方が分からないのか
hosts.allowへの登録方法が分からないのか
それとも、他の何かなのか。

全部分かりませんっていうなら氏ね
318313:02/09/07 02:04
>>317さん
まずportscanをされたときの相手のIPを調べるというところがわかりません。
どのportを現在たたかれているのかがわからないのです。
/var/log/messageには
Limiting closed port RST response from 218 to 200 packets per second
このようなログしか残りませんでした。

IPとportのログを出す方法をとりあえず教えていただきたいです。

あt、一定時間ごとにチェックするというのもcronで制御をするとしか思いつきません。
前10分間に、このIPからこれだけのアクセスがあったから次の10分間はhosts.allowに追加・・・。
前10分間の中のデータを調べるのにはどのようにしたら楽なのか?
データベースを使ったほうがいいのか?

これは実際portscanをしてきた人に有効なのか?
似たようなツールがすでにあるのか?
プログラムをつくるにあたって考え方は間違っていないのか?

いろいろ思います。助言よろしくおねがいします。
>>318 俺はこういうの詳しくないけど、「ポートスキャン 記録」でぐぐったら
iplogってのが出てきた
http://www.zdnet.co.jp/help/tips/linux/l0516.html
関係ないかも
320デフォルトの名無しさん:02/09/08 12:54
age
321デフォルトの名無しさん:02/09/08 14:50
VB6で作るコンソール・アプリでパイプの端を読む方法を
どうか教えてください。

標準入力のハンドルをゲットするAPIを使って組んだのですが、
こちらの思うように動作しません。
どうも、自分はパイプの仕組みがよく分かって無いみたいです。

dir | foo.exe とした時のfoo.exeを作りたいんです。
私のこだわりで dir > foo.exe とはしたくありません。

わがままを言って申し訳ありませんが、
どうかおながいします。
>>321
dir > foo.exe と dir | foo.exe は違う動作だと思うんだが…。
dir > foo.exe は dir の出力を foo.exe というファイルに(存在しなければ作って)書き出す。
dir | foo.exe は dir の出力を foo.exe という標準入力に渡す。
まず先にDOSの使い方を勉強した方がイイかもしれん。
323デフォルトの名無しさん:02/09/08 15:47

dir | foo.exe をしたいんですよ。

GetStdHandle (STDIN) して、そのハンドルでReadFileしたん
ですけど親プロセスのパイプの端が自プロセスの標準入力ハンドルに
割り当てられてないみたいなんです。
入力バッファにCR+LFが来るの待ってるみたいで・・・
VBじゃわからんな~

それはそれとして、無様なので晒しておくぞ↓

私のこだわりで dir > foo.exe とはしたくありません。
私のこだわりで dir > foo.exe とはしたくありません。
私のこだわりで dir > foo.exe とはしたくありません。
私のこだわりで dir > foo.exe とはしたくありません。
>>332とかぶるけど、リダイレクトの勉強したほうがいいだろ。VBの勉強する前に。
コンソールアプリ作りたいのにDOSの基礎中の基礎的な使い方も分からんなんて、
野球するのにバットの振り方が分からんのと同じだろうが。

とりあえず、不様だから晒しとくか。

dir | foo.exe とした時のfoo.exeを作りたいんです。
私のこだわりで dir > foo.exe とはしたくありません。
dir | foo.exe とした時のfoo.exeを作りたいんです。
私のこだわりで dir > foo.exe とはしたくありません。
dir | foo.exe とした時のfoo.exeを作りたいんです。
私のこだわりで dir > foo.exe とはしたくありません。
dir | foo.exe とした時のfoo.exeを作りたいんです。
私のこだわりで dir > foo.exe とはしたくありません。
dir | foo.exe とした時のfoo.exeを作りたいんです。
私のこだわりで dir > foo.exe とはしたくありません。
STD_INPUT_HANDLEじゃねーの?
VB知らんけど、Win32API使ってるなら、これで逝けるハズ
Linux使いだからDOSプログラミングはまったく知らんのだが、パイプが使いたければ
標準入力から読んだらダメなの?
328326:02/09/08 19:38
>>327
GetStdHandle(STD_INPUT_HANDLE)ってのが、
標準入力のハンドルを取得するためのものなの。
VisualBasicには、getcharみたいなものがないんじゃないかと思ふ
>>328
そうなのか、面倒だな。Windowsプログラミングの勉強も一応するか…。
仕事で使わないからついサボっちゃうんだよね。他に面白いことあるし。
よくわかんないけど、
getstdhandle "visual basic" STDIN
あたりでぐぐったら、こんなの↓出た

http://www.cqpub.co.jp/try/1999-9/vbcon.htm
Visual Basicでコンソールプログラムの開発

サンプルつきらしい。
331あ~、わかりません・・・:02/09/09 23:56
「C言語で、2002年の月と日を入力して、2002年1月1日から、
入力された月日までの日数を求めるプログラムを作成しなさい」

という問題で、
各月の日数でグループにわける
入力された月の前の月までは、各月の日数を1月から順に全部加えたら
いいのかな・・・と思ったんですが・・・・
思ったっだけで肝心のプログラムを書けませぬTT
 こんな複雑な問題、if文とwhile文ぐらいしか習ってないのに出来るのかよぅ。
授業の範囲を越えた知識でやってもいいって・・・厳しいよ先生。
しかも、処理方法の説明や変数に記録される値の説明までしろときてます。
私にはとけやしないよう~と泣き叫びたいっす。

 簡単ですか?これ?我が儘をいわせて頂ければ、
ソースコードを書いて貰って・・・参考書片手に研究したい・・・。
if(1月) {
 if ( 1日 ) {

 } else if ( 2日 ) {

 } else if ・・・・・

 }
} else if ( 2月 ) {
} else
・・・・・・
} else (12月)
>>331
int nissu[12][31] = {
{ 1, 2, 3, 4, 5, …… 27,28,29,30,31}, /*1月*/
{32,33,34,35,36,……58,59}, /*2月*/
(以下略)
return nissu[month-1][day-1];

範囲チェックとかは適当によろ。
334あ~、わかりません・・・:02/09/10 00:27
>>332さん
>>333さん
 親切にどうもです。助かります。
ただ、あの~非常に言いにくいんですが、もう少し詳しくお願いします。
すいません、自分の不勉強を棚に上げて^^;
>>334
>>332>>333はネタだYOw
簡単なのは、例えばx月y日とすると、
テーブルに
month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
みたいな月ごとの日数をあらかじめ入れておけば
日数はmonth[1]からmonth[x-1]までの合計にyを
くわえた数になる。
あとはがんばってみそ
336 :02/09/10 01:33
>>334
#include <stdio.h>
int main() {
 static const int days[][31] = {
  {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30},
  {31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,-1,-1,-1},
  {59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89},
  {90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,
   107,108,109,110,111,112,113,114,115,116,117,118,119,-1},
  {120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,
   135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150},
  {151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,
   166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,-1},
  {181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,
   196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211},
  {212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,
   227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242},
  {243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,
   258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,-1},
  {273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,
   288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303},
  {304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,
   319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,-1},
  {334,335,336,337,338,339,340,341,342,343,344,345,346,347,
   348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364},
 };
 int month, day;
 if (scanf("%d%d", &month, &day) == 2)
  if (month >= 1 && month <= 12 && day >= 1 && day <= 31 && days[month - 1][day - 1] >= 0)
   printf("%d\n", days[month - 1][day - 1]);
 return 0;
}
ウゲッ、マジかYO!!w
(絶対スクリプトで書いたに違いない…)
338あ~、わかりません・・・:02/09/10 01:43
>>335
>>336
 ご親切にどうもです。335さんのおかげで、大分わかりかけて
きたんですが・・・
 336さん、そのお答えを書いていただいたようで・・・
こんなに長いのをすいません。ここまでしていただけるとは
思いもしませんでしたので、非常に感激しました。

 とりあえずは、みなさんに頂いたヒントを元に、一度自分で考えてみて、
それから336さんのお答えと照らし合わせて頑張ってみます。

ありがとうございました!
339デフォルトの名無しさん:02/09/10 02:02
ふつうは配列に月の日数だけいれると思うが。
あと1月と2月を13月と14月にしたり。
mktimeの結果をlocaltimeに喰わせて、tm_ydayを見たらどうか
>>340 そんな宿題だすやつぁいない
>>331
#include <stdio.h>
main(){
 int m,d,sum,month[]={31,28,31,30,31,30,31,31,30,31,30,31};
 printf("input month(2)day(2) :");
 scanf("%2d%2d",&m,&d);
 for(int sum=i=0; i<m-1; i++)
  sum+=month[i];
 sum+=d;
 printf("%d",sum);
 return 0;
}
/* 実は12月が31日あるってデータは要らなかったりする罠 */
×&nbsp
○&nbsp;
34460cm浮き上がるストレート:02/09/10 13:07
>>331
#include <stdio.h>
int CheckDayOfMonth(int);
void main(void)
{
  int month=0,day=0,goukeiDay=0,a=0;
  printf("月?");
  scanf("%d",&month);
  printf("日?");
  scanf("%d",&day);
  for(a=1;a<=month-1;a++)
    goukeiDay+=CheckDayOfMonth(a);
  goukeiDay+=day;
  printf("合計は%d日です",goukeiDay);
}
int CheckDayOfMonth(int month)
{
  if(month==2) return(28);
  else if(month==4 || month==6 || month==9 || month==11) return(30);
  else return(31);
  return(0);
}
>>344 ゴミ
goukeiDay…恥ずかしいと思わないんだろうか。俺なら回線切って首(略。
ぼくのパソコン上じゃあ
 で消えているので良いのかと思ったけれど
;(セミコロン)いるの?
もしそうなら今後気をつけるけど。
>>347
htmlかxmlの仕様書読め。セミコロンは必須だ。
>>348
おまえも親切なようで不親切だな
なんでそんなこと知るためにわざわざ膨大な資料を読まにゃならんのだ
実体参照だけで十分だろ、タコ
>>340
mktimeやってtm_ydayを見る
で十分だろ
>>343
&nbsp;の方が好ましいが、
&nbspでも別に良かったはず。
# ある特定のときなら。
なるべく ; をつけるべきだが。

インデントは
たとえば半角スペース4つの場合
&nbsp; &nbsp; としてほしい。
そのままコピペできるし、
かちゅ~しゃで参照したときも見やすいし。

352あ~、わかりません・・・:02/09/10 14:20
>>342さん
>>344さん
 どうもです、色んなやり方がやっぱあるもんなのですねぇ。
凄く勉強になります。
 なんか、かなり苦手意識があったんですが・・・なんか興味沸いてきました。
>>352 344は無視したほうがいい。と忠告しておく
>>353
60cmだとか1m80cmだとかをやたら毛嫌いしている奴が何人かいるんだよな。
>>354
毛嫌いっていうか、まあ、ここのレベルを低く抑えたいならいーけどな、放置で
60cmだとか1m80cmだとか は
勉強する姿勢があるのはイイが(たぶん初心者?)、
そこまでクソコードになると。
「すでに十分なコードが出てる段階で、クソコードを遅出しする」
というタイミングがよくないな。
358発破:02/09/10 15:55
HTMLやXMLを記述することをプログラミングとは言わないのは
何故ですか!?
>>355
いや、放置しているヤシは別に構わないんだけど、
執拗に攻撃したり、どうしてもレスをつけちゃう奴がいるって事。
2chに書き込むことをプログラムと言わないのと同じ。
http://academy.2ch.net/test/read.cgi/gengo/1028424001/l50

おまえら暇だったらここへいって助けてやってくれ。
宿題どころじゃなくてみんな困ってるんだ。
程度の低いスレだなぁ。
>>362
程度高くしてやってくれYO!
36460cm浮き上がるストレート:02/09/11 01:20
>>356
どういうところがダメなのでしょう。お教えお願いします。
・変数の名前のつけ方。特に○○の○○みたいな場合がダメみたいですが。
名前のつけ方の法則みたいなのでもあるのでしょうか。
・{を付ける位置。僕は、
main()
{
ですが、他の人は
main(){
としています。僕のやり方の場合タグの高さがそろうので
いいのかと思っていましたが。下に書いてある本でもそうでした。
・その他。関数の使い方、分岐、繰り返しの使い方のどれかでしょうか。

僕が勉強に使った本は、初版が1992年のエイ・エス・ティシステム・アカデミィ
という所が出した、Cプログラミング初級編、中級編です。
最初のデータ型の所から、最後のファイル操作の所まで勉強しました。
昔の本と今の本では書き方とかが違っているというのも原因の1つかもしれません。
今、正規表現入門(テキスト処理を自由自在に)という本を注文中で、
きたら勉強しなおしたいと思っています。
「C言語で、2002年の月と日を入力して、2002年1月1日から、
入力された月日までの日数を求めるプログラムを作成しなさい」

さて、1月1日を入力した場合、何日になるとおもう?
>>364
342のソースを見てみろ。
わざわざその後から糞コードを書く必要も無いだろう。
せめて、前に出されたコードと同等か良質な物を出してこい。
>>365
自分で機転利かせて「1引く」なりしなさい。
そういう事を言いたいんでしょ。
「C言語で、2002年の月と日を入力して、2002年1月1日から、
入力された月日までの日数を求めるプログラムを作成しなさい」

いままで、書かれたソースはたぶんB。
教官はうるう年計算を入れるのを期待してると思うが。
369デフォルトの名無しさん:02/09/11 03:04
 今、httpクライアントもどきを作っているのですが、何か変な動作をして
しまうホストがあります。
 そのホストは、IEから、http://www.hoge.com/ のように入力すると、
普通に表示されるのですが、ping www.hoge.comで返ってくるIPアドレス
をいれて、http://100.100.100.100/ のようなアドレスをIEで表示すると
Apacheのデフォルトのページがでてきてしまいます。
 httpクライアントで、ホスト名からIPを取得して80番ポートに繋げると
やはり、Apatcheがでてきてしまいます。
 IEでドメイン名を入れた場合と、IPアドレスを入れた場合で結果が違うと
いうのはどういうところに理由があるのでしょうか?

 上手く説明できなくてすみませんが、よろしくお願いします。
370デフォルトの名無しさん:02/09/11 03:09
>>369
バーチャルサーバだろ。
host: hostname
372デフォルトの名無しさん:02/09/11 03:29
>>364
私は356さんではないのですがマジレス。
・342のコードのように配列で月の日数を処理したほうが簡潔で
処理も軽いということで、CheckDayOfMonth(int)という関数自体いらない。
・その関数も
else return(31); → return 31;
return(0); →いらない
とすればいいわけで、無駄があった。
・変数名もmonth、dayときていきなりローマ字でgoukeiDay
初心者にもわかりやすくということで、ローマンなら
わからなくもなくなくなくないけど。。

こんなかんじで60cmぐらい浮いてるソースコードになってたのが
叩かれぎみになってしまった理由の1つかと。

あと、技術力はある発言な。
>>368
寝呆けんな
375デフォルトの名無しさん:02/09/11 03:50
>>368
2002年の「月」と「日」を入力するのに
教官はうるう年を期待してるですか??
もう許さんです!
大間違いだよです!
絶対許さんです!
37660cm浮き上がるストレート:02/09/11 03:54
>>372
お答えありがとうございました。参考にさせていただきます。
377びひゃ~ん ◆CplusNDg :02/09/11 03:58
ネタは置いといて、閏年判定。

int Leapyear(int year)
{
  return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0);
}
378デフォルトの名無しさん:02/09/11 04:10
>>344
こっちのほうがよくない? 一回の呼び出しで済むし。
範囲チェックは外でってことで。

int CountDays(int day, int month)
{
static int mCount = [0,31,59,89,120,150,181,212,242,273,303];
int count;

count = day;
count += mcount[month];
return(count);
}
>>378

count += mcount[month];

count += mcount[month-1];

380372:02/09/11 04:15
>>378
そですね。
しかし、2002年の「月」と「日」ってあたりに教官のやさしさというか
期待してないんだねってのが感じられる。
こんくらいやれば満点だろ

#include <stdio.h>
#include <stdlib.h>
static int get_input_int( const char *prompt ) {
 char buf[256];
 printf( "%s: ", prompt );
 if ( !fgets(buf, 256, stdin) ) return -1;
 return atoi( buf );
}
int main( void ) {
 int month, day, ans, i;
 int days_of[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

 do {
  month = get_input_int( "月を入力してne!(1-12)" );
 } while ( month < 1 || month > 12 );
 do {
  char buf[30];
  snprintf( buf, 30, "日を入力してne!(1-%d)", days_of[month] );
  day = get_input_int( buf );
 } while ( day < 1 || day > days_of[month] );

 ans = -1;
 for ( i = 1; i < month; i++ )
 ans += days_of[i];
 ans += day;
 printf( "答えは %d 日だyo!\n", ans );
 return 0;
}

......と言ってみるテスト
>>331
年にも対応。入力は省略

#include <stdio.h>
int main(void) {
int y,m,d,n ;
printf("yyyy/mm/dd>") ;
scanf("%d/%d/%d",&y,&m,&d) ;
if(m<3) y--,m+=12 ;
n=365*y+y/4-y/100+y/400+30*(m-3)+(3*(m+1))/5+d-731159 ;
printf("%d day(s)\n",n) ;
return 0 ;
}
>>378
とうの昔に俺が書いたよ。(無視してスレ移りやがった)
http://pc3.2ch.net/test/read.cgi/tech/1031340950/423

しかも間違ってるよ、それ。
>>381 >>382 乙です

しかし、>>331の文面から察するに>>342ぐらいのソースがスキル相応というか

>しかも、処理方法の説明や変数に記録される値の説明までしろときてます。

↑も比較的楽そうなので>>331には>>342がおすすめかと。
>>382
宿題こんなの提出したらさんざん教官に突っ込まれんだろうな。(藁
38660cm浮き上がるストレート:02/09/11 12:15
>>356

いろんな方のコードを見て解ったこと。
文字数が少ない。書き方が違っても同じことができる場合、
文字数が少ないほうを選ぶ。
だが3項演算子はあまりよくない。(前のスレでどなたかが言っていた)
ローカル変数名は1単語でいい。極端に言えば1文字でよい。
文字数を少なくできる。
小さいプログラムでユーザー関数は使わないほうがよい。
文字数を少なくできる。関数呼び出しは時間がかかる。

昔プログラムは、0と1で直接書いていたらしいが、今は言語を使い書いています。
言語を使えば解りやすいが、容量は多く消費します。
容量と解りやすさの線引きが大事なのかな。
387デフォルトの名無しさん:02/09/11 12:19
>>386
ネタをいかにもマジレスみたいに書き込むのはやめてね。
>>387 いや、俺もはじめネタだと思ったが、どうやらマジらしい。
ネタだとしてもどっかおかしい。たぶん中学生
389369:02/09/11 12:37
>>370
ありがとうございます。
バーチャルサーバーというものにhttpで繋ぐにはどうすればいいでしょうか?
言語はCです。
>>389
こう↓やってヘッダにホスト名を入れる。既に>>371が答えてるぞ。

http://x68000.startshop.co.jp/~68user/net/c-http-1.html
103: sprintf(send_buf, "GET %s HTTP/1.0\r\n", path);
104: write(s, send_buf, strlen(send_buf));
105:
106: sprintf(send_buf, "Host: %s:%d\r\n", host, port);
107: write(s, send_buf, strlen(send_buf));
108:
109: sprintf(send_buf, "\r\n");
110: write(s, send_buf, strlen(send_buf));
>>389
一つのIPアドレスに複数のドメインを割り当ててドメインによって振り分ける仕組みかな?
独自ドメインの使える共用レンタルサーバが採用している仕組み。
392369:02/09/11 13:06
ありがとうございます!
393391:02/09/11 13:07
ドメインじゃなくてホスト名と言うべきか・・
実際のサーバ上に複数の「バーチャルサーバ(バーチャルホスト)」を作ることを、
「バーチャルホスティング」というんだと思う。

まあ、少なくとも日本ではゴッチャに使われているようだが
#include <stdio.h>
#include <time.h>
int main(void){
struct tm foo,*bar;
time_t hogehoge;
int y,m,d;
printf("yyyy/mm/dd>");
scanf("%d/%d/%d",&y,&m,&d);
memset(&foo,0,sizeof(struct tm));
foo.tm_year=y-1900;foo.tm_mon=m-1;foo.tm_mday=d;
hogehoge=mktime(&foo);bar=localtime(&hogehoge);
printf("%d day(s)\n",bar->tm_yday);
return 0;
}
>>395 だからその方法はたぶん課題の要求に合わないってば。
しかも無駄なことしてるし。
struct tm foo;
foo.tm_year = ...;
...
mktime(&foo);
printf(..., foo.tm_yday);
これだけでいいんだよ。
397372:02/09/11 17:50
>>386
マジレスして損したなぁ。
「クソコード」に少し傷ついちゃったみたいだけど、
機能要求は満たしてるんだから、あとは最適化とかについてとか
論理的思考をもう少し鍛えたほうがいいと思うよ。

> いろんな方のコードを見て解ったこと。
ここのコードは質問者のレベルにあわせて解答していることもあるし、
ヒントを与えるという意味で短文のときもあるから、
必ずしも最善というわけではないよ。

まだ、コーディングも未熟みたいだし、
釣り師としてもあまりおもしろいエサを使ってないし、
あなたはこのスレの解答者側には向いてないと思います。

と60cmぐらい釣られてみるテスト。
398395:02/09/11 18:05
「だから」って何よ?と思ったら既出だったのか
mktimeがsrcの値を適切に設定し直してくれるとは知らんかった
399デフォルトの名無しさん:02/09/11 19:43
ListA:TStringList;
ListB:TStringList;
ListC:TStringList;
ListD:TStringList;
ListE:TStringList;

TStringList ListA~ListEそれぞれに
任意の数の国名が入っている
すべてにTStringList共通に入っている国名が
あればmemo1に列挙するプログラムを書け。

delphiですが
まるでわかりません。助けてください。
delphiは知らんので、ソースは出せないけど、

TmpList: TStringList;
を用意してそこに全部突っ込んだ後ソートして
同じ国名が5個連続してたら出力。
>>399
delphiは知らんがダサいソースだな
つか、要素数の一番の小さいListを選んで、
そいつの中身を1つづつ列挙していって、他のList全部に
存在するか確かめるようなコード書いた方がいいかも。
隊長!
「TStringList=抽象文字列クラスTStringの具象クラス」
という怪情報をキャッチしました!
>>402
それが正解っぽいな。まあ、要素数の比較とかは適当でいいと思うが。
>>402
要素数が大きくなってくると、逆にパフォーマンス落ちないか?
それから、配列じゃなくて~Aみたいなネーミングなので、
コードが冗長になりそうだ。
↓こんなかんじか
for a in ListA
  continue when a is in ListB
  continue when a is in ListC
  continue when a is in ListD
  continue when a is in ListE
  add a into memo1
end
国の名前は千も万もないだろうし
計算量については、1つのリストの平均数をNとすると、
400:O( 5N + 5N*log(5N) + 5N ) -> O(N*log(N) )
402:O(N*(1/2N+1/2N+1/2N+1/2N) ) -> O( N² )
か。
TStringListにはFindっつー便利なメソッドがあるから、それ使え。
詳しく知りたければDelphiスレに逝ってらっしゃい
411407:02/09/12 00:35
条件が反対ダターヨ
for a in ListA
  continue when a is not in ListB
  ...

日本語で書けばヨカターヨ
for i:=0 to ListA.count-1 do
begin
if not(ListB.find(ListA[i],index)) then continue;
if not(ListC.find(ListA[i],index)) then continue;
if not(ListD.find(ListA[i],index)) then continue;
if not(ListE.find(ListA[i],index)) then continue;
memo1.Lines.Add(ListP[cx]);
end;
人権についての作文書かないといけないんですが全然思いつきません
しかも2000字以上書かないといけません
誰か手伝ってください
提出日は明後日ですお願いします
415デフォルトの名無しさん:02/09/12 22:55
XMLで入れ子にならないデータを表現するにはどうすれば?
416 :02/09/12 23:22
<tag />
まっtag・・・
>>413
とりあえずテロ関係のニュース検索してコピれ。
一件につき3つか4つ最後に引用先つけて。
一件ごとに感想をいれろ。車のってるなら交通事故も検索してコピれ。
これでも足りなかったら、夜中から朝まで外に出て走れ。泣け。公園のハトにえさをやれ。
そんで、その事を書け。大体間に合うはず。
419413:02/09/13 17:19
>>418
すみません
テロと人権て関係あるんですか?
昔エロゲ雑誌で「マルチ(HMX某)に人権はあるのか」みたいな
ヨタ話がのってたな。2000字ならそのあたりでええやろ
>>419
関係づけるのはおまえだ。
作文ていうのはそういうもんだ。
早く書け。
>>413,>>418-421
いや、ここはプログラム板だから、
せめて、プログラムに関係ある宿題にしてよ・・・
423414:02/09/13 21:15
>>413
無視するなYO!
せっかく探してきてあげたのに
>>419
生命の保証は基本的人権だと思うが
カラアゲ
426413:02/09/13 22:01
>>414
はいはい、ありがとね
427デフォルトの名無しさん:02/09/13 22:23
これのやり方おしえてください。
基本情報の問題なんですけど、ずっとわからなくて次に進めません。
回答や参考書を見てもわからないです。
どなたかわかりやすく教えてください!
--------------------------------------------------------------------------------
次のような3バイトで数値±a×16^nを表現する浮動小数点がある。

     |    指数部7ビット  |       仮数部16ビット     |
 ┌─┐─────────┐──────────────┐
 │   |        n         |             a            |
 └―┘―――──――――┘―――───────――――┘
  ↑         ↑     ▲
ビット0  数値全体の符号   小数点の位置
      (0:正、1:負)

・仮数部の数値は、絶対値で表す。 0<=a<1。
・指数部のnは、指数部が16^nであることを表す。
・指数部のnの負数は、2の補数で表す。

この形式で表現できる負の数の最大値(0に最も近い値)はどれか。


ア 000001   イ 00FFFF   ウ 410001   エ C00001   オ F00FF1
---------------------------------------------------------------------------------
答えは「エ」なんです。でも、やり方がわかりません。
自分で問題を解いた時は、
「この形式で表現できる負の数の最大値(0に最も近い値)はどれか。」
と書いてあるので1 111 1111 1111 1111 1111 1111(2)にしてFFFFFF(16)って
答えがなったんですけど、解答欄にないんです。
>>427はマルチ+単発質問スレ立て
http://pc3.2ch.net/test/read.cgi/tech/1031918118/l50
429414:02/09/13 23:56
>413
オイッ!
430学生:02/09/14 00:21
ご教授願いたいです。
先日リナサバの試験運転してたんですが、突然彼女が家に押しかけてきました。
当然その後はエチー(その人とは初)をしたんですがどうも彼女の膣がslackでどうも気持ちよくありません。
他にも締まる女はいるのですが体の相性で別れるのもどうかなと思いまして
どうやったら膣は締まるようになるのでしょうか。
何か解決策をお教え頂きたいです。
>>430
おれも学生だが、学生のうちだからこそユルイが原因で
別れちまうのもアリだよ
こんなとこでネタにされてる彼女の気持ちにもなってみろよ
432 :02/09/14 00:33
>>430
缶ビール突っ込んでみろ。
鯖の試験運転してたっていう前書きに何の意味があるのか小一時間(
>>430
おまいが小さいのが悪い
>>430
いまごろ別板で、
どうも彼氏の陰茎がしょぼくてどうも気持ちよくありません。
なーんて自分がネタにされてるんだろうな(w
相思相愛だね!(謎
>>430
彼女にスポーツを勧めるとか。
438 :02/09/14 00:49
おまいらここは宿題すれd以下略
宿願スレと見間違えていました。回線吊って以下略
宿願手伝いますYO!!  って意味不明YO?
441413:02/09/14 20:43
>>414
>>418
どうもありがとうございました。
>>414さんには申し訳ないんですがテロ関係の作文書で提出しました
あと>>426は自分じゃないです
>>437
バレーが良いかと。
このスレはもっと上にいるべきですっ
444Fever Get.:02/09/17 13:28
>>442
レバーが食べたくなりマスタ
>>443
だったら宿題を持ってきな
446なみへい:02/09/19 16:46
今、多人数チャットを作っているんだけど、相手を限定して送る方法が
わからんので誰か教えて!下にプログラムをのせとく。

//サーバー

Dim hako() As Long
Dim n, i As Integer
Private Sub Command1_Click()
ReDim hako(n)
For i = 0 To n
If hako(i) <> i Then
Winsock1(i).SendData "(" & Winsock1(0).LocalHostName & ")" & Text1.Text
DoEvents
End If
Next
List1.AddItem "(" & Winsock1(0).LocalHostName & ")" & Text1.Text
Text1.Text = ""
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Command3_Click()
Command4.Enabled = True
Dim intcount As Integer
ReDim hako(n)
For intcount = 0 To List2.ListCount - 1 Step 1
If List2.Selected(intcount) Then
List3.AddItem List2.List(intcount)
End If
DoEvents
Next
End Sub
447446:02/09/19 16:48
続き

Private Sub Command5_Click()
List3.Clear
End Sub
Private Sub Form_Load()
Command1.Enabled = False
Command4.Enabled = False
Winsock1(0).LocalPort = 10001
Label3.Caption = "ポート10001をListen"
Winsock1(0).Listen
End Sub
Private Sub Winsock1_Close(Index As Integer)
For i = 0 To n
If Index = i Then
hako(i) = Index
Label5.Caption = Winsock1(n).RemoteHostIP & "は退室しました"
End If
Next
End Sub
448446:02/09/19 16:49
さらにつづき

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
n = n + 1
Load Winsock1(n)
Winsock1(n).LocalPort = 0
Winsock1(n).Accept requestID
End If
Command1.Enabled = True
Label3.Caption = requestID & "接続されました"
List2.AddItem Winsock1(n).RemoteHostIP
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim datastring As String
Winsock1(Index).GetData datastring
List1.AddItem datastring
End Sub
Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1(n).Close
End Sub
449446:02/09/19 16:57
text1のデータをcommand1で送信。会話履歴をlist1に表示させる。
接続しているIPをlist2に表示、その中から限定送信したいIPを指
定し、list3に移してcommand4で指定したIPへ送信したい。
450446:02/09/19 16:59
command4のところをヒントだけでもいいから宜しく
451デフォルトの名無しさん:02/09/19 17:49
>>450
TCP使うんだからサーバとクライアントって感覚をもってプログラム書こう。
他の人にメッセージ送る時にIPを指定する必要はない。
メッセージを送りたい相手のwinsockインスタンスのindexを
メッセージの先頭にでも入れておけばいいんじゃないの。
あとはそれを取り出して対応するインスタンスでsenddataする。
あと、このプログラムwinsockの添え字とか間違ってない?for文のへんとか。
452446:02/09/19 18:41
>>451
1対nではメッセージのやり取りはできるのだけど、クライアントのwinsock
の識別をするやり方がわかんないんです。
そんな関数でもあるんですか?
453デフォルトの名無しさん:02/09/19 19:51
>>452
このへんって何やってるかわかる?
サーバサイドのプログラムだよ。

If Index = 0 Then
n = n + 1
Load Winsock1(n)
Winsock1(n).LocalPort = 0
Winsock1(n).Accept requestID
End If
宿題なのか?
455デフォルトの名無しさん:02/09/19 21:14
公共下水料金の使用量を計算するプログラムを作りなさい という宿題です(l|ll´Д`)
㎡と言うのは右上を3に置き換えてください(出し方ワカラナイ、、、)
どうぞよろしくおながいします

基本額:8㎡以下 500円
排水量(単位㎡)  1㎡につき
9~15         75円
16~20        80円
21~30        90円
31~50        100円
51~100       120円
101~300      130円
301~1000      155円
1001以上       185円

2ヶ月に一回の請求のため、使用量はまず2分の1にされ、各月ごとに算出したあと合算されます。
456455:02/09/19 21:14
例:使用量51㎡の場合

25㎡と26㎡に分割されます
500+(15-8)×75+(20-15)×80+(25-20)×90=1875 (25㎡分)
 1875×1.05=1968.75、よって1960円(10円未満切捨て)
500+(15-8)×75+(20-15)×80+(26-20)×90=1965 (26㎡分)
 1965×1.05=2063.25、よって1960円(10円未満切捨て)

使用料金は、1960円+2060円=4020円
457デフォルトの名無しさん:02/09/19 21:20
>>453
はい、それはわかります。
サーバ側のwinsockのインデックスはわかるのですが、クライアント側のwinsockのインデックスがわかりません。
どのようにしたらわかるのですか?よろしくお願いします。

m&#x00b3;
>>455
こんなん人に頼る時点で終わってる
460455:02/09/19 21:29
>>459
まだC習い始めて2ヶ月なんですよ、、、
そんな事言わないでおながいします、、、
>>456
まず、問題を分割してみよう
> 例:使用量51㎡の場合
> 25㎡と26㎡に分割されます
このソースをつくってみろ
463455:02/09/19 21:38
>>461
勉強しろっちゅーことですか、、、
頑張ります、、、
464455:02/09/19 21:40
>>462
わ、わがんねっす、、、(泣
465デフォルトの名無しさん:02/09/19 21:42
>>457
自分で通信規則作るんだよ。
例えば<自ID><送り先ID><ハンドル名><メッセージ>とか。
最初にクライアントにwinsock1(ID)設定したときにクライアントにID送っておく。
あとは受信データからサーバが各クライアントにメッセージ振り分け。OK?
467462:02/09/19 21:46
1の注意書きより抜粋
> ・自分の力で頑張ってみたことを伝えられる人。
3分で音を上げるような奴には俺は教える気にならん
half1 = input / 2;
half2 = input - half1;
つ~ぎいってみよ~~
469デフォルトの名無しさん:02/09/19 21:47
>>464
Cのソースにしなくていいから項番つけて処理手順書いてみ。
自分でも計算は出来るんだろ。
あとは変数の定義と入力・出力の設定だけ。
470455:02/09/19 21:49
>>466
よーするに割ると整数になる訳ですな
>>467
3000000分頑張っても私には解けないと思うます、、、
>>468
それでいいんですかね?
>>469
それならできそうです。がんばります
471デフォルトの名無しさん:02/09/19 21:55
ちょっとたずねますが、

printf("printfでは複数行にわたって
しまってもいいのですか?\n\n
よくわかりません。\n");

はOKですか?途中に開業コードが入るとだめですか?

int形なら 10/3 としたら 必ず 3 になりますか?
それともなにかの関数で切り落とす必要がありますか?
472デフォルトの名無しさん:02/09/19 21:58
>>471
イイカゲンにしろ!
>>471
そういう場合は
printf("printfでは複数行にわたって"
    "しまってもいいのですか?\n\n"
    "よくわかりません。\n");
にしろ。

> int形なら 10/3 としたら 必ず 3 になりますか?
なる。
printfは途中で改行できん
printf("printfでは複数行にわたって\
しまってもいいのですか?\n\n\
よくわかりません。\n");

なら委員じゃねぇの?
>>475
文法上はOKだが美しくない
しかしWinで
#define MAKURO() { \
  /* no */ \
  /* sora */ \
}
と作ったコードをそのままUnixに持ってくと
改行コードで刎ねられる罠。
>>471
>>468を見れば、half1,half2を足した物が、必ずinputと等しくなると思われ・・・
心配なら、
half1=(input-input%2)/2; //()内は必ず偶数になる。
half2=input-half1;
にすればいい。
>>455
#include <stdio.h>
static const int data[] = {
1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1120,
1200,1280,1360,1440,1520,1600,1680,1750,1820,1900,1980,2060,2140,2230,2320,2400,2480,2560,
2640,2730,2820,2900,2980,3080,3180,3270,3360,3450,3540,3640,3740,3830,3920,4020,4120,4210,
4300,4400,4500,4590,4680,4780,4880,4980,5080,5190,5300,5400,5500,5610,5720,5820,5920,6030,
6140,6240,6340,6450,6560,6660,6760,6870,6980,7080,7180,7290,7400,7500,7600,7710,7820,7920,
8020,8130,8240,8340,8440,8550,8660,8760,8860,8970,9080,9200,9320,9450,9580,9700,9820,9950,
10080,10210,10340,10460,10580,10710,10840,10960,11080,11210,11340,11470,11600,11720,11840,
11970,12100,12220,12340,12470,12600,12730,12860,12980,13100,13230,13360,13480,13600,13730,
13860,13990,14120,14240,14360,14490,14620,14740,14860,14990,15120,15250,15380,15500,15620,
15750,15880,16000,16120,16250,16380,16510,16640,16760,16880,17010,17140,17260,17380,17510,
/* 以下略 */
};
int main() {
int n;
printf("使用量は?");
scanf("%d", &n);
printf("使用料金は%d円\n", data[n]);
return 0;
}
>>479
やめれ目がちかちかする
ああもう、おれのハートを鷲掴みにする宿題はないのか!!
482 ◆k/Ubp.Kg :02/09/21 05:12
>>481
もうじき大学の夏休みが終わると思うので、その頃になると面白い宿題もくるかも。

# 宿題は夏休みの頭にさっさと済ませて遊ぶ派です
大学では、夏休みの宿題なんて出ないと思うが。
484 ◆k/Ubp.Kg :02/09/21 22:16
>>483
宿題っつーか課題っつーかレポートっつーか、そういうの。あと卒研とか。
>>484
いや、それはわかるが、この時期はないでしょう。
採点する時期を考えると。
冬学期はじまらないと。
ここに聞きにくるような奴は卒研もまだ本腰いれてやってないだろ。
486 ◆k/Ubp.Kg :02/09/24 23:07
>>485
>ここに聞きにくるような奴は卒研もまだ本腰いれてやってないだろ。
…なるほど(笑)
だから、age とけって…。
>>479
データ部分全て十分の壱倍しとかない?
489デフォルトの名無しさん:02/09/26 16:53
スミマセソ厨質デス

C言語でパック・アンパックデータって何ですか?

例えば"123"って、十六進数で表すと
"313233"になりますよね?
その先頭の3を取って、"123"とファイルに書きこむ
プログラム作れって言われたんですけど・・・

正直まったくわかってないです・・・

ご回答オナガイシマス
要するに
"123" = { '1', '2', '3' } = { 31, 32, 33 }
という文字列を、
{ 1, 2, 3 }
という配列にしたいってことだな。30引けば?
げ、0xつけわすれた
0は?
output_no[i] = char_no[i] - '0';
とかすれば良いでしょ
違うか?
2進化10進符号とか絡んでくる?
494489:02/09/26 20:32
ミナスワァン
ご協力感無量です

なんかビット演算を用いるみたいっす。

少し自分でも考えて、またわからなくなったら
ご意見乞いに来ます。

ありが㌧
0x0Fを掛ける?
output_no[i] = char_no[i] & 0xf;
497489:02/09/26 20:56
ミナサソのおっしゃり通り
i=i & 0x0F;
でデキマスター
キタ━━━( ´∀`)・ω・) ゚Д゚)・∀・) ̄ー ̄)´_ゝ`)━━━!!!!

さらにこれを元に戻す場合も
ビット演算でできますよね?
>>497
数字だけでいいのか?
英字とかは?
>>497
パック/アンパックなんだよな...。4 bit シフトとかはいいのか ?
>>497
漢字は?
>>497
i = i | 0x30
502489:02/09/26 22:57
>498-501
ご指摘ありが㌧ございます。。。

なるほど、、、いろいろ問題点あるんですね。。。

自力でやってみて、わかんなかったら
また襲来いたします。。。
age
:
505デフォルトの名無しさん:02/09/29 11:13
489の宿題の内容が理解できない……
123だと313233になるなら、abcは979899で、ファイルに書き出すデータは
{1,2,3} {1,2,3}
{a,b,c} {7,8,9}
ってことかな?
そうではなくて、文字として存在しているデータを数に直せっていう問題なのかな?
数字だけなのか?アルファベットはいらないのか?
もう帰ったよ
507503:02/10/01 15:04
key
489は'0'=='\0'となってもいいのだろうか?
これだと文字列終端が分からないんじゃ?
厨デス

slen=strlen ( argv[2] );
と宣言したとして、
その確保した先頭のアドレスに
char ZERO = '0';
を入れたいんですけどドウスレバヨロシイノデショウカ?
意味不明の質問にあてずっぽうで答えてみるテスト

*argv[2] = ZERO;
しかし、argvに代入ってのは、なんか怖いな。
512503:02/10/02 17:09
mebius

constじゃないのは訳がある
514 ◆k/Ubp.Kg :02/10/03 06:24
>>511
別に良いんじゃないかな?getoptだって使い終わった後のargvの内容が同じであることは保証していないし。
515デフォルトの名無しさん:02/10/05 02:14
age
宿題こないねえ。おじさん、仕事しちゃうよ。
517デフォルトの名無しさん:02/10/05 11:57
ここでこんなこと聞いて良いのかわかりませんが、質問させて下さい。
EXCELでひらがなの文字列(姓名)をアルファベットに変換するには
どうすれば良いでしょうか?
スレ違いであれば、適切なスレッドを教えて下さい。
518 :02/10/05 23:48
>>517
for i=1 to len(text)
str=mid(text,i,1)
if str="あ" then out=out & "A"
・・・
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&rm=75
の21から、「助けて下さい…」という情けない名前で書き込んでいます。

DirectXなのですが、
scoreの方がうまく表示されません…
(ちなみに画像から矩形を指定する方法で表示しています)
520デフォルトの名無しさん:02/10/07 23:09
めんてあげ。
521デフォルトの名無しさん:02/10/08 11:20
これか!!
黙れ!!
523デフォルトの名無しさん:02/10/08 11:22
すいませんこれ教えてください    おしえてくれぇ~

Javaで

図形クラスを作ってみよう
四角クラス:Ssikaku
・フィールド
  ・幅:width(int)
・高さ:height(int)
・メソッド
   ・面積を返す:square()(戻り値int)
・public class:Zukei
20×30の四角いクラスのインスタンスを生成して面積を表示
質問丸投げ馬鹿阿呆能無し生きる意味無し氏ね
525デフォルトの名無しさん:02/10/08 11:26
>>524
おしえてくれぇ~
int square(){return width*height;}
class Ssikaku {
int width;
int height;
Ssikaku(int w, int h) {
width = w;
height = h;
}
public int square() {
return width * height;
}
}
public class Zukei {
public static void main(String[] s) {
Ssikaku Sikaku = new Ssikaku(20, 30);
System.out.println("20×30の四角いクラスのインスタンスを生成");
System.out.println("面積 " + Sikaku.square());
}
}
>>523
クラスがSsikakuで面積を返すメソッドがsquare()って
その問題を出した先生もたいがいアホやな・・・
529デフォルトの名無しさん:02/10/08 11:56
>>527
ありがとうございます!!
530デフォルトの名無しさん:02/10/08 12:06
>>527
神様ありがとうございました!!
助かりますた!!
本当ありがとうございます!!
Cの質問です!

(1)次の4つの記号 ┏ ┓┗ ┛を用いて4角を出力する rect() 関数を作成しましょう. ? 出力例 ┏┓ ? ┗┛
(2)さらに┃を利用して, 4角の縦のサイズを変えられるように rect() 関数を変更しましょう.
 Hint. rect(int n) というように引数 n を取って, n の数だけ ┃┃ を出力します.

だれかこの問題を解いてください!
あげろよ 
>>531
マルチヤメレ。(ついでに、>>523 もな。)
>>533
禿同。>>531はインターネットマナーの基本学んできたら教えてやるよ。
535531:02/10/08 21:20
マルチじゃありません。勝手にコピペされました。
>>531
ァァァン。ということで(w

printfはわかってるようだし、こういう問題がでてくるってことは
ループは習ってるんだよな。whileとかforとか。
それらを使って関数を組み立てる。
あと関数の定義の仕方も習ってるよな。
こんなのか?
void rect(int n)
{
printf("┏ ┓\n");
for (; --n; )
printf("┃ ┃\n");
printf("┗ ┛\n");
}
putsでいいじゃん
直しました。
void rect(int n){
puts("┏ ┓\n");
while(n--)
puts("┃ ┃\n");
pits("┗ ┛\n");
}
pitsになってる。
putsなら\nはいらないとおもう。
直しました。
#define pits puts
void rect(int n){
puts("┏ ┓\n");
while(n--)
puts("┃ ┃\n");
pits("┗ ┛\n");
}
いろいろごめん。
void rect(int n)
{
puts("┏ ┓");
while (n--)
puts("┃ ┃");
puts("┗ ┛");
}
void rect(int n) { puts("┏ ┓"); while (n--) puts("┃ ┃"); puts("┗ ┛"); }
int main(){int n; prinf("input n "); scanf("&d",&n); rect(n); return 0;}
545デフォルトの名無しさん:02/10/09 00:47
心理学の宿題レポートで

「街中で異性をナンパする」

という課題が出されました。ナンパなんて下個とありません。
犯り方教えてください。
難破すれば良い。
若しくは、ナンパして失敗すれば良い。
547デフォルトの名無しさん:02/10/09 01:13
>>545
おもろい先生やな
548デフォルトの名無しさん:02/10/09 01:22
("┏_┓") フーン
>>545
"俺と一緒にPascalやらないかい?"って声かけまくれ。
なぜナンパと心理学が関係あるのかと子一時間・・・(以下略
■やっぱプログラムって算数できねえとだめ?■
http://pc3.2ch.net/test/read.cgi/tech/1031838665/l50

プログラミングの為の数学と算数
http://pc3.2ch.net/test/read.cgi/tech/997150743/l50

C++による数学プログラムスレ
http://pc3.2ch.net/test/read.cgi/tech/1031797550/l50

宿題手伝いますYO!!
http://pc3.2ch.net/test/read.cgi/tech/1029422194/l50

C/C++の宿題なら俺にやらせろ!
http://pc3.2ch.net/test/read.cgi/tech/1021862587/l50

宿題手伝います
http://pc3.2ch.net/test/read.cgi/tech/1027756023/l50
552511:02/10/09 01:48
誤爆
>>552
どっかに新スレが立ったのだろうか。
555553:02/10/09 04:22
>>554
さんくす。そのスレ知らなかった。
556デフォルトの名無しさん:02/10/11 18:55
厨房デス
テキストファイルを引数で渡して
そのファイルの内容を1行づつ画面に表示。
Enter押すまでプロンプトはとめたまま。
#include <stdio.h>

main ( int argc, char *argv[] )
{
FILE *fp;
char str[256];

if ( argc !=2 ) {
printf ( "Number of arguments are different\n" );
exit ( 1 );
}

if ( ( fp = fopen ( argv [1], "r" ) ) == NULL ) {
printf ( "Can't open FILE:argv [1]\n" );
exit ( 1 );
}

while ( fgets ( str,256,fp ) != NULL ){
printf ( "%s",str );
}

fclose ( fp );
}

Enter押すまで止まってるってのがわかりません・・・
どなたか教えてくださいませ・・・
バッファリングしてるんじゃない?
> printf ( "Number of arguments are different\n" );
たしかに厨房らしいな。。

別に止まらないけど
Enter押すまで止まってるようにする方法が分からないってこと?
こんなコードかな。
int ch;
while ((ch = getc(fp)) != EOF) {
putchar(ch);
if (ch == '\n')
while (getchar() != '\n')
;
}
>>556
while ( fgets ( str,256,fp ) != NULL ){
printf ( "%s",str );
while (getchar() != '\n')
;
}
562デフォルトの名無しさん:02/10/15 21:46
age
LR構文解析のソースきぼん
>>563
ネットで検索しる。言語にもよるが、かなり出て来るよ。
565デフォルトの名無しさん:02/10/16 03:45
C++やってる者です

1、4+5
80-30
100%6
89*301
  と言うデータの入ったファイルがある(ファイル名は任意で、数式は1行につき1つでスペースは無い)  
2、数式はstring型の変数に読み込む。
3、演算子は、+,-,*,/,%,の5つのみ。
4、数式から演算子を除いたオペランドの数値文字列を取り出した後、
  その数値文字列を数値に変換する部分を関数 int get_number(string)を作成して用いること。
5、実行データファイル、出力ファイルの中身を表示させること。
  というものなんですが、
#include<iostream>
#include<fstream>
#include<string>
#include<cassret>
using namespace std;
int main()
{
ofstream fout;
ifstream fin;
string date;
cahr fname;
cout << "input file name ---> \n";
cin >> fname;
fin.open(fname);
assert(fin.is_open());
fout.open("ansfile");
assert(fout.is_open());
以下の肝心な部分がさっぱり分かりません、どうかお願いします。
566デフォルトの名無しさん:02/10/16 04:58
C++はよく知らないんだがstringのメソッドをよく調べる。
文字列を分解するのがあるはずだから
それを使ってオペランドと演算子に分解する。
オペランドはint get_number(string)に渡して
あとは演算子にしたがって計算する。
567デフォルトの名無しさん:02/10/17 23:58
Javaで質問です。以下のプログラム、
class A{
static void m(int x){}
static void m(char x){}
}
class B extends A{
static void m(long x){
m(0);
m('A');
m(0L);
}

}
の、m(0);, m('A');, m(0L);で適用されるメソッドとどれでしょうか?
また、コンパイラはどのメソッドを選択しますか?
>>567
聞く前にさ、System.out.printlnでもメソッドにいれて自分で実験し
てみようと思わないの?
569ossu:02/10/18 00:51
class A{
static void m(int x){System.out.println(x)}
static void m(char x){System.out.println(x)}
}
class B extends A{
static void m(long x){
m(0)m;
m('A')m;
m(0L)m;
}

}
>>569
ワラタ
('A')

これが顔に見える。
572デフォルトの名無しさん:02/10/18 01:27
↑つまんねーし、結構間違ってるし。
うーむ、わからん……。
574デフォルトの名無しさん:02/10/18 05:03
m(0); <- int
m('A'); <- char
m(0L); <- long
('A')イクナイ!
('A')ウンコー!
m('A')mスマンナ!マッキニスルナ!
m(0L)m←誤るOLに見える
Σ(゚Д゚;エーッ!
580モモ様:02/10/19 01:35
助けてください
データフォームウィザードを使ってアクセスのデータベースに接続したい
のですがデータベースファイルを選択するとき、ファイルの名前をいれても
「認識できません」ってでます。私はどうすれば、、、

ソフトはvb6、アスセス2002です。
↑は、宿題れすか?
582モモ:02/10/19 04:36
はい、宿題です
583 :02/10/20 20:07
ファイル名をじぶんで指定して(入力して)ファイルを開く方法
おしえてください!
584デフォルトの名無しさん:02/10/20 20:10
main(int argc,char *argv[]){
FILE *fp = fopen( argv[1], "r" );
}
585583:02/10/20 20:15
>>584
すこしせつめい不足でした・・
ファイル名をプログラムのほうから聞いてきてくれて、
ドスのがめんから入力するようなやつです。
char buf[128];
printf("file name=");
gets(buf);
fp = fopen(buf, "r");
587デフォルトの名無しさん:02/10/20 20:21
main() {
FILE *fp;
char buf[1024];
printf("ファイル名をプログラムのほうから聞いてきてくれて、\n");
gets(buf);
fp = fopen(buf, "r");
}
588583:02/10/20 20:38
ありがとうございました。解決しました!

589hiloshi ◆W2li6n5Xa6 :02/10/23 23:52
分からないレポートが・・・

「フィボナッチ探索」を実現せよ。
データの個数は50個とし、配列の宣言時に適当に与える。
データが単峰性を持っていなければならないことに注意すること。

フィボナッチ数列って1,1,2,3,5,8,13,21・・・ってのですよね?
50個のデータでフィボナッチ探索って出来るんですか?
>>589
「フィボナッチ探索」でググったのか?
591デフォルトの名無しさん:02/10/24 00:55
さっぱりわからなくてお手上げです。

テキストファイル"input2.txt"から座標データを読み込み、読み込んだ各点間を
n等分した中間点の座標を"二次式による補間法"を用いて計算し、ディスプレーおよびoutput2.dat
に出力するプログラムを作成しなさい。ここで、nの値はキーボードから、もしくは
プログラム中に直接定義してもよい。

Input2.txt(先頭行はデータ数、2行目以降はxおよびyの位置関係)
5
100.0 0.0
200.0 200.0
300.0 100.0
400.0 0.0
500.0 300.0
>>591
どっかのスレで見た気がする。探してみそ。
>>591
ラグランジュ補間ではないの?
なにが分からんのか?
テキストエディタが開けないのか?
コンパイルの仕方がわからんのか?
595 :02/10/24 02:48
モホロビチッチで。
二次式による補間法???????
ラグランジュ補間、ネヴィル補間、ニュートン補間、差分補間、
スターリング補間、ベッセル補間、エルミート補間、スプライン補間

はわかるが、二次式による補間なぞは知らん。
598デフォルトの名無しさん:02/10/26 19:35
fn(x)はマクローリン展開をn次でうちきったもので
math.hの算術関数使用不可
log(x)の近似値を計算する関数mylog(x,n)を作成はどのようにすればできるのですか?

まったくわからないものでしてお願いします
>>598
マクローリン展開の復習をすれば自然とわかる。
マクローリン展開がまったくわからなかったらこのプログラムもわかりっこないが。
600デフォルトの名無しさん:02/10/26 19:41
>>599
マクローリンはわかりますが
プログラムが全く苦手でmath.h使えないのでわからないんですが・・
>>600
log(x)をマクローリン展開すればいいんだろ?
何が問題なんだ?
>>600
> マクローリンはわかりますが
だったらまず理解してることを書け。
ひょっとすると親切な奴が、プログラムに翻訳してくれるかも知れん。
大概のプログラマは、マクローリン展開なんか既に忘れてるし、自分が困らない限りマクローリン展開まで調べたりはしない。
603マクローリン展開:02/10/26 22:09
マクローリン展開,Maclaurin展開,maclaurin展開
f(x)=f(0)+xf'(0)x+x^2f''(0)/2!+...+x^nf(n)(0)/n!......
{f(n)(0)=[f(0)のn回微分]}
最近どっかで書いた覚えが・・・
604VC++房:02/10/27 00:17
カメラから画像を取得してきて、その画像に名前を付けファイルに保存して次の
トリガーを待つプログラムを
作りたいのですが、機能を分割すると
・カメラから画像を取得しバッファに格納(専用APIで解決)
・取得しバッファに格納した画像に0001~の名前を付ける
・バッファに格納した画像データをファイルに保存
で良いでしょうか?
>>598
log(0)は未定義ですが何か?
log(1+x)にすると、|x|<1の範囲しか適用できませんが何か?
log(1-x)に(以下略)

log(1+x)/(1-x)=・・・
>>604
なにがトリガーになるの?
波形をデータ化してx、yがそれぞれ1000個ずつデータがあるのですが、
それを積分するにはどのようなプログラムでしょうか
簡単な質問かもしれませんが、おながいします
608607:02/10/28 02:44
>>607
あ、C言語でおながいします。スマソ
>>606
単発質問野郎の上にマルチ。
http://pc3.2ch.net/test/read.cgi/tech/1035653663/l50
VC++房 =ボルフェス
痛いね
>>607
for(i = 0; i < 1000; i++)
sum += y[i] * dx;

でいいんじゃない。
>>607
yを全部足してxの幅を掛ける。
>>607
君はプログラムの前に微積を勉強した方がいいと思うぞ。
公式とかじゃなくて概念を。
614607:02/10/28 03:17
書き方が悪かったですね。スマソ
元の波形を積分した波形が最終的に欲しいので、
全体を積分した値じゃなくて、波形を得られるようにデータ数が同じだけ欲しいのです
スマソ

>>614
z[0] = y[0];
for(i = 1; i < 1000; i++)
 z[i] = z[i-1] + y[i];

ということか?
616デフォルトの名無しさん:02/10/28 03:50
自然対数eの値に接近する様子を調べるプログラムです。

e_n = 2 + 1/2! + 1/3! + ・・・ + 1/n! と置く。
この時 n = 1~100 までの値を調べるプログラムを書きたいんですが、難しいです。
言語はCです。よろしくお願いします。
これでいいのかな...?
>>616
double e_n = 2, nfact = 2;
int n;
for( n = 1; n <= 100; ++n ) {
nfact *= n;
e_n += 1.0 / nfact;
printf( "n = %d : e_n = %f\n", n, e_n);
}
>>616
何が難しい?
(1/1!)/2 = 1/2!
(1/2!)/3 = 1/3!
となるわけだから

for(なんか){
 elem /= n;
 e += elem;
}
とすれば計算できるだろ。
訂正
1行目 e_n = 1, nfact = 1;
eの値に接近する様子を調べるなら
テーラー展開じゃなくて、定義に戻って
e = lim (1 + 1/n)^n  (n->∞)
を使う方がいいと思う
>>618
あたまいいね。なるほろ
>>621
あたまわるいね。しね
623デフォルトの名無しさん:02/10/28 04:46
>>614
書き直すなら、ちゃんとしろ。
> 全体を積分した値じゃなくて、波形を得られるようにデータ数が同じだけ欲しいのです
意味不明。後レスすごい。
>>614
for(i = 0; i < 1000; i++){
sum += y[i] * dx;
iy[i] = sum;
}

625デフォルトの名無しさん:02/10/28 12:19
>>598 数値解析のレポートだね
626*学生:02/10/28 18:52
C言語の授業で
間接参照演算子を用いて間接的に参照するメリットを述べよ。
って言う課題が出たんですがさっぱわかんないです。
教えてください。
>>626
(*p).member
p->member
間接参照演算子を使った方が字数が少なくなる。
628*学生:02/10/28 20:16
>>627
ありがとうございます
629627:02/10/28 21:07
>>628
他には、*p.memberと書くと、演算子の優先順位の関係で、
*(p.member)という風に解釈されてしまう。
間接参照演算子を使うと、この辺の間違いがなくなる。

何か問題の主旨とずれてそうな気がしないでもないけど。
630デフォルトの名無しさん:02/10/29 17:00
age
OO は糞
632レポートいやだ~:02/10/31 02:33
お願いです。誰かjavaでネットワーク対戦ができるテトリスを作ってm(_ _)m
さすがにだりーぞ。
>>632
まず普通のテトリス作りな。
>>626
メモリー節約とかかな?
>>616
nは0からじゃなくていいのか?
初項が2というのも変、普通は1+1+...って形でしょ。
637デフォルトの名無しさん:02/10/31 07:59
宿題ではないのですが、分からないので助言を頂けたら幸いです。

2進コードが、下のように入っているとします。
n=4;
int aaa[n]=[1,1,1,0]; (10進で14)

bbbk=Σ[i=k,n-1]aaai(mod2)
によって
bbbは[1,0,1,1]になります。(10進で11)

aaaから、bbbに直すのに、配列の0番目からやっていく方法ってありますか?
よろしくお願いします。
638デフォルトの名無しさん:02/10/31 10:18
>>637
> bbbk=Σ[i=k,n-1]aaai(mod2)

これの意味が分からない。
学のある人がいたら教えてください。
bbb[0]=(1+1+1+0)mod2=1
bbb[1]=(1+1+0)mod2=0
bbb[2]=(1+0)mod2=1
bbb[3]=(0)mod2=1?
640デフォルトの名無しさん:02/10/31 10:44
>>639
bbb[0] = (aaa[0]+aaa[1]+aaa[2]+aaa[3])%2;
bbb[1] = (aaa[1]+aaa[2]+aaa[3])%2;
bbb[2] = (aaa[2]+aaa[3])%2;
bbb[3] = (aaa[3])%2;

そのままCで書くとこうだけど、今度は↓「配列の0からやる」というのが分からない…

>aaaから、bbbに直すのに、配列の0番目からやっていく方法ってありますか?
0からやるとこんな感じ。
for (k=0; k < n; k++) {
bbb[k] = 0;
for (i=k; i < n; i++)
bbb[k] += aaa[i];
bbb[k] %= 2;
}
後ろからやると
for (k=n-1; k >= 0; k--)
bbb[k] = (bbb[k-1] + aaa[k]) % 2;
642デフォルトの名無しさん:02/10/31 12:22
#include <stdlib.h>
#include <stdio.h>
int main(
int argc,
char * argv[ ]
)
{
if (argc !=3)
printf("wrong no. of arguments\n");
else
{
printf("Sum: %d\n", atoi(argv[1]) + atoi(argv[2]));
}
return 0;
}
2つの引数を加算乗除するプログラムをつくれ

a.out 2 4 なら
sum: 6
dift: -2
prod: 8
わりきれません

俺には加算で限界です誰か改良して加算乗除お願いします。
おねがいします
>>642
http://pc3.2ch.net/test/read.cgi/tech/1021862587/897-932

加算で限界ってなんだ。
別にてめえが加算の部分を考えたわけではないだろうに。
>>642
昨日、この質問をしてたのは女だったのに…
周りに「あそこで聞けば教えてもらえるぞ」とか言いふらしてない?

#include <stdlib.h>
#include <stdio.h>
int main(
int argc,
char * argv[ ]
)
{
if (argc !=3)
printf("wrong no. of arguments\n");
else
{
int a = atoi(argv[1]);
int b = atoi(argv[2])
printf("Sum: %d\n", a+b);
printf("dift: %d\n", a-b);
printf("prod: %d\n", a*b);
if(a % b != 0) {
puts("割り切れません");
}
else {
printf("div: %d\n", a/b);
}
}
return 0;
}
645デフォルトの名無しさん:02/10/31 13:24
>>644


本当にここは教えてもらえるんですね・・・・
うちの大学のC言語の先生めちゃくちゃ厳しいんだよね・・・・
去年なんか七割脱落で補習だし・・・・・
なんかみんなここに来はじめてるよ・・・・・
ありがとうございます。
でもこの調子だといつかばれるよな・・・。
>>645
一箇所ミスがあるけど、自分で治せるよね。
>>645
大学の事情なんざ知らん。みんなここに来てもいい。
でも、できれば質問すんのは宿題手伝いますYO!! スレか
C/C++の宿題なら俺にやらせろスレだけにしてね。
648教えて注:02/10/31 14:10
>>647

どこ?まじでわからん。
649?????:02/10/31 14:13
>>648

;がないだろう
>>648
こいつ、コンパイルして動作確認したりインデントを直しなりしないで
そのまま提出するに、1000ペリカ。
0除算のチェックも必要だす
>>651

0除算?
なんだそりゃ?インデント?
653デフォルトの名無しさん:02/10/31 15:00
yumiko?

特定しました。まじで
>>642
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]){
if (argc != 3){
puts("wrong no. of arguments");
}else{
int a = atoi(argv[1]);
int b = atoi(argv[2]);
printf("Sum: %d\n", a+b);
printf("dift: %d\n", a-b);
printf("prod: %d\n", a*b);
if (b == 0) {
puts("0では割れません");
} else if(a % b != 0) {
puts("割り切れません");
}else {
printf("div: %d\n", a/b);
}
}
return 0;
}
655デフォルトの名無しさん:02/10/31 17:04
>>654
なるほどそういうことか。わかったよ。
ありがとう。

656637:02/10/31 18:40
637です。

>2進コードが、下のように入っているとします。
>n=4;
>int aaa[n]=[1,1,1,0]; (10進で14)

>bbbk=Σ[i=k,n-1]aaai(mod2)
>によって
>bbbは[1,0,1,1]になります。(10進で11)

>aaaから、bbbに直すのに、配列の0番目からやっていく方法ってありますか?
>よろしくお願いします。

これらの[1,1,1,0]は、Bitなので、右から左にaaa_0,aaa_1,…のように並んでいるのです。
([0]→[1]→[1]→[1])
だから、あの数式も、右から左にaaa_0,aaa_1,…と流れていきます。
そんな中敢えて、aaa[]の0番目から(3番目からじゃないすよ)処理して、アウトプットを[1,0,1,1]にする
方法ってありますか?というのが相談でした。
説明が悪くてすみません。
for(mask=1<<n-1;mask!=0;mask>>=1)
がヒントらしいのですが…。
違う高校の人たちにも聞いたんですけど…、なかなか。
657デフォルトの名無しさん:02/10/31 18:42
for(mask=1<<n-1;mask!=0;mask>>=1)
ならビット演算だから配列じゃないのでは?
658637:02/10/31 18:48
あっ、そうです。
その「配列をビットにするんだよ」って、授業で、かすかに言ってたような。
だからシフト演算で、1000+100+10+(0)=1110のようにするってことですかね~。
659デフォルトの名無しさん:02/10/31 18:51
int aaa = 14;
をビット演算してbbbを11にしたいんだな。

でも bbbk=Σ[i=k,n-1]aaai(mod2) の意味が分からん。

660デフォルトの名無しさん:02/10/31 18:57
int aaa = 14;
int bbb = 0;
for(mask=1<<n-1;mask!=0;mask>>=1)
bbb |= ((bbb >> 1) + aaa) & mask;
こんな感じか?
661637:02/10/31 19:05
は~い、書きます。

例えばn=4,
   1 1 1 0の場合。

bbbk=Σ[i=k,n-1]aaai(mod2)

b0=0+1+1+1=3=3mod2=1
b1= 1+1+1=3=3mod2=1
b2= 1+1=2=2mod2=0
b3= 1=1=1mod2=1
で、bitの並びなのでb0から右に詰めていきますので
1011になり、見事サンプルアウトプットと同じになりました。
662637:02/10/31 19:14
>>660さん、すごいんですけど。
えっ、どういう考えで、こういうプログラムになったんですか?
教えてください。
663637:02/10/31 22:09
>>660さん
for(mask=1<<n-1;mask!=0;mask>>=1)っていうヒントから
どう結びつけたのですか?
664デフォルトの名無しさん:02/10/31 23:20
すみませんどなたかお願いします。

コンパイラを作成で目的語生成において

whileの構文は 

while文 = ‘while’‘(’ 式 ‘)’ 文   であるから、

while_statement(){int a0, a1;
get_token(); a0= set_label();
if( token==Lpar ) get_token(); else missing("(");
eval(expression());
a1= set_label(); gen("JF", 0);
if( token==Rpar ) get_token(); else missing(")");
statement();
gen("J", a0);
fixed_up(a1, set_label());
}
と、なることにする。
ここでこのwhile文を使ってfor文を作る方法がわかりません。
for文 = 'for''('  式  ';' 式  ';'  式  ')'文 であり、

for(α;β;γ)S;   であるからwhileを使うと

α;
while( β ){
S
γ;
 
となり、これを使用するみたいなのですがどうすればいいでしょうか。
別に使用しなくてもfor_statementが記述できればいいのですが。
>>664
for(式; 式; 式)

だったらなにがなんだかわからんだろう。

for (α; β; γ)
α: ループに入る前に評価する式
β: ループの末尾で評価する式、結果がfalseでなければループ先頭にジャンプ
γ: βの直前に評価する式

ってなってる。この辺理解できていればwhileに展開するのは簡単なはずなんだが。
666664:02/11/01 00:22
レスありがとうございます。

そうです。for(α;β;γ) S で、
αをfor文の初期設定,βをfor文の反復判定,
γをfor文の増分操作としています。

とりあえず以下のようにしてみて

for_statement(){
if( token==For ){
get_token();
if( token==Lpar ) get_token(); else error();
expression();
if( token==Semicolon ) get_token(); else missing(";");
expression();
if( token==Semicolon ) get_token(); else missing(";");
expression();
if( token==Rpar ) get_token(); else error();
statement();
}else{
error();
}
}
さらに、ジャンプの仕組みを追加したいのですが
わかりません。

>>665さん
すいません。
その辺は理解している(したつもりになっている)のですが
ちっとも簡単に思えないのです。よろしければ
もう少し詳しくお願いします。
>>666
流してしか見てないんだけど、whileはできてるんだよね。
んで

for (exp1; exp2; exp3)
 statement;



exp1;
while (exp2) {
 statement;
 exp3;
}
と等価だから、そのように構文木(を作ってるんだよね?)を作り直してみたらどうだろう。
ってこの辺あんまり詳しくないので的を外れたことを言ってるかもしらん。
668デフォルトの名無しさん:02/11/01 10:34
>>663
for(mask=1<<n-1;mask!=0;mask>>=1)
はmaskが2進数で1000,0100,0010,0001になる。
hoge & mask でビットが立っているか判定できるし。
bbb |= hoge でhogeの立っているビットをbbbも立てることができる。
(bbb >> 1) + aaa はbbbのビットを右にずらして
(bbbにはそれまでのが入っている)
足せばマスクするところに合計が出るでしょ。
でマスクしてorをとる。
xorのほうが良いかな。
mask=1000, 0000 ^ 1110 = 1110 -> 1000, b=1000
mask=0100, 0100 ^ 1110 = 1010 -> 0000, b=1000
mask=0010, 0100 ^ 1110 = 1010 -> 0010, b=1010
mask=0001, 0101 ^ 1110 = 1011 -> 0001, b=1011
でもビットがn-1番目からだけど。
0番目からは同じ計算が多くなって無駄なだけじゃないかな。
670ふトンカ ◆wX94FutoNg :02/11/02 16:34
常に曲がったプログラムを!そんな私に無謀な友人が
ひじょーに簡単なプログラムが書けないと言ってきたので書きました。

文字"c"があるか?
なければ-1を返す (けど私は画面表示してます)
cがあったら(最初のcまでが)何文字目かを表示する。

#! /usr/local/bin/perl
$moji = 'aabbcdscddcc'; # 処理する文字
if ($moji =~ /c/) { print'"c"なんてないっす!'; exit; } else {
@i = split(/c/,$moji); # cがあったらそこで区切って配列を作る
$i = length($i[0]); #1つ目の配列の長さを取得
print "\"c\"発見! $i文字にあります。"
}

素晴らしく方法が間違ってるけどこれでOKだな、と渡したら
C言語だ!それにこのプログラムはへそ曲がりだ!と怒られました…私はPerlしか書けないって言ってるのに…。
これをC言語で素直に実現するとどんな風になるんでしょうか…。
どなたか教えてください。


…Perlならもっと短くできそうですね。全然関係ないですが…。
671ふトンカ ◆wX94FutoNg :02/11/02 16:38
逆でした(泣) 私はアホだ…
cが有る場合に処理を止めてどうする…

#! /usr/local/bin/perl
$moji = 'aabbcdscddcc'; # 処理する文字
if ($moji =~ /c/) {
@i = split(/c/,$moji); # cがあったらそこで区切って配列を作る
$i = length($i[0]); #1つ目の配列の長さを取得
print "\"c\"発見! $i文字にあります。" } else {
print'"c"なんてないっす!'; exit; }
672デフォルトの名無しさん:02/11/02 16:40
>>670
char *s = "...";

char *p = strchr(s, 'c');
if (p) printf("%d文字目にcがある\n", p - s);
else return -1;

こんなかんじかな。
673ふトンカ ◆wX94FutoNg :02/11/02 16:55
ごめんなさい、、私がさらに面白い方法で取得してやるとか言っていたら(汗)
問題が違うとか言われました、、

*問題は
文字列strの中に、文字cが含まれていれば、(複数ある場合最も先頭側とする)
その添え字を返し、含まれていなければ-1を返す
int str_char(const char str[], int c) {/*……*/}

だそうです。。。なんのこっちゃ(Cはさっぱり)

>>672
> 美しいです、でも全然分からない、マジでごめんなさい。
とのことです。残念ながら私も美しい以外は分からない(汗)

質問の仕方がなってなかったです。逝ってきま…いや、回答があるかもと期待して。
674デフォルトの名無しさん:02/11/02 17:34
int str_char(const char str[], int c) {
int n=0;
do if (str[n] == c) return n;
while (str[n++] != '\0');
return -1;
}
675ふトンカ ◆wX94FutoNg :02/11/02 18:34
>>674
ありがとうございます。

なんかまだ、他の関数が難しいそうな、、
初級者だもんな… (わたしはそれ以前だが)
しかし分からないけど(汗)美しい…

私もC++あたり勉強しないとな、、Perlは遅いですので(当然…)

>>674
>>672
感謝。
>>675
CからC++に進んだほうが理解しやすいと思うよ。
いきなりC++を始めるよりは。
677デフォルトの名無しさん:02/11/02 22:39
>>674
お世話になったものですが、関数の呼び出しがどうしてもうまくできないんですけど…
int main(void)
{
char st[100];
int cs;

printf("文字列を入力してください:");
scanf("%s", st);

if (str_char(st, cs == -1))
printf("cはありません\n");
else
printf("文字列%sの最も先頭側のcの添え字は%d。\n", st, str_char(st, cs));

return (0);
}

これだと「cはないです」しか出なくて…
あと、一歩って感じなんですが…
>>677
ぜんぜんダメ。
最初から勉強し直せ。
679デフォルトの名無しさん:02/11/02 22:42
>>677
> if (str_char(st, cs == -1))
この行は、
> if (str_char(st, 'c'))
こうだね。
680679:02/11/02 22:47
>>679はミス。

>if (str_char(st, cs == -1))
これは
>if (str_char(st, 'c') == -1)
こうだね。

下のprintfでstr_char()を呼び出してるところも間違えてるよ。
681ふトンカ ◆wX94FutoNg :02/11/02 23:50
なんか解決したようで、さすが、すごい。。
昔Perlって何?だった時代に美しいBBSのソース見たときのような感動。
皆さん凄いですね、、。

>>676
うーん、0から覚えるならC++からだ!とか、Tkを使え!Perlマンセー!
など、色々言われております(汗) とりあえず、勉強します…。

>>678
できないサポートまでしてしまう私はアホ~。だれか助けて! (?) (/_;)
私も全く同感です。同感できる立場にはありませんが…。

ヤケで作ったブツ…の完成(?)品
$moji = <>;
sub ccheck {
if ($moji =~ /c/) {
@i = split(/c/,$moji);# cがあったらそこで区切って配列を作る
$i = length($i[0]);#1つ目の配列の長さを取得
} else { $i = -2; } $i++; return $i }

if (&ccheck == -1) { print '"c"なんてないっす!'; exit; } else
{ print "cは$i番目にありました"; }
682667:02/11/03 00:14
>>678
俺もそう思います…

>>679
ありがとうございます。

C言語って、なんなんだろう…(ぉ
683デフォルトの名無しさん:02/11/03 15:32
入力した数字を表示したいが数字が改行されてしまう。
改行せずカーソルを右に移動する方法、
更に、計算結果もその右へ表示する方法教えて下さい。
#include <stdio.h>
main()
{
int a,b,c,d;
scanf("%d%d%d",&a,&b,&c);
d=a+b+c;
printf("%d",d);
}
これでは縦に表示されるので
 123 6 このように表示したい。
>printf("%d",d);
printf("%d%d%d %d",a,b,c,d);
return0;
685683:02/11/03 16:04
123 6は1と2と3を入力し合計6が出力されるという事です。
1を入力。リターン。改行。
2を入力。リターン。改行。
3を入力。リターン。改行。
合計6表示。
となってしまうので、
1入力。リターン。カーソル右へ。2入力。リターン。カーソル右へ。
3入力。リターン。カーソル右へ。1つ空白で合計6表示。
という意味の 123 6 です。
gotoxy(x,y);
687683:02/11/03 18:29
gotoxy(x,y);をどうやって組み込めばいいのですか?
検索しても分かりやすい説明がなかったです。
688デフォルトの名無しさん:02/11/03 23:14
>>687
「エスケープシーケンス」で小一時間調べてみろ。
>>683
#include <stdio.h>
main()
{
 int a,b,c,d;
 scanf("%d",&a);
 printf("\x1b[1A\x1b[1C");
 scanf("%d",&b);
 printf("\x1b[1A\x1b[2C");
 scanf("%d",&c);
 printf("\x1b[1A\x1b[4C");
 d=a+b+c;
 printf("%d",d);
}
UNIXとか効果がないパソコンもあるらしいですが、僕のパソコンの場合です。
\x1b[1A でカーソルを1上へもって行き、 \x1b[1C で1右へもって行きます。
\x1bの所をESCと書く方法もあるようです。なお、Bなら下、Dなら左です。
60cmキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
691デフォルトの名無しさん:02/11/04 15:17
printf("\x1b[2J");
/* カーソルを任意位置へ移動するマクロ */
#define Locate(A,B) printf("\x1b[%d;%dH",(B),(A))

/* テキスト画面をクリアするマクロ */
#define Cls() printf("\x1b[2J")
そして、NTのコマンドプロンプトで動かない罠。
694デフォルトの名無しさん:02/11/05 11:40
# include <stdio.h>
#define MAXLINE 80
int main(int argc, char *argv[])
{
FILE *fi;
char linebuf[MAXLINE];
int moji;
if (argc !=2)
{
fprintf(stderr, "引数の数ちげーよ 使用方;tfshow ファイル名\n");
return;
}
if (( fi = fopen(argv[1], "rb")) == NULL) {
fprintf(stderr,"cannot open input file.\n");
exit(1);
}

while((moji = fgetc(fi)) != -1) {
printf("%c" ,moji );
}
fclose(fi);
return 0;
}

上記のプログラムを改良してテキストファイルの文字数を表示するプログラムをつくれ。

fgetc(fi)を用いろ。


>>694
人に頼みごとをするときは、口の利き方に気をつけろよ。
お願いしますの一言もいえないやつは、カエレ!
696694:02/11/05 11:48
すまんかった。

問題をそのままこぴぺしてしまった。
私はまだまだ未熟者なのでよろしくお願いします。
>>696
改行とかタブも数えるの?
だったら、

> int moji;
↑これを
int moji, count;
↑こうする。


>while((moji = fgetc(fi)) != -1) {
>printf("%c" ,moji );
>}

↑これを

count = 0;
while((moji = fgetc(fi)) != -1) {
printf("%c" ,moji );
++count;
}
printf("文字数=%d\n", count);

↑こうする。

698694:02/11/05 12:45
なるほど。わかりました。何とかあしたの提出期限に間に合いそうです。
>>697さんありがとうございました。
これからも頑張って勉強します。
699シン:02/11/05 14:32
C言語で次の条件で電卓の機能を持つようにプログラミングしたいのですが、
教えて頂けませんか?お願いします。

KEY→0,1,2,3,4,5,6,7,8,9,+,-,*,/,C,E,=

数値は整数型で左優先。
(*や/は優先しない。括弧は使わない。)

全く解らず手が付けられないで、
どこまで判ったか書くことが出来ず申し訳ございませんm(_ _)m
プログラムのコンパイルの仕方もわからないの?
こんなんかなあ。
#include <stdio.h>
#include <ctype.h>
int number(void) {
char buf[100];
int c, i=0;
while ((c = getchar()) != EOF && isspace(c));
ungetc(c, stdin);
while ((c = getchar()) != EOF && isdigit(c))
buf[i++] = c;
ungetc(c, stdin);
buf[i] = '\0';
sscanf(buf, "%d", &i);
return i;
}
void main()
{
int n=number(), c;

while ((c = getchar()) != EOF) {
if (c == '+') n += number();
else if (c == '-') n -= number();
else if (c == '*') n *= number();
else if (c == '/') n /= number();
else if (c == '=') {printf("%d\n", n); n=number();}
}
}
>>699
これってWindowsについてくる電卓みたいに、GUIで作るってこと?
703デフォルトの名無しさん:02/11/05 15:07
>>700誰に言ってるの?
>>699
与えられた文字列を解析して語句に分解、処理を繰り返せばいいのです。
たぶん、この課題はコンパイラの超基本をやろうとしていると思います。
仕様を見ると、与えられる文字列は大雑把に言って
与えられた文字列=数字句 演算子句 数字句 演算子句・・・・・
で分解できます。優先順位などは無いとのことなので、左から一つづつ文字
読み、処理しましょう。
704シン:02/11/05 15:33
どうもありがとうございますm(_ _)m
C言語と言う事と、先ほどの条件以外は出されてないので、
それ以外の事はちょっとわからないのですが。
これでやってみます。
コンパイルは自分のPCにC言語が出来るソフトが入ってれば出来るんですよね?
上記のプログラムを改良してテキストファイルの文字数を表示するプログラムをつくれ。

fgetc(fi)を用いろ。

出来ない奴は、氏ね!!
706シン:02/11/05 17:40
出来ないです・・・・。
707デフォルトの名無しさん:02/11/05 17:55
>>706
とりあえずOSとかコンパイラとか環境かけや。
>703
>>700誰に言ってるの?
なにもワカランと>>699が言ってるから聞いてみた。
>>704のレスをみると、ホントに分からないっぽ。
709シン:02/11/05 21:55
OSはWinMEでMS-DOS プロンプトを使ってます。
コンパイラ名も
bccならファイル名をhoge.cとしないといかん。
【C言語課題(ポインタ)】

要素数Nの配列を3個用意し、2つのN次元ベクトルを
キーボードから読み込み、それらの和をもう1つの
配列に格納し、最後に出力するプログラムを、以下
の方法で作成せよ。

要素数をキーボードから入力し、必要な大きさの
メモリを確保して計算せよ。


という問題で、メモリ確保のためmalloc関数を
使いたいのですが、どうすればよいのでしょうか。
初歩的な質問ですみません。
>>711
double **p;

p = (double**)malloc(sizeof(double*)*m);
for (i = 0; i < m; i++)
p[i] = (double*)malloc(sizeof(double)*n);
>>711
http://pc3.2ch.net/test/read.cgi/tech/1036150495/l50
誰からも教えてもらえなかったら↑こっちで質問しな。
>>712
問題ちらっと眺めただけで読んでないだろ
715711:02/11/05 23:19
>>713 ありがとうございます。もうちょっとまってみます。
ちなみにmalloc無しでは
こんなプログラムを書きました。

#include <stdio.h>
#define M 100
void main(void)
{
int i,N;
int v1[M],v2[M],v3[M];
int *p1,*p2,*p3;
printf("Input N(<=%d)\n",M);
scanf("%d", &N);

p1=v1 , p2=v2 , p3=v3;
for(i=0;i<N;i++)scanf("%d",(p1+i));
for(i=0;i<N;i++)scanf("%d",(p2+i));
for(i=0;i<N;i++)*(p3+i)=*(p1+i)+*(p2+i);
for(i=0;i<N;i++)printf("%d ",*(p3+i));
printf("\n");
}
716デフォルトの名無しさん:02/11/05 23:25
void main() {
int i, N;
int *v1, *v2, *v3;
printf("Input N\n",M);
scanf("%d", &N);
v1 = (int*) malloc(N*sizeof(int));
...
717711:02/11/05 23:35
>>716
ありがとうございました
718シン:02/11/06 09:11
701番のプログラムをコンパイルしたらエラーが出てしまいました。

ファイル名:In function 'main'
ファイル名 16 :warning return] type of 'main' is not 'int'

と言うエラーです。

どうやって修正すればいいのでしょうか?

コンパイラはcygwinってやつです。

よろしくお願いします。
>>718
出力にある通りですからちゃんと読みましょうね。
それとも英語が読めませんか?
これは中学英語程度の英文ですから頑張って読む努力をしましょうね?
それともあなたはリア消ですか?それなら仕方ありませんね。

'main' 関数中
16: 警告: 'main' の返り値が 'int' ではありません

はい、1行目は main という関数の中に問題があるということを示していますね。
そして2行目は、まずその問題個所がファイル中の16行目にある、ということ、
次に、それが警告であって決してエラーではないということ、最後に、当該の
問題点についての詳細を示しています。

つまり(16行目にある)
void main

int main
に変えて、main 関数の最後に
return 0;
を加えればいいわけですね!
分かったかな?
720シン:02/11/06 10:12
基本的な事まで丁寧に教えてくれてありがとうございますm(_ _)m
修正して走らせて、プログラムに問題ない事がわかりました。
ただ電卓の機能を試そうと、数値を入力してもモニタに何も表示されないで、
comnand not foundと表示されるだけなんです。
条件は左優先だけなので、
25*31だったら
"2"→"5"→"*"→"3"→"1"→"="という手順でやっていくのですが。
辞書引けよ。

comnand not found
コマンドが、見つかりません。(暗にタイプミスを指摘するエラーメッセージ)
>>720
>comnand not foundと表示されるだけなんです。

それって、 プログラムのミスじゃなくて、実行ファイルができてないとか、
もしくは実行されてないとか、そういう問題だと思う。
cygwinの使い方調べるところからはじめたほうがいいよ。
>>721
>>722
おそらく彼は
gcc hoge.c
とすればプログラムが走ると勘違いしているようです。
そして、コマンドプロンプトに直接
23*31
と入力して「command not foundと表示されるだけ」と
言っている訳ですね。
つまり彼は、残念ながらあなた方が想像したもよりはるかに
DQNということです。
>gcc hoge.c
>./a.out
23*31=
713
725シン:02/11/06 11:46
まずは
gcc ソースファイル名 -o 実行ファイル名 
で走らせてます。
これで走れば、とりあえずプログラムには問題が無いと判断し、
そこでなんらかの入力待ちの状態になるはずなのですが。
今回ならば数値ですね。
gcc ソースファイル名 -o 実行ファイル名 
で実行ファイルが作られるだけ。
そのあとに
実行ファイル
と入れないと実行されない。
蛇足だが、本当に実行したいなら、
./実行ファイル名
だ。

#どうせカレントにPATHとおしてねえんだろ?
728シン:02/11/06 12:31
あ、それを忘れてました・・・。すみませんm(_ _)m
729教えて厨:02/11/06 13:01
x^2+y^2=z^2
1<={x,y,x}<64
を満足する整数の組み合わせ{x,y,z}を全て求めよ。
ただし、{x',y',z'}=整数×{x,y,z}となる組合せ
(例:{6,8,10}=2×{3,4,5})は不要

ねらーのみなさま、Cで組んでくださいな。
730デフォルトの名無しさん:02/11/06 13:04
u=x+y
v=x*y
で置き換えて計算するんだったかな?
731シン:02/11/06 13:12
なるほど、
25*31をやりたいなら、25 enter * enter 31 enter = enter (結果)
とやればいいわけですか。
"2"→"5"→"*"→"3"→"1"→"="
というように一つずつ入力するようにするにはどうすればいいのですか?
それとCとEについてですが、例えばCならCと入力してenterを押せば
0が出力されるようにしたいのですが。
732デフォルトの名無しさん:02/11/06 13:18
#include <stdio.h>
void main()
{
int x, y, z;
for (x=1; x<64; x++)
for (y=x; y<64; y++)
for (z=y; z<64; z++)
if (x*x + y*y == z*z && (y % x || z % x))
printf("(%d,%d,%d)\n", x, y, z);
}
733デフォルトの名無しさん:02/11/06 13:24
>>732
それじゃ弾けんぞ。
#include <stdio.h>
int check(int x, int y, int z) {
int i;
for (i=2; i<=x; i++)
if (x % i == 0 && y % i == 0 && z % i == 0)
return 0;
return 1;
}
void main() {
int x, y, z;
for (x=1; x<64; x++)
for (y=x; y<64; y++)
for (z=y; z<64; z++)
if (x*x + y*y == z*z && check(x, y, z))
printf("(%d,%d,%d)\n", x, y, z);
}

(3,4,5)
(5,12,13)
(7,24,25)
(8,15,17)
(9,40,41)
(11,60,61)
(12,35,37)
(20,21,29)
(28,45,53)
734デフォルトの名無しさん:02/11/06 13:26
>>731
> 25*31をやりたいなら、25 enter * enter 31 enter = enter (結果)

いちいちEnter押さないで
25*31=[Enter]
でいいだろ。
735教えて厨:02/11/06 13:27
>>732
>>732
それだと、
>ただし、{x',y',z'}=整数×{x,y,z}となる組合せ
も表示されるよ。
737シン:02/11/06 13:35
>いちいちEnter押さないで
>25*31=[Enter]
>でいいだろ。
自分もそう思うのですが、
課題がそうなってるんですよ・・・。
738教えて厨:02/11/06 13:35
>>733
>>736
>>737
仕様くらいしっかり説明しろよ。
Eの時はどう動作すんの?
740シン:02/11/06 13:56
>739
はい。
Eは入力のみclearと言うことですが、
ちゃんと適用されてないような気がします。
741デフォルトの名無しさん:02/11/06 16:33
それは
10
*
20
E
30
=
300
ということか?
742デフォルトの名無しさん:02/11/06 16:45
#include <stdio.h>
#include <math.h>
int check(int x, int y, int z) {
int i;
for (i=2; i<=x; i++)
if (x % i == 0 && y % i == 0 && z % i == 0)
return 0;
return 1;
}
void main() {
int x, y;
for (x=1; x<64; x++)
for (y=x; y<64; y++) {
int z = (int) sqrt(x*x+y*y);
if (z >= 64) break;
if (x*x + y*y == z*z && check(x, y, z))
printf("(%d,%d,%d)\n", x, y, z);
}
}
743デフォルトの名無しさん:02/11/06 16:52
宿題じゃなくて卒論なんだけど
手伝ってくんないかな。。
744デフォルトの名無しさん:02/11/06 16:54
#include <stdio.h>
#include <ctype.h>
int number(void) {
char buf[100];
int c, i;

do {
while ((c = getchar()) != EOF && isspace(c));
ungetc(c, stdin);
i=0;
while ((c = getchar()) != EOF && isdigit(c))
buf[i++] = c;
ungetc(c, stdin);
while ((c = getchar()) != EOF && isspace(c));
} while (c == 'E');
ungetc(c, stdin);
buf[i] = '\0';
sscanf(buf, "%d", &i);
return i;
}
745デフォルトの名無しさん:02/11/06 16:54
void main()
{
int n, c;
while ((c = getchar()) != EOF) {
if (isdigit(c)) {ungetc(c, stdin); n = number();}
else if (c == '+') n += number();
else if (c == '-') n -= number();
else if (c == '*') n *= number();
else if (c == '/') n /= number();
else if (c == '=') printf("%d\n", n);
else if (c == 'C') n = 0;
}
}
746シン:02/11/06 22:48
10
*
20
E
30
=
200
と表示されます。

表示されないよ。
300になるよ。
748747:02/11/06 23:25
ungetc()なんて始めて使った。
749シン:02/11/06 23:42
int number(void) {
char buf[100];
int c, i=0;
while ((c = getchar()) != EOF && isspace(c));
ungetc(c, stdin);
while ((c = getchar()) != EOF && isdigit(c))
buf[i++] = c;
ungetc(c, stdin);
buf[i] = '\0';
sscanf(buf, "%d", &i);
return i;
}
int main()
{
int n=number(), c;

while ((c = getchar()) != EOF) {
if (c == '+') n += number();
else if (c == '-') n -= number();
else if (c == '*') n *= number();
else if (c == '/') n /= number();
else if (c == '=') {printf("%d\n", n); n=number();}
}
return 0;
}

750シン:02/11/06 23:42
上のプログラムだと
10
*
20
E
30
=
200
と表示されるんです。
正常なのでしょうか?
Cを入れても0は表示されません。
>>744-745
は、うまく行ったと思ったけど。
752751:02/11/06 23:43
Eだけだけど
ちょっと日本語変
>>743
テーマ何YO?
754シン:02/11/07 00:05
744-745
でコンパイルしたら
警告文が出まして。

ファイル名:In function 'main';
ファイル名 22:warning return type of 'main' is not 'int'

このようにです。
718-754の間を永久に回りつづけるスレはここですか?
int main(){
...
return 0;
}
にして
>>718の記憶は15時間もちませんですた。
758シン:02/11/07 11:41
質問をする時はこの名前でするスレはここですか?
そうです。
760デフォルトの名無しさん:02/11/07 12:35
ここで質問することではなさそうですが、他の板で宿題聞きけないので、質問内容に近そうなここで聞かせてもらいます。
ネットワークプログラミングの質問です。
[java]

サーバとクライアントの勉強をしていて、クライアントはtelnetを使用しています。

ここまでにhtmlファイルの内容をクライアントに送信することを学びました。
以下がそれです。
BufferedReader in1 = new BufferedReader(new FileReader(filename));
String line1;
while((line1=in1.readLine())!=null){
to_client.println(line1);

filenameはhtmlファイル名。

課題内容は、クライアントからhtmlファイル名を指定でき、そのファイルがあればサーバー側がクライアントにhtmlファイルの内容を返すものを作ることです。
それで、そのhtmlファイルがなければ
to_client.print("HTTP/1.0 404\r\n");
to_client.print("\r\n");
とします。これはおそらくelse文に書くのでしょう。
そしてif文の条件でhtmlファイルを探し、ファイルがあれば内容を表示するのだと思います。

わからないことは、ファイルを探す方法です。
どのようにファイルを探すのかわかれば、後はif,elseで解けると思うのですが、調べてもわからないのでその方法を教えてください。
それとも全く勘違いしているでしょうか?
File file = new File("要求");

if(file.exists()) {
//存在したときの処理。
} else {
//存在しないときの処理。
}
762761:02/11/07 12:42
>>761

即答感謝します。
要求のところには、filenameと書けばいいのでしょうか?
763761:02/11/07 12:51
そうだね。filenameだね。ついコード読まずに答えてしもうた。

//あと、>>762の名前欄には、どのくらいの勢いで突っ込んだらいいんだろう(w
「シン」じゃないと突っ込んでみたら?
もう15時間たったのか?
C言語のプログラムでA以上B以下の素数を表示させるって問題がわかりません。
よろしくお願いします。
>>766
http://pc3.2ch.net/test/read.cgi/tech/1036150495/l50
教えてもらえなかったら、こっちにきてみそ。
int isprime(int n) {
int i;
for (i=2; i*i<=n; i++)
if (n % i == 0) return 0;
return 1;
}
void main() {
int A, B, i;
scanf("%d %d", &A, &B);
for (i=A; i<=B; i++)
if (isprime(i)) printf("%d\n", i);
}
769デフォルトの名無しさん:02/11/07 22:24
あげ
770両津勘吉:02/11/08 16:20
#include <stdio.h>
#include <string.h>
#define TINTERVAL 4500000
int main()
{
int i,j, k;
char *a = "This is a test";
  char *b;
  printf("%s\n", a);
for (k=0; k < 5; k++) {
/* forward */
b =a; /* point to first character */
for (i=0; i <=strlen(a); i++){
if (i > 0) {
/* 必要なだけスペース出力 */
for (j = 0; j < i; j++)
printf(" ");
}
if (i < strlen(a)) {
printf("%c\r", *b);
}
else {
printf("\r");
}
fflush(stdout);
b++;
/* sleep(1); 少しポーズする */
771両津勘吉@つずきです:02/11/08 16:21
for (j=0; j < TINTERNAL; j++) {
}
}
      printf("\n");
return 0;
}

大ピンチになっています。上のプログラムを改良して両津勘吉という名前を
一文字づつ表示するプログラムはなんとかできました。
でもそこは提出しなくていいらしくて、今度はそれを改良して、両津勘吉という文字を、
一文字づつ左に表示して、左端についたら次に右に一文字づつ
表示するプログラムを作りたいのです。

どなたか暇な方がいたらよろしくお願いします。
772両津勘吉出力例:02/11/08 16:22
1        吉
2      勘
3    津
4  両
5    津 
6      勘
7        吉

#include <stdio.h>
int main() {
char str[] = "両津勘吉";
char *s, *a, *b;
b = str+strlen(str)-1;
a = b-1;
for (; a != str; a-=2, b-=2) {
for(s=str; *s; s++)
if (s == a || s == b) putchar(*s);
else putchar(' ');
putchar('\n');
}
for (a=str, b=a+1; b <= str+strlen(str)-1; a+=2, b+=2) {
for (s=str; *s; s++)
if (s == a || s == b) putchar(*s);
else putchar(' ');
putchar('\n');
}
return 0;
}
774デフォルトの名無しさん:02/11/08 17:09
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "両津勘吉", *s, *a, *b;
int i = 2;
a = b = str+strlen(str)-2;
do {
if (a == str) i = -i;
for(s = str; *s; s++)
if (s == a || s == a+1) putchar(*s);
else putchar(' ');
putchar('\n');
a -= i;
} while (a <= b);
return 0;
}
775両津:02/11/08 17:46
>>774 >>773

大変助かりました。これからも自分でできるように頑張って勉強します。

ありがとうございます。

776デフォルトの名無しさん:02/11/08 23:39
C言語です。
授業でパーミュテーションのプログラムを学びました。

一応説明を。
説明:[A][B][C]から2語選んで語句を作る場合3×2通りの方法があります。
   このことを記号P(パーミネーション)を使って
   3P2と書きます。

で、これはいいのですが、これをコンビネーションできるように変えろという
宿題がでました。

説明:[A][B][C]から2語選んで組を作る場合3通りの方法があります。
このことを記号C(コンビネーション)を使って3C2と書きます。

その変える場所とは
for(i=0;i<n;i++)の部分を多少変え
permをconbi(5,m,何か)の形にするらしいです。
コンビネーションの意味すら忘れていて、かなりピンチです。
どうか助けてください。
次にプログラムを書きます。
777デフォルトの名無しさん:02/11/08 23:40
#include <stdio.h>

int a[5]={1,2,3,5,7};
int s[5];
int p[5];
int c=0;

void perm(int n,int m){
int i;
if(c==m){
for(i=0;i<m;i++)
printf("%d ",p[i]);
printf("\n");
}
for(i=0;i<n;i++){
if(s[i]==0){
s[i]=1;
p[c]=a[i];
c++;
perm(n,m);
c--;
p[c]=0;
s[i]=0;
}
}
}
778デフォルトの名無しさん:02/11/08 23:40
int main(void){
int m;

printf("select ? -> ");
scanf("%d",&m);
perm(5,m);
return 0;
}

これで終わりです。
>>773-774
殺伐としていてなかなか良いね。
>>777-778
ちなみに、それ動く?
781デフォルトの名無しさん:02/11/09 00:15
>>780

はい。
2を入力したときの実行結果です。

select ? -> 2
1 2
1 3
1 5
1 7
2 1
2 3
2 5
2 7
3 1
3 2
3 5
(以下略)

このように出力されます。
>>781
s[5]は初期化しなくても大丈夫か。こういう風に定義したものって必ず
中に0が入ってるんだっけ?
>>782

そうです。必ず0が入るので、大丈夫です。
それも今日習いました。
グローバル変数は0で初期化される。
785:02/11/09 00:45
久々に書き込んでみようっと。
>>776-778
これ、先生がくれたソース? かなり汚いよね・・・。
あまり教育上宜しくない気も・・・。

それはともかく、まず解読しないとね。変数の意味は大丈夫かな。

int a[5]={1,2,3,5,7}; ←これは5枚のカードの内容を表してる

int s[5];
s[i]はi番目のカードが既に選ばれたかどうかを表している。
1だったら既に選ばれた事をあらわしてるのね。

int p[5];
p[i]はi番目に選んだカードの内容を表してるの。

int c = 0;
今までに選んだカードの枚数
786:02/11/09 00:46
で、一緒にメイン関数から追ってってみよう。
まず、mを入力してもらってそれを読み取ってくるよね。

で、p(5,m)っていうのは、5枚のカードのうちからm枚選べっていう気分。
このときに、cには0が入ってるよね。まだ一枚目も選んでないからね。
s[5]には全部0が入ってることを頭においておいて。

p(int n, int m)の中では全ての順列を試したいわけね。
だから、まず5枚のうちから1枚選ぶ。
これが
for(i=0;i<n;i++){
の部分。この場合a[i]を1枚目とするのね。ここでは、s[i]は必ず0だからifは気にしないで。

まずi = 0 のとき、一枚目をa[0]とする。ってことでp[c]に記憶するのね。
じゃあ、一枚選んだからcに1を足して。a[0]は選んじゃったからそのマークとしてs[i]に1を。
では、1枚目をa[0]としたときの全ての並べ方をあらわそうってことで、p(n,m)の中に入って
いくわけね。

で、p(n,m)の先頭に。c==mのときは、既に指定した枚数分選んだことになるから、選んだ内容を表示
して戻るの。戻った場合の処理はまた後で書くね。
787:02/11/09 00:46
で、2枚目をどれにするかをまた、for(i=0;i<n;i++){のところで決めてるの。
でも、1枚目と同じの選んではいけないから、if文でチェックする。s[i]が1だったらそれは選べな
いから飛ばすの。で、1枚目、2枚目と決めた場合の全ての並び方・・・ってことでまたp(n,m)を
呼ぶのね。

で、戻ってきたら・・・。m=2の場合、2枚目決めてp(n,m)の中に入るとc==mで戻ってくるよね。
このとき、1枚目、2枚目がこれの時の並べ方は全部選んだ。よし、次は2枚目を変えた場合
の並べ方を決めよう。ってなるの。だから2枚目を選んだことをキャンセルしてc--して、p[c]=0,
s[i] = 0とするの。で、順に全部のを表して行く・・・。

・・・って、文字で説明しようとしたことを凄く後悔してたりしてます。
ここまででよくわからないことあったらきいてね。
788:02/11/09 00:52
んで・・・、コンビネーションの場合だけど。
まず、コンビネーションは組み合わせね。
だから、
1,2,5も2,1,5も5,1,2も全て同じものと考えるの。
だから、>>781のように並び方を全部書き出すことはないのね。

で、どう改造すればいいか。考え方としては、
a[0]からa[4]まで順に選んでいく形にするの。

つまり、一枚目にa[1]をえらんだら、2枚目にはa[2]からa[4]
の中で選ぶ。2枚目をa[3]を選んだら、3枚目はa[4]以外ありえない。
という風にね。

ということは、conbi(5,m,何か)の何かには、ここで選んだカード
は何番目のカードかを渡すのね。
で、if(s[i]==0){の部分を何かに変えるわけね。

ここからは、自分で少し考えてみてね。
789:02/11/09 00:53
って説明してるうちに、いつのまにかカードになってたけど、
カードを選ぶって問題だってことにしてください・・・
>>785-789

できたーーーーーーーーーーーーーーーーーー!
ありがとうございました。これで熟睡できます。
コンビネーションは
combination だと思われ
s[5]の初期化はstaticでも付けない限り保証されないよ。
ひでぇ教師だな。
(゚Д゚)ハァ?
>>792
グローバルスコープの変数は保証される。
staticつけないと0初期化が保証されないのは、
ローカルスコープの変数だけ。
ageとこう。
if(BOOL)
if(!BOOL) or if(!(BOOL))
でいいじゃないか!
宿題手伝ってください(*_*)
まだc言語に足をつっこんだばかりの初心者です。

p乗の値をもとめるのにpowを用いないアルゴリズムが優れている点を述べよ
っていう問題なんですけど、調べてもよくわからなくて…。
お願いします。。。_(._.)_
>powを用いないアルゴリズム
って具体的に何さ。

比較するなら、
>powのアルゴリズム
も問題になってくると思うが、
これって処理系依存でわ?
pの2乗をするならpow(p,2)よりn*nのほうがよいっていう、
その理由を答えるっていう問題なんですけれども。

まずpowのしくみ自体がわからなくて。powがどんな計算で値を求めているのかがわかれ
ば比較できるかなと思っているのですが。
800もまずにパピコ:02/11/11 01:22
>>799
さっぱりわからん。「速い」くらいしか思いつかん。
先生は「精度が高い」とかの回答を期待してるのかもしれんけど、制約条件が少なすぎて比較できなさそう。
おそらくはそういった回答でよいと思っているのですが、理由を示さなければならなくて。
なぜ速いかっていうのを述べる際に、powの計算のしくみがわからなくて…。
しらべてもどこにも見当たらなく…。
知っている方いらっしゃったらお願いします。。。
>799
たとえば、ここのpowには、
http://nemesis.sourceforge.net/browse/mod/venimpl/c/math/pow.c.html
197: else if(y==two)
198: return(x*x);
199: else if(y==negone)
200: return(one/x);
こういう処理も入っていたりするんだが。
すみません。。。まだC始めたばかりで見てもよくわからくて…(T_T)
804デフォルトの名無しさん:02/11/11 02:24
JAVAで電卓作っているんですが、四則演算するとこ教えてください。
加算ならnumber1 + number2 = resultみたいにしたいです
なにぶん素人なので知恵を授けてください
805JPS ◆M0LaMzf5rY :02/11/11 02:29
>>803
マルチでつか?
806デフォルトの名無しさん:02/11/11 02:31
括弧とかsupportする電卓じゃないよな.だったら,

数 演算子 数

ってきたらそれをすぐ計算して結果変数に入れとけばいい名じゃないか.

そのあとまた

演算子 数

ってきたらまた計算して結果変数を上書きする.

=

ってきたらそれを打ち出す.
>>804
変数も扱えるってことかい?
808デフォルトの名無しさん:02/11/11 02:55
こんなかんじの電卓に機能をもたせたいです。+-×÷だけで小数点、変数いりません
private Label label;
private TextField textField;
private Button button[];
private Panel panel1,panel2;

public void init(){
panel1 = new Panel();
panel1.setLayout(new BorderLayout(2, 2));
panel2 = new Panel();
panel2.setLayout(new GridLayout(4, 4, 2, 2));

label = new Label();
label.setText("Calculator");
panel1.add(label, BorderLayout.CENTER);

textField = new TextField(40);
panel1.add(textField, BorderLayout.SOUTH);

button = new Button[17];

button[1] = new Button("7");
button[1].addActionListener(this);
panel2.add(button[1]);
button[2] = new Button("8");
button[2].addActionListener(this);
panel2.add(button[2]);
button[3] = new Button("9");
button[3].addActionListener(this);
panel2.add(button[3]);
以下長いので省略
>>808
電卓のロジック自体がわからないのか、
ボタンが押されたことをロジック部分に伝える方法がわからないのか
810takeru@もうだめぽ:02/11/11 12:47
#include <stdio.h>
#include <string.h>

#define TINTERVAL 4500000
int main()
{
int i,j, k;
char *a = "yaamada takeru";
char *b;

printf("%s\n", a);
for (k=0; k < 5; k++) {
b =a;
for (i=0; i <=strlen(a); i++){
if (i > 0) {
/* 必要なだけスペース出力*/
for (j = 0; j < i; j++)
printf(" ");
}
if (i < strlen(a)) {
printf("%c\r", *b);
}
else {
printf("\r");
}
fflush(stdout);
b++;
811takeru@続き:02/11/11 12:47
/* sleep(1); 少しポーズする */
for (j=0; j < TINTERVAL; j++) {
}
}
/*行を消去 (一行文のスペース出力) */
printf(" \r");
}
printf("\n");
return 0;
}

上のプログラムを改良して自分の名前を一文字ずつ左に表示して左端についたら
逆に右に一文字ずつ表示するプログラムをつくれ。
ぼくにはこれ以上無理です。どなたかお願いします。
812takeru:02/11/11 12:54
ありゃ・・aが一個多い・・・・・僕は 山田たける どす。

出力例

1 y
2 a
3 m
4 a
5 d
6 a
7
8 t
9 a
10 k
11 e
12 r
13 u
14 r
15 e
16 k
17 a
18 t
.
.
.
.
.
.こんな感じです。お願い致します。
813takeru:02/11/11 12:59
あ・・・・・・

>>812は間違いです・・気にしないでください。
なんでそうなるねん
815takeru:02/11/11 14:18
・・・・・・・

すっかり同じの提出するとまずいっす。
>>815
名前違うからいいじゃん。変数とかインデントとか適当に変えろ。
でも素直でよろしい。こないだの奴は「いろんなコーディング例もみたいから」とか
いいわけしてやがったからな。
817takeru:02/11/11 15:29
両津かんきちのやつがうまくいかないな・・・
ウインドウずじゃないみたい・・
なんかちがうみたい・・・・違う学校のやつっぽいな・・・
アツカマシイですが
やはりだれか僕のの改良版でよろしくおねがいです。
本当に自分でできなくてごめんなさい。

#include <stdio.h>
#include <string.h>
#define TINTERVAL 500000

int main( int argc, char *argv[])
{
int i, line;
char *cp;

if( argc != 2 ) return -1;
puts(argv[1]);
cp = argv[1]+strlen(argv[1]);

line = 1;
do{
cp--;
usleep(TINTERVAL);
printf( "%d ", line++ );
for( i = 0; i < cp-argv[1]; i++ ) printf( " " );
printf( "%c\n", *cp );
}while( cp != argv[1] );

for( cp++; *cp; cp++ ){
usleep(TINTERVAL);
printf( "%d ", line++ );
for( i = 0; i < cp-argv[1]; i++ ) printf( " " );
printf( "%c\n", *cp );
}
return 0;
}
#include <stdio.h>
#include <string.h>

#define TINTERVAL 4500000
int main()
{
int k;
char *a = "yaamada takeru";

printf("%s\n", a);
for (k=0; k < 5; k++) {
int i=0, j, n=1;
do {
/* 必要なだけスペース出力*/
for (j = 0; a[i] && a[j]; j++)
if (i == j) putchar(a[i]);
else putchar(' ');
if (!a[i]) { n = -1; i--; };
printf("\r");
fflush(stdout);
i += n;
} while (i >= 0);

/* sleep(1); 少しポーズする */
for (j=0; j < TINTERVAL; j++) {
}
/*行を消去 (一行文のスペース出力) */
printf(" \r");
}
printf("\n");
return 0;
}
820takeru:02/11/11 16:51

あしたの午後までなのでだれかおながいします。
>>818様ありがとうございます・・・しかしどうも主旨が勘違いなさってしまったようです。
僕の説明不足でしたすいません。
>>818様どうもありがとうございます。しかし、コンパイルできても、
a.outすると一文字目で止まってしますのです。
だれか解放がわかる方いたらよろしくです。

出力例


下に延びるのではなくそのばでこう表示されるものがほしいのです。
だれかお願いします。
821デフォルトの名無しさん:02/11/11 17:13
#include <stdio.h>
#include <string.h>
#define TINTERVAL 4500000
int main() {
int k;
char *a = "yaamada takeru";

printf("%s\n", a);
for (k=0; k < 5; k++) {
int i=0, j, n=1;
for (; i >= 0; i += n) {
if (!a[i]) { n = -1; i--; continue; }
/* 必要なだけスペース出力*/
for (j = 0; a[j]; j++)
if (i == j) putchar(a[i]);
else putchar(' ');
printf("\r");
fflush(stdout);
/* sleep(1); 少しポーズする */
for (j=0; j < TINTERVAL; j++) {
}
}

/*行を消去 (一行文のスペース出力) */
printf(" \r");
}
printf("\n");
return 0;
}
オリジナルのツールかゲームを作らないといけないのですが
何か簡単なのでオススメなのを教えてください。
823デフォルトの名無しさん:02/11/11 17:31
824818:02/11/11 17:32
2つの「printf( "%d ", line++ );」で"%d"の代わりに"\r%d"にすりゃいいんだけど、
それさえも考えつかないの? 正直向いてないと思うよ。
825takeru:02/11/11 18:30
>>821

命の恩人です。ありがとうございました。
826takeru:02/11/12 10:38
バイナリファイルを16進表示で出力するプロスラムつくりたいんですけどそうやるんですか??
それは基礎も基礎。一番初めに練習として適した問題。
それさえ自分でできないなら、本当にやめた方がいい。
828takeru:02/11/12 11:28
やめれないんです。すいません
829takeru:02/11/12 11:42
あ・・C言語です
830takeru:02/11/12 12:08
include <stdio.h>
#define FNAMELEN 25
void nltonull(char *string);
int main(void)
{
FILE *fi, *fo;
char source[FNAMELEN], dest[FNAMELEN];
char charbuf;
int readItems;


printf("読みだすファイル名を入力してね");
fgets(source, FNAMELEN, stdin);
nltonull(source);

printf("書き込み先のファイル名を書いてチョ");

fgets(dest,FNAMELEN, stdin);
nltonull(dest);

/*よみ出す元のファイルオープン*/
if ((fi = fopen(source, "rb")) == NULL){
fprintf(stderr, "cannot open input file.\n");
exit(-1);
}


プロスラム......
832takeru@:02/11/12 12:12
/*書き込み先のファイルオープン*/
if ((fo = fopen(dest, "wb")) == NULL){
fprintf(stderr, "cannot open output file.\n");
exit(-1);
}
/*バイナリファイルのコピー*/
while ((readItems = fread(&charbuf, 1, 1, fi)) != 0) {
fwrite(&charbuf, 1, readItems, fo);
}
fclose(fi);
fclose(fo);
return 0;
}
void nltonull(char *string)
{
if (string[strlen(string) - 1] == '\n')
string[strlen(string) - 1] = '\0';

}
833takeru:02/11/12 12:17
うえの829と831に続くプログラムを改良してコマンドライン引数としてバイナリファイルを
指定して、指定されたバイナリファイルの大きさを出力するプログラムを作成してください。
ls ーlででてくるおおきさと等しいことを確認せよ。
だれかおながいします。もうだめぽ。自分でできなくてすいません。
834デフォルトの名無しさん:02/11/12 12:19
15桁の整数ってunsigned longとかで表現可能でつか?
処理系による
たとえばbuf="235154"だったとして、
atoi(str)ってやると235154を返すよね?
これを前から一つずつ、だから2,次は3って返してくれる方法ってある?
837デフォルトの名無しさん:02/11/12 12:45
>>833
文変じゃねーか
わかりにくいぞ
も1回書きなおして
838デフォルトの名無しさん:02/11/12 12:46
>>836
わかりにくい
も1回書きなおして
>>838
おまえが日本語理解能力0なだけ。
も1回見直して
チョンだな
841836:02/11/12 12:48
>>838
わり。間違いだらけだった。

たとえばchar *buf="235154"だったとして、
atoi(buf)ってやると235154を返すよね?
これを前から一つずつ、だから2,次は3って返してくれる方法ってある?
>>836
何の事かよくわかんないけど、bufを先頭から参照すれば?
843838:02/11/12 12:51
配列にいれたいの?
char *buf="235154"
char num[6];
num[0]=2;
num[1]=3;
num[2]=5;

それともfor文とか使って実現したいの?
844836:02/11/12 12:51
>>842
関数である?
ポインタ演算つかって、一文字ずつatoiする方法がわからん。
>>836>>841
つーか質問の仕方良く考えれ。
>>836
日本語不自由ですか?
847838:02/11/12 12:52
int i=0;
while(buf[i])
{
 num[i]=atoi(buf[i]);
 i++;
}

みたいにか?
836は北の工作員
buf[i]-'0'
>>833

fseek(fp,0,SEEK_END);
size=ftell(fp);
>>836
わけわからん。
文面よく見直して、出直して来い。
852836:02/11/12 12:58
>>843
配列に入れたい。でも一桁目が添え字0にくるように。
853836:02/11/12 13:00
あ、だから、atoi使ったら、分割して処理できないから。
もぞれつの段階で処理すんのか?
854838:02/11/12 13:00
>>836

これで勘弁して

int main()
{
char *buf="235154";
char temp;
int num[6]={0};

int i=0;

for(i=0;i<6;i++){
temp=buf[i];
num[i]=atoi(&temp);
printf("%d\n",num[i]);
}
>>838
おまえバカだろ?
>>854
ギャグですか?
858836:02/11/12 13:07
盛りあがってきたな
>>854
下手したらcore
860エアーエッジ:02/11/12 13:09
素人なんですが,854ってどこが変なんでしょうか?
>>860
char temp;

temp=buf[i];
num[i]=atoi(&temp);
862836:02/11/12 13:14
肩がちがうんでつが・・・
(゚Д゚)ハァ?
15桁の文字を入力する方法ある?
15桁の数字だろ。
>>863
(゚Д゚)ハァ?
868エアーエッジ:02/11/12 13:17
strcpyすればいいのでつか?
>>867
(;´Д`)ハァハァ
870エアーエッジ:02/11/12 13:19
ちょっとくらい尻撫でたからってギャーギャー騒ぐなっての。
満員電車なんかどうよ。嫌でも接触するだろ。
乳くらいもませろよ。
ばっかじゃねーの。

おまえの論理。
今日はやけに kitty-guy が多いね
それとも 836=838=エアーエッジ か?
>>836
for(i=0;i<len;i++)num[i]=buf[i]-'0';

-- 終了 --
873>>870:02/11/12 13:22
>>870
ちょっとくらいはげてるからってきもいきもい騒ぐなっての。
掛布さんなんかどうよ。嫌でも拝見するだろ。
髪くらい生やさせろよ。
ばっかじゃねーの。

おまえのLONLEY・・・
874>:02/11/12 13:24
>>873
ワロタ
875takeru:02/11/12 16:17
うえの829と831に続くプログラムを改良して、
コマンドライン引数としてバイナリファイルを指定して、
指定されたバイナリファイルの大きさを出力するプログラムを作成してください。


>>837

これだけ書けば良かったみたいです。ls-lと比べるのは自分でできます。
どなたかお願いします。

876takeru:02/11/12 16:20
それともう一つ課題があって

バイナリファイルを16進表示で出力するプロスラムつくりたいんですけどそうやるんですか??
getchar()使え。
while ((c = getchar()) != EOF)
line++:
printf("%d\n", line);

while ((c = getchar()) != EOF)
printf("%x", c);
昔の7行スレにあったそれ。>>876
879takeru:02/11/12 16:30
>>878
それはどこにあるんですか?
ヒントは出ていたはずだが

// ファイルサイズ表示
#include <stdio.h>
int main(int argc,char *argv[])
{
FILE *fp;
fopen(argv[1],"rb");
fseek(fp,0,SEEK_END);
printf("size:%d\n",ftell(fp));
fclose(fp);
return 0;
}

// 16進表示
#include <stdio.h>
int main(int argc,char *argv[])
{
FILE *fp;
long size;
int i;
fopen(argv[1],"rb");
fseek(fp,0,SEEK_END);
size=ftell(fp);
fseek(fp,0,SEEK_SET);
for(i=0;i<size;i++)printf("%x",fgetc(fp));
fclose(fp);
return 0;
}
881yumi・・・・・:02/11/12 16:32
takeru発見・・・・おたがいやばいね
またおまえらか。
883たける:02/11/12 16:39
>>880
感謝致します。しかし
俺の実力だとそれの使用法がわからないであります。本当にすいません。
コマンドラインから実行するときに
実行ファイルの後にスペース空けて入力ファイル名

dump binfile
885たける:02/11/12 16:47
a.out ファイル名.c

をすると、セグメント例外と表示されてしまいます。本当にすいません。
886デフォルトの名無しさん:02/11/12 16:47
fp=fopen(argv[1],"rb");
スマン、訂正

fopen(argv[1],"rb");

fp=fopen(argv[1],"rb");

888takeru:02/11/12 16:51
16進数うまくい来ました。涙でそうです。
ありがとうございます
889takeru:02/11/12 16:57
>>887

両方ともできました。本当に自分が情けないです。
多謝致します。ありがとうございました。
890デフォルトの名無しさん:02/11/12 17:12
bmp画像をpgm画像に変換するのは、どうすればいいですか?
変換ソフトを探してきて使う。
15桁の自然数の減算を考える。自然数の各桁は配列に格納されることとし、1桁目が添え字0の要素となり、
15桁目が添え字14の要素となるように格納する。15桁の自然数xとyを受け付けて、x-yを計算し、結果を出力せよ。
x => y を仮定する。

学校の課題なんだけど、15桁の自然数をどう入力したらいいかわからん。
最初おれが考えたのはfgetsで文字列として自然数を入力して
atoiとか使って数字に変換しようとしたけど、わからなかった。

15桁の自然数の減算を考える。自然数の各桁は配列に格納されることとし、1桁目が添え字0の要素となり、
15桁目が添え字14の要素となるように格納する。15桁の自然数xとyを受け付けて、x-yを計算し、結果を出力せよ。
x => y を仮定する。

学校の課題なんだけど、15桁の自然数をどう入力したらいいかわからん。
最初おれが考えたのはfgetsで文字列として自然数を入力して
atoiとか使って数字に変換しようとしたけど、わからなかった。
お前ら考えろ。答えが分からなかったら氏ね!!
なんだ? => これ?imply か?
>>894
X大なりイコールYだと思われ
>>892
筆算しろ。
>>893
x[i] = buf[14-i] - '0'
898デフォルトの名無しさん:02/11/12 22:46
atoiして%10とって配列に入れてゆく
>>898
atoiの引数は?
900893:02/11/12 22:59
できた!こんな感じ。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char buf_x[256],buf_y[256],s;
int data_x[15],data_y[15],data[15]={0},i,j;


puts("二つの15桁の自然数を入力してください。(X > Y)");
printf("整数X :");
fgets(buf_x,sizeof(buf_x),stdin);

for(i=0,j=14;buf_x[i]!='\0';i++,j--)
{
s=buf_x[i];
data_x[j]=atoi(&s);
}

printf("整数Y :");
fgets(buf_y,sizeof(buf_y),stdin);

for(i=0,j=14;buf_y[i]!='\0';i++,j--)
{
s=buf_y[i];
data_y[j]=atoi(&s);
}
901893:02/11/12 22:59
/* 計算部分 */
for(i=0;i<15;i++)
{
if((data_x[i] - data_y[i]) < 0)
{
data_x[i+1]--;
data[i]=(10 + data_x[i]) - data_y[i];
}
else
data[i]=data_x[i] - data_y[i];
}

printf("X - Y = ");

for(i=14;i>=0;i--)
printf("%d",data[i]);

putchar('\n');

return(0);
}
これだとなんでうまくいかない?
#include <stdio.h>
#include <stdlib.h>

void get_data(char *buf,int *data)
{
int i,j;
char *s;

fgets(buf,sizeof(buf),stdin);

for(i=0,j=14;buf[i]!='\0';i++,j--)
{
*s=buf[i];
data[j]=atoi(s);
}
}

int main(void)
{
char buf_x[256],buf_y[256];
int data_x[15],data_y[15],data[15]={0},i,j,flag=0;


puts("二つの15桁の自然数を入力してください。(X > Y)");

printf("整数X :");
get_data(buf_x,data_x);

printf("整数Y :");
get_data(buf_y,data_y);
/* 計算部分 */
for(i=0;i<15;i++)
{
if((data_x[i] - data_y[i]) < 0)
{
data_x[i+1]--;
data[i]=(10 + data_x[i]) - data_y[i];
}
else
data[i]=data_x[i] - data_y[i];
}

printf("X - Y = ");

for(i=14;i>=0;i--)
{
if(data[i] != 0)
flag=1;

if(flag == 0)
putchar(' ');
else
printf("%d",data[i]);
}

putchar('\n');

return(0);
}
904デフォルトの名無しさん:02/11/12 23:40

*s=buf[i];
実は2進15桁という罠
カップヌードル15個?
907デフォルトの名無しさん:02/11/14 15:51
あげとこう。
908デフォルトの名無しさん:02/11/14 18:03
>>906日清
909sage:02/11/14 19:18
質問お願いします。

#include <stdio.h>
#include <math.h>

void main(void)
{
float test = 0;

test += (float)cos( 1.57080 );

printf("%f",test);
}
このような単純なものなのですが、
出力結果は0.000004、これはいいとして、
printf部分でブレークで見てみた場合、
-3.67321e-006
となっています。これはどうしてなのでしょうか?
おしえてください(TT
>質問お願いします。

浮動小数点って知ってますか? 教えて下さい。
>>909
なんで符号が変わるんだと思って試してみたら、
-0.000004 って出力された。
>>909
e-006ってのが何を意味してるか知ってる?
3.6って四捨五入すれば4だよね。
913909:02/11/14 20:46
>>910-912
ぐあ。ボクがかなりの知識不足だったようで…。
ご迷惑おかけしました。ありがとうございます。

914デフォルトの名無しさん:02/11/15 03:06
ここって会社の研修の宿題でもOKですか?
OKだけど・・、研修は自力でやらないと、後々大変じゃない?
916デフォルトの名無しさん:02/11/15 04:14
自力でがんばってみて
どうしても分からないところだけ聞いてみますっ
917デフォルトの名無しさん:02/11/15 08:52
構文解析の問題らしいんですがどぉーしても分かりません。
徹夜してもさっぱりです。誰か助けてくださいません?

「文法の数、文法、文字列を入力し、入力した文字列への過程を出力させよ。」

実行例
>文法の数を入力せよ
3
>文法を入力せよ
A->aB
B->aB
B->b
>文字列を入力せよ
aab
>過程を出力
A=>aB=>aaB=>aab
918デフォルトの名無しさん:02/11/15 08:57
ごめんなさい。C言語です。
>>915
学校の宿題だって、自分でやらないとあとあと
大変だとおもう。
卒業するまで、全部人に教えてもらうってわけには
いかないだろうし。
(「毎週聞きます」とか言ってた奴もいるけど)
>>文法を入力せよ
>A->aB
>B->aB
>B->b

BはいったいどっちのBを呼ぶのでしょうか?
>>917
aを入力したときに、
> A->aB
> B->aB
のうち、上の文法を選択しているようだけど、
先に入力した方を優先するってことでいいの?

あと入力される文法はLL(1)だけだと考えていいの?
922921:02/11/15 12:42
>>921
なんか質問が変だ。
1) 初期状態は一番最初に入力された文法の左辺ってことでいいの?
2) 入力される文法はLL(1)でいいの?
に訂正。
923デフォルトの名無しさん:02/11/15 13:28
すごく説明不足でした。すみません。
初期状態は一番最初に入力された文法の左辺です。
入力される文法もLL(1)です。
初期状態(実行例ではA)から入力した文字列(実行例ではaab)までの状態遷移を出力させるってことです。
>>919
一般教養とかで単位取るだけが目的ならできなくても大丈夫だろう。
>>923
で、どこまでわかって、どこからわからないの?
926デフォルトの名無しさん:02/11/15 14:10
文法やら文字列やらを配列にぶち込みましたが
肝心の状態遷移ができません。
あーあと1時間で提出だー
927921:02/11/15 15:13
作ってみたけど、急いだんでエラー処理ガタガタ。もう間にあわんカナ。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
  char current_state;
  char input;
  char next_state;
} Rule;
Rule* rules;
int rule_count;
char buffer[256];
char history[256];
int main()
{
  int i, j;
  char current_state;

  puts(">文法の数を入力せよ");
  fgets(buffer, sizeof(buffer), stdin);
  sscanf(buffer, "%d", &rule_count);
  rules = malloc(sizeof(Rule) * rule_count);
  puts(">文法を入力せよ");
  for (i = 0; i < rule_count; i++) {
    fgets(buffer, sizeof(buffer), stdin);
    /* A->aB */
    rules[i].current_state = buffer[0];
    rules[i].input = buffer[3];
    rules[i].next_state = buffer[4]; /* if B->b then '\n' */
  }
  puts(">文字列を入力せよ");
  fgets(buffer, sizeof(buffer), stdin);
928921:02/11/15 15:14
  puts(">過程を出力");
  i = 0;
  history[0] = '\0';
  current_state = rules[0].current_state;
  printf("%c", current_state);
  while (buffer[i] != '\n') {
    for (j = 0; j < rule_count; j++) {
      if (current_state == rules[j].current_state && buffer[i] == rules[j].input) {
        history[i] = rules[j].input; history[i + 1] = '\0';
        if (rules[j].next_state == '\n') {
          printf("=>%s", history);
        } else {
          printf("=>%s%c", history, rules[j].next_state);
        }
        current_state = rules[i].next_state;
        break;
      }
    }
    i++;
  }
  return 0;
}
929921:02/11/15 15:29
バグってた
×current_state = rules[i].next_state;
○current_state = rules[j].next_state;
930:02/11/15 18:36
ハッシュ法(チェイン法)のプログラムを作っています。
問題内容は、「ハッシュ関数を利用して,人の姓(last name)をキー
にして姓名(first nameも含む)を表に格納するプログラムを書け.
必要に応じて上の関数を書き直してよい.ハッシュ値の計算が正しく
行われて,正しい位置にデータが格納されていることが確認できるよ
うに表示させること.」です。
下のようにプログラムを作成したのですが文字列がうまく読み込めな
いようです。正しく結果が出るように直してくれませんか?

931:02/11/15 18:39
グログラム
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include <string.h>
/* ハッシュ表の定義*/
#define BUCKET_SIZE 13 /* ハッシュ表の大きさ*/
typedef char KEY;
typedef char DATA;

typedef struct cell{
KEY key[20];
DATA data[20];
struct cell *next;
}CELL;

CELL *table[BUCKET_SIZE];
/*----------------------------------------
処理: ハッシュ表を初期化する
引数: なし
戻り値: なし
----------------------------------------*/
void init()
{
int i;
for(i = 0;i < BUCKET_SIZE;i++)
table[i]=NULL;
}



932:02/11/15 18:40
続き
/*ハッシュ関数*/
int hash(char *s){

int hashv ;
int key[20]={0} ;
int i = 0 ,j = 1 ;

while(*s != '\0'){
key[i] = *s++ % 32 ;
i++ ;
}

hashv = key[0] ;

while(key[j] != '\0'){
hashv = ( (32*hashv) + key[j] ) % 101 ;
j++ ;
}

return hashv ;
}
933:02/11/15 18:41
続き
/*----------------------------------------
 ハッシュ表にデータを挿入する
----------------------------------------*/
int insert(KEY key[],DATA data[])
{
CELL *p;
int h;

if((p = (CELL *)malloc(sizeof(CELL))) == NULL){
printf("out of memory\n");
exit(2);
}
h = hash(key);
strcpy( p->key , key ) ;
strcpy( p->data, data ) ;
p->next = table[h];
table[h] = p;
return 1;
}
934:02/11/15 18:42
/*----------------------------------------
処理: ハッシュ表の内容を表示する
----------------------------------------*/
prt()
{
CELL *p;
int i;
for(i = 0; i < BUCKET_SIZE; i++){
printf("[%d]",i);
for(p = table[i]; p != NULL; p = p->next)
printf(" %c %c", p->key,p->data);
printf("\n");
}
printf("\n");
}


int main(void)
{
init();
insert("dsd","Agf");
insert("ehd","fsH");
insert("add","Sa");
prt();

return 0;
}
>>930-934
h = hash(key);
でハッシュ値を取ってきたあとにBUCKET_SIZEで割った余りをもちいましょう。

printf(" %c %c", p->key,p->data);

printf(" %s %s", p->key,p->data);
936:02/11/15 20:59
>>935
言われたとうりにしたらできました。
ありがとうございました。
937デフォルトの名無しさん:02/11/16 00:20
すんません
宿題手伝ってください

問題は
簡単な電卓プログラムを作成しる!!


コンソールから1行受け取り(2+3 や 43*6等の整数型の四則演算の式)
(とりあえず式として成り立たない文字列や演算子が何度も出てくるものは無効として終了する)

これを計算し結果を表示するというものなんですが
とりあえず式を受け取ってから、これを非演算数、演算数、演算子に分解する方法が
わかりません

たすけてぇ
>>937
>>699から読み直せ
>>937
int rand1, rand2;
char rator;

scanf( "%d %c %d", &rand1, &rator, &rand2 );

これで、rand1 に被演算数、rand2 に演算数、rator に演算子が入る
940デフォルトの名無しさん:02/11/16 05:14
問題
[A] sql [B] 1000 [C] 2000
SQL列のデータが1000以上2000以下

というSQLの問題で、AにはWHERE、Bには>=、となると思うんですが
語句を1個しか入れるところがないので、OR <=とやろうと思っても出来ません
ほかのやり方とかあるんでしょうか?
between 1000 and 2000
942940:02/11/16 05:31
>>941 さん
なるほど!!
少し前の問題でやったのに
すっかり忘れてました

ありがとうございます
943デフォルトの名無しさん:02/11/16 07:04
このプログラミングで間違ったところってあります?
コンパイルはできるのに、RUNができないんです。
お願いします。ちなみに宿題のURLはここ↓です。
http://www.cs.okstate.edu/cs1113/programs/pgm04.html
よろしくお願いします。
944943:02/11/16 07:06
http://www.geocities.co.jp/CollegeLife-Cafe/7779/java.htm
↑これがプログラムです。
URLを書くのを忘れてました。
お願いします。
オクラホマから 2ch かよ…おめでてーな。
java pgm04
>>944
取り敢えず、& n b s p 付けて整形してくれ。
948デフォルトの名無しさん:02/11/17 13:04
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=34&fi=no
↑SQLの問題なんですが、どうしてもこの3個だけとけません
答えを探そうと思って検索したいんですが
非常に検索しづらいのだけ残ってしまって
持っている入門書にもそれらしい事は書いていませんでした
SQL分かるかたよろしくお願いします。

というか、問題がそもそも不明瞭な気がします
問題の大元には表とかあったのかなTT
>>948
さすがに表があっただろう。列の意味がわからん。
>>948
おそらくこんな感じだろう。

SELECT ename, (sal + nvl (comm., 0) ) * 12
FROM emp;

SELECT e.ename 社員, m.ename 上司
FROM emp e, emp m
WHERE e.mgr = m.empno;

SELECT cname, ename, lname
FROM emp, cust, loc
WHERE emp.empno = cust.salesno
AND cust.locno = loc.locno;
951948:02/11/17 23:31
>>949
やっぱりそうですよねぇ~

>>950
回答ありがとうございます

不明瞭なので、会社にメールだしてみます
952もまずにパピコ:02/11/18 00:03
>>948
其れはempとdeptといってOracleインストールしたときサンプルユーザに入ってるサンプル表だ。
もちろん定義がわからなければわかるはずもない。
が、Oracle関連では当たり前のこととして説明を省略しやがるんだな。
953930:02/11/19 22:55
前930です。ハッシュ法(チェイン法)のプログラムを提出
したら、こんどはオープンアドレス法でハッシュ法を作れ。
といわれました。チェイン法を改造してプログラムを作成
したら再ハッシュができないみたいなので修正してください。
ちなみにC言語です。
954930:02/11/19 22:56
プログラム
/*データベース*/
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include <string.h>
/* ハッシュ表の定義*/
#define BUCKET_SIZE 101 /* ハッシュ表の大きさ*/
typedef char KEY;
typedef char DATA;

typedef struct cell{
KEY key[20];
DATA data[20];
}CELL;

CELL *table[BUCKET_SIZE];

/*----------------------------------------
処理: ハッシュ表を初期化する
引数: なし
戻り値: なし
----------------------------------------*/
void init()
{
int i;
for(i = 0;i < BUCKET_SIZE;i++)
table[i]=NULL;
}
955930:02/11/19 22:57
続き
/*----------------------------------------
処理: ハッシュ値を計算する
引数: キーの値
戻り値: ハッシュ値
----------------------------------------*/
int hash(char *s){

int hashv ;
int key[20]={0} ;
int i = 0 ,j = 1 ;

while(*s != '\0'){
key[i] = *s++ % 32 ;
i++ ;
}

hashv = key[0] ;

while(key[j] != '\0'){
hashv = ( (32*hashv) + key[j] ) % 101 ;
j++ ;
}

return hashv ;
}
956930:02/11/19 22:57
提出日が迫っているので明日の夕方までにお願いします。
957デフォルトの名無しさん:02/11/19 22:59
VCでオンラインRPG作れっていわれたんですが、どうしたらいいですか?
958930:02/11/19 23:00
続き
/*----------------------------------------
処理: ハッシュ表にデータを挿入する
----------------------------------------*/
int hash(char *s){

int hashv ;
int key[20]={0} ;
int i = 0 ,j = 1 ;

while(*s != '\0'){
key[i] = *s++ % 32 ;
i++ ;
}
>>957
回線切って首吊って死んでください。
960930:02/11/19 23:03
すいません958は間違えです。
続き。
int insert(KEY key[],DATA data[])
{
CELL *p,*q;
int h;

if((p = (CELL *)malloc(sizeof(CELL))) == NULL){
printf("out of memory\n");
exit(2);
}
h = hash(key);
strcpy( p->key , key ) ;
strcpy( p->data, data ) ;
if(table[h]==NULL)table[h] = p;
else if(table[h]!=NULL){
for(;;){
h++;
if(table[h]==NULL){
table[h] = p;
break;
}
if(h > BUCKET_SIZE){
printf("hash table overflow\n");
exit(1);
}

}
return 1;
}
961930:02/11/19 23:06

/*----------------------------------------
処理: ハッシュ表の内容を表示する
引数: なし
戻り値: なし
----------------------------------------*/
prt()
{
int i;
printf("ハッシュ表\n");
for(i = 0; i < BUCKET_SIZE; i++){
printf("[%d] -> [ 名:%s 姓:%s ] ",i, table[i]->key,table[i]->data);
if(table[i]==NULL)printf("NULL");
printf("\n");
}
printf("\n");
}
962930:02/11/19 23:07
これで最後です。
/*メイン関数*/
int main()
{

init();
insert("yuki","sato");
insert("suguru","ozou");
insert("hide","nakata");
insert("singi","ono");
insert("anaberu","gatou");
insert("onisige","kawamoto");
insert("eikiti","onizuka");
insert("sige","mori");
insert("yuki","gotou");
insert("yutaka","ozaki");
insert("hanako","yamada");
insert("takako","doi");
insert("jyunnitirou","koizumi");
insert("ryutarou","hasi");
insert("nobunaga","oda");
insert("hikaru","sinndou");
insert("tatutora","kawamoto");
prt();
return 0;
}

> printf("[%d] -> [ 名:%s 姓:%s ] ",i, table[i]->key,table[i]->data);
> if(table[i]==NULL)printf("NULL");

処理が逆。 table[i]がNULLのとき table[i]->keyにアクセスしようとするな。
964930:02/11/19 23:27
963さん
返事ありがとうございます。
いまから手直してみます。
970の人新スレよろしく
>>930
あと、別に動くから問題ないんだが、BUCK_SIZEをせっかく定義してるのだから
ハッシュ関数の中で101と素で書かない方が
あと、hが1ずつ増えていって、表のサイズを超えるとoverflowエラーになる仕様は
どうかと。そのときは0に戻りましょう。
968:02/11/22 17:09
 
969:02/11/22 17:10
program fudoudyouduu(output);
const n = 100;
h = 1/n;
var sum : real;
count : integer;
begin
count := 0;
sum := 0.0;
while count < n do
begin
sum := sum + h;
count := count + 1;
end;
writeln('sum = ', sum)
end.



上のプログラムを利用して、
nを1から10000の値で変化させた時の
計算で求まる和をそれぞれSnとしたとき
Snと1との差|1-Sn|
を表示するプログラムを作りたいのですがどのようにしたらよろしいでしょうか。
浮動小数点の問題です。
program fudoudyouduu(output);
var n: integer;
h: real;
sum : real;
count : integer;
begin
for n := 1 to 10000 do begin
h := 1/n;
count := 0;
sum := 0.0;
while count < n do begin
sum := sum + h;
count := count + 1;
end;
writeln('sum = ', sum)
end;
end.
971:02/11/22 17:41
≫970
どうもありがとうございました
972デフォルトの名無しさん:02/11/22 18:53
2点の座標(x1,y1)(x2.y2)を入力してこれを通る直線の方程式を求めるプログラムを作っていて
傾きや切片が整数になった時は有効数字以外は表示できないようにして
小数点になったときは小数点以下1桁までの表示にしたいんですがどうすればいいんでしょうか?

#include <stdio.h>
main()
{
float x1,x2,y1,y2,k,s;
printf("x1 y1=");scanf("%f %f",&x1,&y1);
printf("x2 y2=");scanf("%f %f",&x2,&y2);
k = ( y1 - y2 ) / ( x1 - x2 );
s = y1 - k * x1;
if ( s == 0 && k == 1 )
printf("y=x\n");
else if ( s < 0 && k == 1)
printf("y=x%.1g\n",s);
else if ( s == 0 )
printf("y=%.1gx\n",k);
else if( s < 0 )
printf("y=%.1gx%.1g\n",k,s);
else
printf("y=%.1gx+%.1g\n",k,s);
}

kが傾きでsが切片です
973デフォルトの名無しさん:02/11/22 20:10
void hoge(float x) {
if (floor(x) == x)
printf("%.0f", x);
else
printf("%.1f", x);
}
974デフォルトの名無しさん:02/11/23 11:50
新スレ立てようと思ったら、制限でできなかった
だれかよろ
---------------

宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること
・質問内容がちゃんと日本語になっていること
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。

前スレ http://pc3.2ch.net/test/read.cgi/tech/1029422194/



http://pc3.2ch.net/test/read.cgi/tech/1027756023/
http://pc3.2ch.net/test/read.cgi/tech/1026138039/
http://pc.2ch.net/test/read.cgi/tech/1024592344/
http://pc.2ch.net/test/read.cgi/tech/1007902384/
http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
http://pc.2ch.net/tech/kako/982/982853418.html
http://piza.2ch.net/tech/kako/972/972032579.html



長いソースを張れるBBS
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
そろそろ埋めるか
977デフォルトの名無しさん:02/11/23 13:31
JavaServletなんですが

Servletに記述するSQL分が
String query = "SELECT COUNT(Age) FROM Address WHERE Age>=0 AND Age<= 9";
だとSQLExceptionになってしまって
String query = "SELECT * FROM Address";
の時は問題なかったのですが、どう記述すればよいのでしょうか?

ソースは
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=35&fi=no です
UPした方は、SQL文のところが間違っていて、正しくは上に書いてるやつです
大文字小文字とか、括弧をつけろとか…?
ANDを&&にするっとか?
980ssss:02/11/25 11:00
中和滴定曲線を描くプログラムをActiveBasicで作ってほしんですが・・・。
>>977
データベースの種類、エラーの内容、テーブルの構造などをきちんと書いてから質問しようね