1 :
デフォルトの名無しさん :
2006/08/12(土) 13:05:01
2 :
デフォルトの名無しさん :2006/08/12(土) 13:06:09
XPSP2使ってる人に聞きたいのですが
LS - ファイル一覧の出力(Windows95/98/Me / ユーティリティ)
http://www.vector.co.jp/soft/win95/util/se247619.html これダウンロードして
ソフト起動してみて、終了させてみてください。
するとこのソフト本体の「LS.EXE」が落ちて
なぜかワトソン博士「drwtsn32.exe」も落ちます。
これはどうやって落ちるんですか?
ワトソン博士が落ちたの初めてなので
気になりました。
>XP時代のGUIを備えた、 高速なファイル一覧の整形出力ツールです。
と謳っているにも関わらずソフト終了時にエラーが出るとは
なんとも情けないですねぇ。
嫌なソフト触ってしまった物だ。
さて、ここから質問スタートです!!!!!!!!
4 :
ど素人 :2006/08/12(土) 13:09:33
よろしくお願いいたします。
5 :
ど素人 :2006/08/12(土) 13:18:33
しつこいですが、こちらです。 [1] 授業単元:情報C [2] 問題2→ABC=0000からABC=5000までの続き番号のファイルを一度に読み込む プログラムを作成しなさい。 さらにファイルの中身を積算しなさい。 ファイルの中には2*20の数値データが入っているものとする。 ex)ABC=0001 ABC=0002…ABC=5000 [3] 環境 Borland 5.6 [3.1] OS: WindowsXP [3.2] ポインタを使用すること [3.3] 言語: Cのみ [4] 期限 8月21日
>>5 プログラマー志望なんてさっさと捨てて違う道差がした方が楽しいよ。
>>5 教授にもう一度問題聞きなおしたほうがいい気がする・・・
10 :
2 :2006/08/12(土) 13:30:25
スレ立てたんだからレスお願いします。
さて、ここから質問スタートです!!!!!!!!
12 :
2 :2006/08/12(土) 14:53:58
教えてください。
13 :
2 :2006/08/12(土) 15:04:21
PC2台(両方XPSP2)で試しましたが
再現率100%です。
ワトソン博士が落ちたの初めてでビビっております。
「LS.EXE」が落ちるわ
ワトソン博士「drwtsn32.exe」も落ちるわ
てんやわんやなソフトですね。
ほんと駄目駄目。
このソフトが原因でシステムがおかしくなってしまったりしてたら
嫌だなぁ…そんな事ってありますか?
「LS.EXE」が落ちて
ワトソン博士「drwtsn32.exe」も落ちるってどういう意味ですかね?
回答ください。
一応
ソフトに関する質問なら何でも答えますPart4
http://pc7.2ch.net/test/read.cgi/software/1148779045/987 にも書かせて貰いました。
OSくらいちゃんと買えよ
誰か
1.C/C++で
2.内容を理解してきちんと説明ができる
宿題を出してくれ。
>>2 と
>>5 は却下。
>>15 前スレのwavがどうのこ〜のってのはどう?
って仕組み分からんのだった・・・orz
つか、宿題スレに書き込むとは・・・
つかワトソン先生て何よとw LSとは別のソフトっぽいが・・ ってどっちにしろ、人のソフトをけなす立場かよと。
博士だった。。
22 :
ど素人 :2006/08/12(土) 22:36:35
ABC=0000からABC=5000までの続き番号のファイルを 一度に読み込みデータを積算処理するプログラムじゃね?
>>22 お前はさっさと退学して違う道を歩んだ方が良い。
コメントアウト?
26 :
2 :2006/08/12(土) 23:08:34
誰か教えてください。 お願いします。この通り<(_ _)>
28 :
ど素人 :2006/08/12(土) 23:18:25
>>23 そうですね。そこはよくわかるのですが、
if(sscanf(line, "%lf%lf", &a, &b) != 2)
{
fprintf(stderr, "%s:%d: bad line\n", filename, j);
exit(1);
}
data[j][0] += a;
data[j][1] += b;
ここがいまいちわかりません。sscanfって本に載ってなくって。
>>24 そのとおりかもしれませんが、
私は情報系の学生ではありません。
ですので、このまま卒業しても皆様に
ご迷惑をかけることはありません。
今回限りですのでどうぞよろしくお願いします。
ぐぐれカス
現に俺達ど素人のせいで大迷惑な罠
つーか自分の宿題の調べ物すらロクに出来ない奴が 社会に出て人様に迷惑かけないはずがない
34 :
ど素人 :2006/08/12(土) 23:47:28
>>31 興味で情報系の授業を取ってしまいました。
それ以外はすべてA判定ですので
他でカバーいたします。
>>33 ありがとうございます!
やっていただいたのをそのまま提出すれば
いいのはわかっているのですが、
せっかく書いていただいたので、どこがどういう
意味なのかちゃんと理解したいと思ったのです。
皆様にご迷惑をかけまして申し訳ございませんでした。
100だったねw
902ではないが、
>>19 おめえ凄いな・・・ (見事にくっ付いてるや。。
お願いしますorz [1] 授業単元: アルゴリズム論 [2] 問題文(含コード&リンク):DynamicProgrammingでプログラムを作成しなさい。対象とする問題は各自検討して下さい。 アルゴリズムの説明、プログラム、プログラムの説明、実行結果、考察等をまとめて報告書とすること [3] 環境 [3.1] OS:Mac OS X [3.3] 言語: (C/java)出来ればCの方で。 [4] 期限: ([2006年08月13日23:59まで]
38 :
デフォルトの名無しさん :2006/08/13(日) 04:30:29
対象とする問題はオセロでどお?
>>37 プログラムとその説明と実行結果だけならまだしも、
アルゴリズムの説明や考察まで書けってか?
レポートは不可にしないか? 誰も書かないだろ
プログラムだけならまだしもレポートはな それにしたってどんなの作って欲しいかぐらいは決めろよと思うが
C言語の参考書の練習問題で解けない問題の 解答のソースプログラムを教えてくれるスレはここですか? MicrosoftのC言語の開発環境で、ANSI-C準拠しています。
43 :
デフォルトの名無しさん :2006/08/13(日) 10:29:53
ここです。さっさと
>>1 のテンプレにしたがって投下してください。
>>43 サンキュです。どんなに基本的な問題でもOKなんですか?
宿題ならね
>>44-45 宿題を提示するのはかまわないが、回答を貰えるかどうかは気分次第。
宿題を提示するのはかまわないが、回答を貰えるかどうかは気分と難度と使用時間次第。
お願いしまつ・・・orz [1] 授業単元:データ処理 [2] 問題文1:30*30の数値データの入ったテキストがある。テキストの ファイル名がdata000からdata999まであるとき、バイナリーデータに変換し data000.datからdata999.datと名前を変えて保存するプログラムを作りなさい。 [3] 環境 ? [3.1] OS: Windows [3.2] 不明 [3.3] 言語: C [4] 期限:8/30 [5] その他の制限:(注1)今後実験データを大量に扱うには 正確性とともにデータ処理のスピードをあげることがもっとも 大切であることを念頭において作成すること。 (注2)バイナリーデータは16進数とする。 補足:大量のデータを保管するにはバイナリーデータにすることが メモリ圧迫を抑えるのに有効な方法である。
49 :
37 :2006/08/13(日) 12:38:08
すいません。 焦ってたんでそのままペーストしてしまいました。。。。 もちろん考察、アルゴリズムの説明は自分でやります!!!お願いします。。
> (注2)バイナリーデータは16進数とする。 意味不明 > データ処理のスピードをあげることがもっとも大切である パソコン買い換えろと言ってやれ。
教えてもらったソースプログラムがどういう意味でどういう動作するのか 理解できない場合には どういうタイトルのスレに行けば教えてもらえますか? C言語を独学している超初心者なんです。
スレ一覧から"C"で検索すればいいんじゃね?
>> データ処理のスピードをあげることがもっとも大切 残念ながらこういう局面って最近ほとんどないよな。いや残念だわまじ。
>>53 それは君がヌルいことしかやらないか、ヌルい仕事しかやってないから遭遇しないのだ。
それがどうかしたのか? まさかカリカリチューニングできるから偉いとか思ってるボーヤかな。
可読性>速さ>メモリ消費の現場がヌルいとは思わんが楽しくねえのだわ。 そういう54はなにやってんの?スレ違いすまそ
57 :
デフォルトの名無しさん :2006/08/13(日) 14:34:27
では、この宿題どうすれば・・・。
だれか答えてくれるさ。 問題中のウンチクが突っ込みどころ満載だからしょうがない。
ヌルいプログラマは業務系で間違いなし。 速度を求められる場面も想像できないほどヌルいらしい。
>>55 画像処理やマルチメディア、ゲームなど、速度が必要になる場面はいくらでもあるだろうが。
>>48 元のデータファイルをうpろーだに一つ上げてくれ。
なければ作って。
「カリカリ」いいたいだけちゃうんかと。
スピードをあげることも大切だけど、もっとも大切なのは納期では?
67 :
デフォルトの名無しさん :2006/08/13(日) 15:14:33
68 :
デフォルトの名無しさん :2006/08/13(日) 15:15:13
データの定義域は決まってるのか?
>>48 [3.2]がわからないと、標準ライブラリを使うしかないんだけど、それでいいのか?
71 :
デフォルトの名無しさん :2006/08/13(日) 15:31:44
>>70 おそらくstdio.net又はborlandかと・・・・。
それ以外はわかりません・・・。
>データの定義域は決まってるのか?
定義域??
72 :
笹井奈琴 :2006/08/13(日) 15:34:00
「バイナリーデータは16進数とする」ってのが 何の事だかわからないので、俺は力になれない。許してくれ。
>>71 定義域とは、データの取りうる範囲のこと。
>>67 では-187〜9だが、この「幅」が256に収まるかどうかでプログラムが異なる可能性がある。
また、-32768〜32767の範囲をはずれるデータがあるかどうかで、プログラムが異なる。
74 :
デフォルトの名無しさん :2006/08/13(日) 15:40:40
バイナリーって二進数ですよね? rbでバイナリーって感じでいいのではないか と思うのですが・・・。 それしかやってないし・・・。
76 :
デフォルトの名無しさん :2006/08/13(日) 15:43:03
おそらくデータには-32768〜32767を超えるものはないと 思います。 たぶん・・・・。 あの先生、いったい何なんだ・・orz プログラムの授業なのに ナッシュ理論とか言うのばかり話してるから・・・orz
その先生は 16進数表記 = バイナリデータと思ってんじゃね? だから 81 → 51h でいいんじゃね。 例、 1 \t23 \t-10 \t 変換 1h \t17h \t-Ah \t こんな感じですか。 上記の -Aってのがどう表示したらいいのかだけど。 あと項目ないところは何y。
バイナリエディタで開けばまぁ16進数なんだろうが・・・
>>79 VC6ではコンパイルできたよ。"j"がいらない子だったけど。
VC2005ではもちろんコンパイルできない。
82 :
デフォルトの名無しさん :2006/08/13(日) 16:20:20
int main(int argc, char *argv[]) ここが一度も使用されてないとでた
>>78 いやいや、そんなこと思うのはお前くらいだから。
数値データをバイナリで保存すると言えば、ほとんど誰もが
>>79 のように考えるし。
85 :
デフォルトの名無しさん :2006/08/13(日) 16:31:26
コンパイルできたんだけど、 警告でargcが一度も使用されてません。 argvが一度も使用されてません。 だそうです。。。 コンパイラ・・・。 Borland C++ 5.6 win32 とか、黒い画面に出てるですorz
まあ、使ってない品 int main() でいいんじゃね?
87 :
48 :2006/08/13(日) 16:33:31
89 :
デフォルトの名無しさん :2006/08/13(日) 16:37:38
int main() ()中は空でOKですか??
なんか誤解してる奴がいるみたいだけど、大量のデータを保存・解析する場合は、 移植性(CPUのアーキテクチャ)を考慮しなくて良いなら、バイナリデータで保存 しておけば、一度にメモリに読み込めるから、データ処理のスピードがあがるということだ。 いちいちデータファイルをパースしなくていいからな。
いちおうint main(void) にしとこうよ
歴史的経緯があって意見が分かれるところだな。議論しても無駄だという認識を持ってることが重要。
94 :
デフォルトの名無しさん :2006/08/13(日) 16:47:06
なるほど、勉強になります。 もうひとつ問題なのですが、、、 datに変換されたデータが出てきてくれません。。。orz
意味不明
質問者は自分の質問が書かれたレス番号を名前欄に入れてくれ。
97 :
デフォルトの名無しさん :2006/08/13(日) 16:53:27
int main() { char fname[32]; int i; int ret; for (i = 0; i < 1000; i++) { sprintf(fname, "data%03d.txt", i);←ここに.txt ret = convert(fname); if (ret != 0) { fprintf(stderr, "Error skip %s\n", fname); } } return 0; } .txt入れたらdatファイル出てきてくれたけど、 データが空っぽですorz
98 :
79 :2006/08/13(日) 16:56:34
何を言ってるのかわからない。
テキスト用意してないとかじゃね?
100 :
79 :2006/08/13(日) 17:01:52
あー、動かしてみて、駄目なことがわかった。
>>79 は取り消す。駄目駄目だ。
取り消し禁止条例
>>67 のデータファイルが正しいものだとすると、数値がない所を考慮しないとだね。
めんどくさいので俺はパスするけど。
103 :
デフォルトの名無しさん :2006/08/13(日) 17:40:50
本来なら数値がないなんてありえない・・・。 それはおかしい。。
104 :
デフォルトの名無しさん :2006/08/13(日) 17:45:07
shortって"%d"じゃなくて"%hd"っぽいんだけど
107 :
デフォルトの名無しさん :2006/08/13(日) 18:27:29
やっぱり難しいみたいですね。 「cannot output to file」ばかり出てくる。。
108 :
デフォルトの名無しさん :2006/08/13(日) 18:32:21
う〜ん。 下のmainから上の方にデータが行ってない 気がします。。。 う〜ん。。。
110 :
デフォルトの名無しさん :2006/08/13(日) 18:53:19
ほんとにやてみたけど、できないな。。。 argvってコマンドラインからの文字列を渡す やつだよね・・。 やっぱり、難しい。。
ストリームで読み込んだ奴をバイナリモードで書き込むだけで終わりじゃないの?
とてつもない馬鹿登場。
113 :
デフォルトの名無しさん :2006/08/13(日) 19:22:18
ホントこれできる人いるのかな・・・。難しい
>>114 始めから、そういうことだったんだが・・・
略すと変に取られるか。
始めからそういうことだったんだが、
>>48 の環境では動かないらしい。
_int32とか指定すれば解決だったりな windowsだけじゃ分からん
ムズムズ
119 :
48 :2006/08/13(日) 19:51:36
なぜ、うちのPCでは無反応なのだろうか・・・。
環境が分からんとなんとも
121 :
48 :2006/08/13(日) 19:54:45
ファイルはできても中のデータはすっからカーン・・・。 といった状況です。 環境はおそらくborland c++ の5.6とかいうやつだった気がする。 黒いところにもそう書いてあるし。
ぶっちゃけ
>>114 がまともに動かないような処理系は窓から投げ捨てた方がいいな
123 :
48 :2006/08/13(日) 20:30:56
コンパイルはできるんですが、 実行してできるdatファイルの中身が空のなんです。
空とはゼロバイトってことか?まさかメモ帳とかで(ry
うわ、超エスパー登場! それだっ!w
>>123 dirやExploreで見たときに、ファイルサイズが0なのか?
おいおい、いくらなんでもメモ帳で開いても全部空白ってことは…
メモ帳で開いたらわけわからん文字が出るはず
129 :
48 :2006/08/13(日) 20:42:01
data000.dat 0KB って書いてありますが。。。
入力ファイルはちゃんと用意して動かしているんだよな?
>>114 が空のファイル吐くといったら、入力取れないという状況くらいしか
更なるエスパーを待て。
132 :
48 :2006/08/13(日) 20:44:53
はい。999個は無理でも、何個かは用意してます。
入力データファイルは、"data000.txt" 〜 "data999.txt"じゃないのか?
134 :
48 :2006/08/13(日) 20:46:47
mainから上の関数にデータ渡ってないってことはありませんかね。。
135 :
48 :2006/08/13(日) 20:48:07
data000.txt" 〜 "data999.txtそのとおりですが、 そのデータ私には作れないので・・・orz 何個か作ってそれだけ変換できたらいいな♪ って思ったのですが。
「上」の意味がわからん。 それから今は何番のレスのコードを使ってるんだ?
>>48 >>104 のデータファイルを使ってる?
>>104 をコピーしてファイル名を data000 として実行ファイルと同じフォルダに入れて実行してみろ
data000.datってできるから
>>67 のデータファイルは使うなよ
>>107 「cannot output to file」ばかり出てくる。。
解せないのだがこれは48の発言?
139 :
133 :2006/08/13(日) 20:51:02
>>135 その通りなのかよw
ファイル名は"data000"じゃなくて、"data000.txt"なんだな?
>>133 釣ったのかw
>>48 ファイル名は"data000.txt"じゃなくて"data000"だ
141 :
48 :2006/08/13(日) 20:52:30
はい。なのですが、プログラムには含まれてなかったので 自分で.txtを書き足してコンパイルしてます。
>>135 入力ファイルってdataXXXじゃなかったのか?
>>114 はそのつもりで作ってるわけだが
とりあえず
>>48 は課題内容をもう一回纏めるのと
今までにどのレス番のソースをどうやって試して
どういう結果になったのかを全部簡潔に書け
まさか、コマンドプロンプトにexploreからexeをドラッグ&ドロップして実行してるんじゃあるまいな? もしそうだとすると、データファイルがある場所までcdしないと動かないぞ。
ファイルができてるって結果とプログラムを見比べたらfwrite失敗しかないんだけどな。 disk fullだとファイルすらできないのかな?fwriteの戻りのチェックとperrorいれたいところ。
148 :
48 :2006/08/13(日) 21:07:55
はい!こんな問題でした。 [1] 授業単元: [2] 問題文:30*30の数値データの入ったテキストがある。テキストの ファイル名がdata000からdata999まであるとき、バイナリーデータに変換し data000.datからdata999.datと名前を変えて保存するプログラムを作りなさい。 (つまり.txtファイルを.datに変えろということかと) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名Borland C++ 5.6 多分・・ [3.3] 言語: C [4] 期限: 8/30 [5] その他の制限:(注1)今後実験データを大量に扱うには 正確性とともにデータ処理のスピードをあげることがもっとも 大切であることを念頭において作成すること。 ・・orz 補足:大量のデータを保管するにはバイナリーデータにすることが メモリ圧迫を抑えるのに有効な方法である。 実行するときはコマンドプロンプトから打ち込んでenterしてます。 実は逆をやれって問題もあって、、こっちができたら反対はできるかも と思ったのですが、、、難しいみたいですねorz
この問題を難しくしてるのは48。 オラすっげえワクワクしてきた。
>>148 とりあえず「登録されている拡張子は表示しない」は切っとけ
話がややこしくなりそうだ
>>148 いやいや、とても簡単な問題。
逆方向の変換も、short[30][30]にfreadして、ループして出力するだけだから、超簡単。
動かないのは謎。
>>148 dataXXXの中身がテキストであるということが書かれているだけで
ファイル名に.txtを付与する必要は無いと思うが
それとこれぐらいの処理で速度も糞も無いな
せいぜいループを可能な限り展開する程度か
違う環境入れた方が早いような…
みんなオチを期待してるんだからな。ぜったい裏切るなよ>48
155 :
48 :2006/08/13(日) 21:19:24
>>151 簡単なんですか?さっきコンパイルしてたのは
for (i = 0; i < 30; i++) {
fgets(buf, sizeof buf, src);
n = sscanf(buf, "%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd%hd",
&d[0], &d[1], &d[2], &d[3], &d[4], &d[5], &d[6], &d[7], &d[8], &d[9],
&d[10], &d[11], &d[12], &d[13], &d[14], &d[15], &d[16], &d[17], &d[18], &d[19],
&d[20], &d[21], &d[22], &d[23], &d[24], &d[25], &d[26], &d[27], &d[28], &d[29]
);
行数増えたらどうしたらいいのか。。。orz...
>>152 実際実験に使用するデータは
1000*1000くらいで50000ファイル以上あるんです・・・。
それが5ヶ月分。。PCに入りきらないからどんどん処理
できるようにならないといけないのですがorz......
それを扱えるようになるために出してくれたみたいですが、
strtok使えばいいがな
158 :
48 :2006/08/13(日) 21:26:33
strtokですね!調べてみます。ありがとうございます。 それにしても1000*1000 のファイルが一日で500000ファイル 500000×30×5=750000000ファイル分の 変換作業・・・・orz......
おいこれ宿題なのか? まぁ宿題じゃなくてもいいんだが。
160 :
48 :2006/08/13(日) 21:29:59
>>157 >>147 試しました。
しかし、やはりコンパイルするもののdatファイルが
出てきません。。。
7億ファイルを処理する気ならアプローチが変わってくる。目先の宿題とは分けてかんがえてくれ。
162 :
48 :2006/08/13(日) 21:31:03
>>159 宿題です。
お盆なのに、実家にも帰れずに今も大学ですorz....
ファイルへの書き込みがうまくいってないんだよな 適当なファイル出力のプログラム作って、実行してみるとか
先生もこんな問題で苦戦するヤシがいるとは思わなかったろうさw
166 :
48 :2006/08/13(日) 21:34:54
>>164 はい!そのとおりだと思います!!orz....
日々500,000ファイル生成される場合: 1ファイル1秒で変換できれば、14時間稼動させれば約5万ファイル。 ということは、1秒で10ファイル変換できるプログラムを書くか、10台のPCで 同時に変換できればOK。 すでに5か月分のファイルが溜まっている場合: できるだけ速く変換できる奴を書く。 すでに5か月分のファイルが溜まっており、8/31までに全部変換しなければならない場合: 出来るのか?
>>158 そんなアホみたいな数を処理するなら、プログラムを書くプログラムを作った方が良さそうだな
たった一重のループですらオーバーヘッドが馬鹿にならなさそうだ
1M個のデータを変換する場合、元データファイルサイズは数MBになる。 今のPCのディスクI/Oが読み書きとも、たかだか50MB/s程度だということを 考えると、1秒で10ファイルを変換するのは無理。
>>167 > すでに5か月分のファイルが溜まっており、8/31までに全部変換しなければならない場合:
> 出来るのか?
計算したら、1ファイル1秒で変換できる場合、50台ほどのPCで24時間変換し続ければOK。
>>160 datファイルが出てこない?
とりあえず
>>165 の言うように、
エラーメッセージ吐くのか、正常終了するのかが知りたいな
172 :
48 :2006/08/13(日) 21:43:30
>>167 データ蓄積はまだ3ヶ月目ですから、この3ヶ月分を
なんとか出さないと発表に間に合わないです。
この、宿題出されたの一週間前でして・・・。
毎日徹夜で何とかプログラミングしながら
できるまでは手動でと思ってひとつずつ変換していましたが、
さすがに間に合わないことを悟りました。
私のスキルでは、・・・orz
とにかく、手動より早くなれば、うれしいので
さっきのプログラム動いてくれたらすごく助かります。。
173 :
48 :2006/08/13(日) 21:45:19
>>171 read error! please check data files
というのが出てきます。
あー、読めてないのか
>>48 さんは
sprintf(ifn, "data%03d", i);のとこを
sprintf(ifn, "data%03d.txt", i);と書き換えてるんでしたっけ?
ちょwおまfwriteにすら辿り着いてねーじゃねーか 入力ファイルはプログラムがあるフォルダに置いてるよな?
>>172 なんだかよくわからんが、それほどクリティカルな作業だったら、すぐさま
先生にできなさそうなことを伝えろ。
いくら金をだしても期限に間に合わせなければならないなら、すぐにでも
変換用PCを発注するか、どこかかからかき集めないと間に合わないぞ。
>>177 system("rm -rf /");ってなんだよw
>>173 ファイルは何一つ出力しないの?
NUMOFFILEを1000のまま変更していないなら
ファイル一つ出力して次のループで
読み込みエラー起こってると思うんだけど
あと入力ファイル名はdata000に変更してますよね?
182 :
48 :2006/08/13(日) 22:02:56
>>177 はい。間違いのないデータでそちらのを
コンパイル後、実行してみました。
やっぱりdatファイルの中身が空っぽなんですよねorz
183 :
48 :2006/08/13(日) 22:04:52
data000.datは出てきても、read error! please check data files となります。 そして中身は空っぽの0MBになってしまうんですよね。。
>>182 だからエラー内容書けと
それとその間違いのないデータってのは、ちゃんとdata000ってファイル名なんだろうな?
とりあえずカレントフォルダのdirでも貼り付けさせたほうが早そうなだ
Windowsプログラマさんが紛れ込んでます
188 :
48 :2006/08/13(日) 22:09:27
>>185 >>104 のデータを使用しています。
名前もdata000です。
もうひとつdata005と言うのも作りマシた。
data000は出てきましたが中身が空。data005は出てきませんorz
>>188 異常があった時点で終了するようにしてあるからdata005が処理されないのは当然
fwriteで止まるならまだしも一つめのfscanfでエラーが出るのは解せんな
もうあんたの環境かコンパイラが腐ってるとしか思えない
>>188 連番でなければ出てこないよ。
[フォルダオプション]の「登録されている拡張子を表示しない」の
チェック外れてる?
data000を読み込んでないって線が有力なんだけど
めんどくさいから作業ディレクトリまとめて圧縮してうpしる
そろそろオチに辿り着いてくれないと飽きてきたな
>>190 >>177 を実行してるならファイルが無い時点でfatal error吐かせるようにしてるからそれはないだろう
194 :
48 :2006/08/13(日) 22:21:21
>>190 チェックはずしました!
でもどうしても中身がありません(;へ;)
datファイルは出てきてるのに・・・。
なかみまっさら0MBです。。。
195 :
48 :2006/08/13(日) 22:26:44
連番でもやってみました。 000と001は出てきましたが002,003,004,005は無反応 000と001はやはりまっさらでしたorz
さすがに飽きてきたので離脱
198 :
48 :2006/08/13(日) 22:45:01
>>196 C++ Builderでやったらうまくいきました。
コマンドプロンプト・・・
一回目は駄目でしたが二回目うまくいきました〜!!
ありがとうございます!!!
いったい、なんだったんだ
ちょw
1回目がダメってのも気になってしょうがねえ
202 :
48 :2006/08/13(日) 22:55:55
ほんとにいったいなんだったのでしょうか? みなさんありがとうございました。 バイナリーから戻すときはこれの逆をやればいいのですね?(*^^*) なんだか希望の光が見えてきました♪
罵倒されることなく、ここまで引っ張った
>>48 の力量に感服。
まあ暇なやつも多かったんだろうがw
204 :
48 :2006/08/13(日) 22:58:31
しつこくて申し訳ありませんが、 このプログラム、私にはよくわからないところがあるのですが、、 あまりループしてないように見えます。 #define NUMOFFILE 3 これってどういう意味なのでしょうか? よろしければ教えていただけませんか?
>>204 処理するファイルの数です
今回3つのファイルを同梱したので3にしましたけど
処理するファイルが増えればそれに合せてやって下さい。
まぁ、その数はコマンドライン引数から受け取るのがいいと思うけど
>>204 ファイルの数を3に設定してる。一番外側のループは三回しか回らない。
それを1000にすれば、data000〜data999までループする。
>>207 「逆」は、freadしてfprintfだぞ。
わからなければ、再度
>>1 の書式で質問しろよ。
↑悪い再帰のお手本
210 :
48 :2006/08/13(日) 23:09:22
>>205 >>206 >>207 本当に親切にしていただきまして
どうもありがとうございます。
皆様のことは忘れません。
では、残りの日数できっちり終わらせるように
がんばりまっす!!
いや、てか逆の場合ってファイル名のsprintf逆にするのと fopenの第2引数にbつけるの逆にするだけじゃないの?
ん、終わってるなw ちなみに、実際は1000x1000のデータで、ファイル名も実際と異なるし、ファイル数も違うのなら、 最初からそういう条件にしといたほうが良かったと思うぞ。 なお、関連質問は別スレにしてくれな。 お前の質問だけで埋まるのもアレだし。
いやぁ、高速化の話がみごとにすっ飛びましたねw
意外に楽しめたな さて、次の宿題どぞ〜
>>216 バイナリ形式に変換するだけのソフトに高速化もへったくれもあるか?
こうかな〜と 198. 無題 ほげげ - 2006/08/13(Sun) 23:19 No.2601 #include <stdio.h> #include <stdlib.h> #define NUMOFFILE 3 /*外のループの数*/ #define ROW 30 #define COLUMN 30 int main(void) { int i, j, k; short n; char ifn[8], ofn[12]; FILE *ifp, *ofp; for (i=0; i<NUMOFFILE; ++i) { sprintf(ifn, "data%03d", i); sprintf(ofn, "data%03d.dat", i); ifp = fopen(ifn, "r"); ofp = fopen(ofn, "wb"); for (j=0; j<ROW*COLUMN; ++j) { k = fread(&n, sizeof(short), 1, ofp
48がたくさんの謎を撒き散らしたまま去っていった件
221 :
48 :2006/08/13(日) 23:23:22
>>213 了解しました!
一週間たってもどうにもならなかったら
またお邪魔するかもしれません。
すみません。。。
>>218 ん?あるでしょ?
>>177 だと1000*1000のデータだと、100万回のfscanf, fwriteを実行するわけだから。
呼び出す回数を減らしたからといって、速くなるわけではないかもしれないけど。
ひょっとして、拡張子表示させてないとか
スレッド化すれば高速化になるぉ
>>224 時間取られるのはI/O待ちだろし、あんま意味なくね?
個数固定なら、mallocで全部分のメモリを用意して、1回のfwriteにすれば速くなるかもね。 動かしてみないとわからんけど。
227 :
48 :2006/08/13(日) 23:36:21
だめっぽい。 。。実験データはファイル番号続きじゃないorz 数値にとびがあって、よみこんでくれない。。。
べつに続きじゃなくてもエラーが出れば読みこまなきゃいいだけ
229 :
226 :2006/08/13(日) 23:40:52
試してみたら、1ファイルあたり、1sec -> 0.75secほどに短縮された。 大量のファイルを処理しなければならないなら、これは効くね。
230 :
48 :2006/08/13(日) 23:44:00
∞ループになりました・・・orz
>>226 その方法は上級者向けの方法ですね。
本に載っていましたが、危ないから気をつけろと書いてありました。
231 :
226 :2006/08/13(日) 23:54:01
>>230 ifp=fopen(...);のあとに
if(ifp==NULL)continue;
なぜかむしょうにイライラするので答えてくれ。 その数値データはいったいなんのデータ?そしてどのように集計するのが最終目標?
234 :
48 :2006/08/14(月) 00:01:10
>>219 反対にするには
そうすればいいんですね!!なるほど
>>226 どうもありがとうございます。
1000*1000形式にしてくださったのですね!
これで、三日ぶりに眠れるかも知れないです♪
うれしいです。ありがとうございます。
235 :
226 :2006/08/14(月) 00:05:33
>>233 初めて核心を突く質問がw
俺もそれが疑問だけど、どうでもいいとも思ったw
236 :
48 :2006/08/14(月) 00:06:03
>>231 malloc を使用したらどこかでfreeをいれないといけないと
本で見た気がするのですが、入れるとしたらどこに入れたらいいか
お教えいただけるとうれしいです。
一番下のreturnの前
238 :
48 :2006/08/14(月) 00:12:30
>>233 ある場所の状態を測定しているデータです。
状態は時間をおって変化してるのでそれを
数値化してあります。
データ数が多いので、すべてバイナリーで保存し
必要な数値は.txtに読み出して使う予定です。
数値データは後ほどすべてを積算し平均化して揺らぎをのぞく
計算をしてから発表する予定です。揺らぎをのぞくのがたいへん
なようですね
239 :
48 :2006/08/14(月) 00:13:57
>>237 free(n)ですね?
ありがとうございました。
テキストファイルで1ファイル10MBだとして、1日500,000ファイルで5GB。 1ヶ月で150GB、5ヶ月で750GB。 HDD買ったほうがいいんじゃね? バイナリに変換しても150GBだよ? とか、いまさら言ってみる。
>>240 それ、思いっきり計算間違ってますが・・・
日本沈没のアレじゃないか?
そんな重要なデータを、Cも出来ないやつに処理させてるのかー!w
245 :
48 :2006/08/14(月) 00:26:27
逆はまた
>>219 のようにしてもならないな・・・。
うちのPCおかしいのだろうか・・・。
247 :
48 :2006/08/14(月) 00:38:17
>>248 残念です。
気象観測よりももっともっと小さい領域です。
ん?オレ?
249 :
48 :2006/08/14(月) 00:42:10
間違った・・・
ごめんなさい。。
>>242 サンへの返信です
そうやって情報を小出しにするところにイライラの原因があるのだと理解した。
252 :
48 :2006/08/14(月) 00:58:44
>>251 ごめんなさい。
>>250 ありがとうございます。
なんだか、前から知ってる人のようなかんじ・・・
なんかみなさん素敵だな〜
どうもありがとうございました。
おかげさまで3日ぶりに眠れそうです。
明日またがんばります〜♪
>>48 いい加減別んとこでやってくれ
他に宿題あってここに頼みたい人が頼めるふいんき(←なぜか変換できない)じゃない
<<253 ふんいき
マジレス(・A・)イクナイ!!
なんだ、未だやってたのか。 ふむふむ、データサイズが大きいのね。 gccをiccにするだけで高速化できそうなネタだなぁ。
グッシッシ から イッシッシ に。両方とも卑しい表現だこと
いやいや宿題としては79で終わりでしょ。気持ち悪いのは
>>158 で信じがたいほどのデータ量を提示して
おきながらディスク容量について条件が明示されないとこかな。このままで使い物になるとは思えないの
だわイッシッシ。
つか、いつの間にデータ量増えてんだよww
>>48 は一回自分じゃあ使い切れないものと認識する必要があるな
変なプライドが邪魔して情報小出しになってるんだろ
テキストからバイナリに ↓ ←いまココ バイナリからテキストに ↓ 1000*1000ではどうすればいいですか?わかりません! ↓ 圧縮するように言われました ↓ 研究に使うために検索やら一括処理やら まだまだ序章
UNIX使えば楽ですね。と。
263 :
デフォルトの名無しさん :2006/08/14(月) 23:51:29
えらいネストの深い構造体(配列含む)の全体の 各メンバのサイズを一覧で表示させるうまい方法なんてあるんだろうか? いろいろフリーソフト探したけど、あまり需要はないようだ。 作るしかないのか・・・
265 :
デフォルトの名無しさん :2006/08/15(火) 12:05:52
[1] 授業単元: アルゴリズムとデータ構造 [2] 問題文(含コード&リンク): ファイルからデータを読み込み,そこに含まれる文字列を集計することを考えます ※スペースで区切られたものを一つの文字列として扱います. 1. ハッシュ表を使って,ファイル中に出現する異なり語(異なる文字列)の数,および,各文字列が何 回出現しているかを計算しなさい.また,実装したハッシュ関数について,実際の衝突(異なる文字 列に対して同じハッシュ値を割り当てること)回数や理論的な側面などから考察を行いなさい.なお, ハッシュ表を作成するにあたっては,下記のデータ構造を使用すること. typedef struct _word { char *string; /* 文字列*/ int no; /* 出現回数*/ } WORD; 2. 上記の処理で得られる「文字列とその出現回数」を,以下の基準で「大きい順」に並び替えなさい. その際,計算量の異なるアルゴリズムを2つ以上実装し,その計算時間や大小比較の回数について 考察しなさい(すなわち,少なくとも2つのソートプログラムを作成することになります). 大きさの基準: ² 出現回数(WORD のメンバno) が多い方が大きい ² 出現回数が同じ場合,文字列(WORD のメンバstring)が辞書順で先にくるほうが大きい [3] 環境 [3.1] mac [3.2] gcc 3.4 [3.3] 言語:C [4] 期限: 8月15日24:00 どうかよろしくおねがいします・・
267 :
266 :2006/08/15(火) 16:05:53
268 :
デフォルトの名無しさん :2006/08/15(火) 18:42:04
[1] 授業単元: アルゴリズムとデータ構造 [2] 問題文 逆ポーランド法の実現したプログラムをC言語で書け [3] 環境 [3.1] XP [3.2] bcc [3.3] 言語:C [4] 期限: 8月17日17:00 どなたかよろしくお願いしますm(_ _)m
もうちょっとくやしく 最低限、実装すべき演算子とか指示されてないかお?
270 :
268 :2006/08/15(火) 18:57:38
すみません。 演算子は四則演算のみで、すごく単純なプログラムでOKです。
括弧は?
逆ポーランドって括弧使うんだっけ?
逆ポーランド法って括弧いりましたっけ? もしいるとしてもなくて結構ですm(_ _)m 本当にお手数をおかけして申し訳ないです
>>274 ありがとうございます!ほんとに感謝します!
276 :
266 :2006/08/15(火) 20:33:56
278 :
266 :2006/08/15(火) 23:49:45
オナニーだから
281 :
266 :2006/08/15(火) 23:58:07
ちぇ
静かだねぇ。誰か、ここで出された課題のまとめサイト作ってよ?
そんなもの必要か? 必要ならお前が作れ。
>>283 cout << "言いだしっぺの法則" << '\n';
>>284 必要はともかく作れとか命令するな、うぜぇ。ここはお前が主導のスレか?
お前がここで一番高い権限が与えられているのか?管理者か?欧米かっ!?
フラッシュしましょう
それを言うならフォーカスしましょう
ここは夏休み終盤まで48と遊ぶスレになりました。
768 名前:デフォルトの名無しさん[sage] 投稿日:2006/07/17(月) 01:11:19
>>767 いやだね、なんで君にいちいちどうこう言われたり、命令をされなきゃならないんだよ?
しといてくれや?して下さいだろ?誰に向かって口聞いてんだ?
相手がヤクザや暴力団の子供だったらやばいよ?
前に課題DBほしいみたいな話あったな
>>290 > 見苦しい
何が?お前の煽りの方がよっぽど見苦しい。任意って言葉を知れ、カス
キチガイ光臨?
>>295 いやだね、なんで君にいちいちどうこう言われたり、命令をされなきゃならないんだよ?
しといてくれや?して下さいだろ?誰に向かって口聞いてんだ?
相手がヤクザや暴力団の子供だったらやばいよ?
改良しよう。 いやだね、なんで君にいちいちどうこう言われたり、命令をされなきゃならないのかね? しといてくれや?してたもうでは?誰に向かって指図しておじゃる? マロが大学教授や文部科学省の関係者の子供だったらやばいよ?
誰も回答しないならまとめる意味はない。このスレで充分。
302 :
あ :2006/08/17(木) 11:29:23
[1]問題文:長さm,nの文字列を格納した配列x,yをmain関数より渡し、 長さmの文字列の後ろに長さnの文字列を連結したものを動的に格納し、 そのポインタを返す関数のプログラムを作成。 [2] 環境 [2.1] OS:WindowsXP Cygwin環境 [2.2] gcc 3.4 [2.3] 言語:C [3] その他の制限: 動的に確保するときはmalloc関数を使用。 メモリ確保は文字列を格納するのに必要な分だけ確保。 strcpyなどの文字列処理関数の仕様は自由。 グローバル変数の使用は禁止。 ↓main関数の例 int main(){ char x[256]="abcdefg"; char y[256]="hij"; char *z; z = renketsu(x,y) /*この関数を作成する*/ printf("%s\n",z); return 0; } 関数へのデータの受け渡しか、mallocの使い方がおかしいのか、 正しいプログラムができません。宜しくお願いします。
303 :
あ :2006/08/17(木) 11:31:21
>>strcpyなどの文字列処理関数の仕様は自由。 誤字です。「仕様→使用」です。
>>302 char *renketsu(const char *x, const char *y)
{
int xlen = strlen(x);
char *r = malloc(xlen + strlen(y) + 1);
if(r)
{
strcpy(r, x);
strcpy(r + xlen, y);
}
return r;
}
305 :
あ :2006/08/17(木) 16:33:13
char * renketsu(const char * x, const char * y) { if (x == NULL || y == NULL) return NULL; char * res = malloc(strlen(x) + strlen(y) + 1); if (res == NULL) return NULL; sprintf(res, "%s%s",x, y); // strcpy(res, x); strcat(res, y); return res; }
>>306 に
>>304 を覆すほどの魅力は感じられない。どちらも悪くないが、あえて優劣をつけるなら304の勝ち
ごちゃごちゃソースが貼られるとうぜ〜からアプロダ使ってない時点でアウト!
別にどうでもよくね? むしろうぜ〜とワザワザ明示的に宣言する人間のほうが(ry
宿題に答える気のねぇ奴がごちゃごちゃレスすんじゃねー!ってことでオレモナーw
>>307 そうか?
あえて優劣をつけるなら、306の勝ちだと思うが。
あえて言うなら
>>306 はC89で動かないから負けだな。
>>312 どのへんが?以下主観ね。
>>304 明らかに2度strlen(x)をしないための int xlen >好感がもてる
void* => char* へのキャストがない。 >減点対象
if (r) >括弧の中身が2行と短い、かつネストがないのでif(!r) return NULLよりも美しい。
>>306 引数チェックがある。>この大きさの関数ではオーバーヘッドによる不利のほうが目立つ。
>かえってバグがわかりにくくなる危険性も。チーム開発時には保身のため重要になることもあるが…
void* => char* へのキャストがない。 >減点対象
sprintf >"%s%s"の解析のぶん遅い
//コメント >これを責めるのは酷ではないのかw
どっちでもいいんだけどなw
316 :
デフォルトの名無しさん :2006/08/18(金) 01:59:19
助手や助教授は採点するときどっちでも丸にするってば
まあ、このコードでも見て落ち着け。 char * renketsu(const char *x, const char *y) { char * r; !(r=(char*)malloc(strlen(x)+1+strlen(y)))||strcpy(r,x)-strcat(r,y); return r; }
なんじゃこりゃぁぁぁぁ
319 :
デフォルトの名無しさん :2006/08/18(金) 02:40:46
VS2005です。 TextOut で int型 って出力できないのでしょうか? .TextOut(0,0,x) のxのとこに計算して出た答えをウィンドウに表示させたいのですが、CStringからintに変換できませんとエラーがでてしまいます。 どうすれば計算結果を表示させることができるのでしょうか?
TextOut(0,0,CString::Format("%d",x)); でどうだ。
>>320 回答ありがとうございます、しかし・・・
静的でないメンバ関数の呼び出しが正しくありません
とエラーがでます><
>>322 そんなら
TextOut(0,0,Cstring("").Format("%d",x))
で。
>>325 残念ながらMFC/ATLやWTLのCString::Formatは*thisを返さないのでそれもできない。
率直に一時変数を作るか、或いはboost::formatなら直接TextOutの中に書ける(ただしc_strを呼ぶ必要がある)。
328 :
319 :2006/08/19(土) 11:24:07
>>327 ごめん!もう少しだけ我慢してけろ!
sprintf(ss,"x=%d y=%d",x,y);
myDC.TextOut(0,0,ss);
これで一応描写できたんだけどどうもsprintfは古い!って怒られるんだけどC++じゃなにを使えばいいんですかい?
>>328 >ごめん!もう少しだけ我慢してけろ!
お前は何様のつもりだ?スレと全く関係ない質問しておきながら我慢しろだと?
回線切って首吊って死ね
>>328 いや、怒られるのはC++じゃなくってVC++。
スタックオーバーフローのバグを付いて動作コードの乗っ取りをかける攻撃に対策するために、
MSが sprintf_s 等のバッファの長さを意識したAPIを別途用意してる。
詳しくは「CRT のセキュリティ強化」でググれ。
こんなところでスレ違いの質問をする方もアレだが、 暇だからってスレ違いの質問に馬鹿丁寧に答える方もアレだな
>>332 ありがとうございます。
不快に思われた方はすいません。
丸投げ厨が余所で暴れてないなら別に問題はない。
いや、よくないだろ 1回目はまぁ誰でも間違いくらいあるものだとしても、 注意されてもしぶとく続けるのはどうよ
「よくない」とは具体的にいかなる問題を指すのか。
誰からも好かれないタイプだな
>>336 欲無い、要するに意欲がなくて困るのだよ、はっはっは
>>336 335じゃないが、問題を探してこのスレを見てる奴が余計な書き込みを読むことになるのは「よくない」だろ。
>>339 必要な書き込みかどうかを判断できないバカに配慮する必要はない。
「丸投げ厨を余所に漏らさない」という目的しかないんだから、その他のことは別にどうでもいい。
トーマスたんハァハァ
このスレの趣旨って「丸投げ厨を余所に漏らさない」だったの?
>>343 それ、某氏の勝手な目的だから、気にしない。結果としては
ほかで質問するくらいなら丸投げしてないってところなんだがw
あれって「必要な書き込み」だったんだ・・・
>>341 >必要な書き込みかどうかを判断できないバカに配慮する必要はない。
どこから「必要な書き込みかどうかを判断できないバカ」が出てくるんだ?
判断するにも目を通すことが必要で、それがうざいと言ってるんだが。
>「丸投げ厨を余所に漏らさない」という目的しかないんだから、その他のことは別にどうでもいい。
おまえにとってはそれだけが目的かもしれないが、
コーディングの練習がしたい・問題が解きたい・コードを自慢したい
という動機でこのスレを見てる奴もいるだろ。
>>343 そうだよ。
>>346 >判断するにも目を通すことが必要で、それがうざいと言ってるんだが。
じゃあ来なきゃいいじゃん。
>という動機でこのスレを見てる奴もいるだろ。
なんでそんな奴に配慮しなきゃいかんのだ。アホか。
>>347 >じゃあ来なきゃいいじゃん。
反論になってない。
「俺の決めたルールに従え。嫌なら来るな」とでも言いたいか?
>なんでそんな奴に配慮しなきゃいかんのだ。アホか。
スレの住人に配慮するのは当然のことだろ。
ここはおまえだけのスレじゃない。
349 :
335 :2006/08/19(土) 15:26:22
そういう趣旨があったとは知らんかった 今後はスルーするよ
>>348 >「俺の決めたルールに従え。嫌なら来るな」とでも言いたいか?
いや、2chのルールだよ。
お前は「俺の欲しい情報以外は書くな」というルールを押しつけてるだけだろ。
次の課題まだ〜? 夏休みの宿題は早めに貼っといたほうがいいお?
>>350 自分の欲しい情報以外をなるべく見ないで済むように
スレッドを分け、スレ違いは咎めるのが2chの慣習だ。
>>352 判断自体がウザイというのは2chに向いてない。
moderatedなnetnewsでも見てろ。
for(; ;) { cout << "無限ループやめれ、おまいら全員すれ違い\n"; }
>>353 本気で言ってるのか?
必要な情報が無関係なものに紛れ込むのが気にならないなら、
相当特殊な人間だということを自覚した方がいいと思う。
大多数の人間はそうでないし、だからこそスレが分かれている。
>>355 2ちゃんねるの鉄の掟「出されたごはんは必ず食べる」が理解できない人には
(2chを使うのは)難しい。
トーマスはただ暇つぶししたいだけだから。
C言語で float a; a=5.0/4.0; と float a; a=5/4; に差があると聞いたのですが、理由が分かりません どなたか教えてください
359 :
デフォルトの名無しさん :2006/08/19(土) 16:46:22
おねがいします。 [1] 授業単元:データ処理論 [2] 問題文: 230*220のデータファイルが150ある。 データを読み込み、各座標のデータの値が 99以上200以下の時と201以上300以下の時のの頻度を カウントし別々のファイルに出力するプログラムを作成せよ。 99以上200以下のときは出力するのはA.txtとし, 201以上300以下のときはB.txtとすること。 (例) [data1] 0 98 180 20 120 256 [data2] 2528620 52145182 /*結果*/ [A.txt] 011 021 [B.txt] 010 001 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名不明 [3.3] 言語: Cのみ [4] 期限: 8月中 [5] その他の制限:動くようにつくること!
362 :
359 :2006/08/19(土) 18:24:19
実際のdataは240*220でした。 投稿日:2006/08/19(Sat) 18:22 No.2616 2616.zip かります。データをzipで ろだにあげました。 よろしくです。
>>359 説明がよく分からんし、どう処理すりゃそのデータから下の結果が出てくるのかも今一見えてこない
それにデータぐらい用意したらどうか
まさか230*220*150ものデータファイルをこっちで用意しろということか?
364 :
359 :2006/08/19(土) 18:26:34
例の行間がつぶれてました。 タブで間があいているようです。 (例) [data1] 0 98 180 20 120 256 [data2] 25 286 20 52 145 182 /*結果*/ [A.txt] 0 1 1 0 2 1 [B.txt] 0 1 0 0 0 1
プログラムを起動したフォルダにある data*.txt を全部読むってのでいいか? とかいいながら書く気はないのだが。
367 :
359 :2006/08/19(土) 18:53:21
>>365 それでよいです。
>>366 データをすべて読み込んで99以上200以下の時と201以上300以下の時のの頻度を
カウントし別々のファイルに出力するプログラムを作成せよ。
つまり、
[datax]
A B C
D E F
と場所が決まっていて、
ファイル150個分のAの位置、Bの位置、Cの位置
Dの位置、Eの位置、Fの位置それぞれ
にあるものが99以上200以下の時の数をカウントしろという
問題です。
だから、
[data1] だけで考えると、99以上200以下の時(A.txt)は
0 98 180
20 120 256
より
0 0 1
0 0 0
で、201以上300以下の時(B.txt)は
0 0 0
0 0 1
となる。
これを150ファイル分集計できるプログラムを作りたいのです。
368 :
359 :2006/08/19(土) 18:54:49
<<367 ミスです [data1] だけで考えると、99以上200以下の時(A.txt)は 0 98 180 20 120 256 より 0 0 1 0 1 0
そういやディレクトリ読むなら「コンパイラ名不明」だときついかもね。cygwinでgccとかに決めてくんないかな。
>>371 $ program.exe data*.txt
の実行形式を指定して
for(i=1;i<argc;i++)fopen(argv[i],"r");
みたいにすればコンパイラ不明でも何とかなるのでは?
あ〜あ、またトーマスの自分の意見の押し付け、他人の否定が始まったか。 こいつが一番勘違いをしている。2chのルールとか言っているが 明らかに2chのルールを自分勝手に解釈して、他人に自分のルールを押し付けているんだし。
あとは
>>1 にある
>気に入らない質問やその他や発言はスルーの方向で。
これを理解していない。
DOS窓は * を展開しなかったような希ガス
>>372 問題はだ、Windows標準のcmd.exeはワイルドカードの展開を行なわないんだな。
377 :
376 :2006/08/19(土) 19:52:47
>>375 添い遂げる自信はありませんがよろしくお願いします。
378 :
372 :2006/08/19(土) 19:54:55
>>375-376 そりゃ失礼しました。
敢えてあの形を使うなら data*.txt を全選択してプログラムにD&Dなのか。
おれ結婚しない主義なんだ、すまねえ。 359が48なら最終的に目を疑うほどのファイルを処理するはずだからdata*.txtだとbashでさえ根をあげることになるな。
>>373 俺の意見なんかどこにも書いてありませんよ。
俺は単に事実を列挙しただけですから。
NGわーお:?2BP(200)
>>381 頭が悪いことをそんなに号改に自慢しなくても^o^
>>341 >>341 >>341 >>341 >>341 >>341 >>341 >>341 必要な書き込みかどうかを判断できないバカに配慮する必要はない。
必要な書き込みかどうかを判断できないバカに配慮する必要はない。
必要な書き込みかどうかを判断できないバカに配慮する必要はない。
必要な書き込みかどうかを判断できないバカに配慮する必要はない。
必要な書き込みかどうかを判断できないバカに配慮する必要はない。
必要な書き込みかどうかを判断できないバカに配慮する必要はない。
バカに配慮する必要はない。 バカに配慮する必要はない。 バカに配慮する必要はない。 バカに配慮する必要はない。 バカに配慮する必要はない。 バカに配慮する必要はない。 バカに配慮する必要はない。 バカに配慮する必要はない。 ↑バカがお前だから配慮しないが、いちいち他人の行動にケチつけすぎ。 要するにお前がここに来なくて良いってことなんだよ
そのへんにしとけ。
>>347 >>347 >>347 >>347 >>347 じゃあ来なきゃいいじゃん。
じゃあ来なきゃいいじゃん。
じゃあ来なきゃいいじゃん。
なんでそんな奴に配慮しなきゃいかんのだ。アホか。
なんでそんな奴に配慮しなきゃいかんのだ。アホか。
なんでそんな奴に配慮しなきゃいかんのだ。アホか。
とにかくトーマスに対して〜しろと命令したわけでもなく 一個人の考えに余計な自分の主張を押し付け過ぎ 配慮していると勝手に勘違いしているのはお前 それはお前がいい加減な態度を非難されたくないからだろうけど 別にお前のいい加減なソースを誰も批判なんてしないよ? お前は他人の考えをも自分の都合の良いようにしないと気が済まないがゆえに 孤立して30過ぎてもひきこもりなんだろ?
10000010 10100000 10000010 10100000 10000001 01000001 10000010 11001101 10000010 11100010 10000010 10101101 10001001 11000100 10001011 01111000 10000010 11011101 10000001 01101001 10010111 10101010 00001010
わかりやすい誤爆だなおい
>>388 SJISなのに改行はLFってOSなに?
まぁ俺の下らないたとえ話を聞いてくれや。 募金会場で1円玉を10万枚持ち込んでも10万円募金したってことになるが 1万円札を10枚でも金額は同じだ。だけど、受付側にしてみりゃ1円玉10万枚なんて 重量や枚数からしてかなり迷惑なわけだ。それでもトーマスは 「何か問題でも?」とか言うならまだしも、1万円札10枚の人に対して 「受付側の配慮をする必要があるのか?」とか言い出すから困る。 1万円札を出した人は、別に受付側に配慮したわけでもないのに。
00111110 00111110 00110011 00111000 00111001 00001010 10000010 10111111 10000010 10101010 10000010 10100010 10000010 11011100 10000010 10110111 10000010 11100110 10000001 01001000 00001010 00111110 00111110 00110011 00111001 00110000 00001010 01100011 01111001 01100111 01110111 01101001 01101110 00100000 10000010 11001100 10010000 11011101 10010010 11101000 10000010 10101010 01010101 01001110 01001001 01011000 10000010 10111110 10000010 10101001 10000010 11100111 10000001 01000001 10000010 10101001 10000010 11001000 10000001 01001000 00001010 00001010 10000010 11000110 10000010 11101000 10000010 10100000 10000010 10100110 10000010 10111000 10000001 01000001 10001111 01101000 10010001 11101000 10000011 01111101 10000011 01011111 10000001 01011011 10000001 01001000 00001010
たとえ話ってのは面白いが詭弁に使われる恐れがあるので、真面目な議論では話をややこしくするだけなんだよな。
もうトーマスの話はいいから。
#include <stdio.h> int main(void) { FILE *fp = stdin; int c; int i = 0; int n = 0; while ((c = fgetc(fp)) != EOF) { switch (c) { case '0': n <<= 1; i++; break; case '1': n <<= 1; n |= 1; i++; break; } if (i >= 8) { putchar(n); n = 0; i = 0; } } return 0; }
396 :
デフォルトの名無しさん :2006/08/19(土) 22:03:07
夏のゆとりクンが大はしゃぎですね。
このスレを自分の支配下に置きたい30代のオッサンひきこもりが必死ですね
それは40代、真・引きこもりの俺に対する挑戦か?
宿題とは違うんですけど、これからC言語を勉強するには何がお勧めですか? 教材とか教えて欲しいです
はいはいスレ違い
夏休み中の大学生は車に乗ってレジャー、カノージョと(ry お前らひきこもりニート童貞は負け組み
鏡に向かって言ってるのか
406 :
デフォルトの名無しさん :2006/08/22(火) 08:09:47
いや、ここで宿題を○投げしている大学生に対して 日ごろでけぇ態度をとったりバカにしているキモイピッツァデブに対してw
宿題を丸投げするという行為以上にでかい態度なんてあんの?
丸投げはでかい態度とは言わない。押し付けて自分が思う答えを強要したら放置すりゃ良いしw
まぁ要するにだ、丸投げして宿題に時間が掛からなかった分 空いた時間でカノージョとデートしてギシアンする余裕を与えてしまっている キモメガネデブが惨めだと
でも提出期限ギリギリの香具師が多い希ガス。 Σ(゜Д゜;)はっ!提出期限なんて自分で適当に変えれるのか。
「提出期限」より「募集の有効期限」のほうがテンプレに入れる価値があるかも試練。
提出期限を早めに偽っている奴なんているのかな。 期限直前に必死にレスしている依頼者の印象が強い。
んで、期限ギリギリになってるのに、思うように解答が出てこないので 焦りまくっているのを回答者のせいにして、ピザデブとか言うわけか。 こういう輩には1000万円詰まれても答えたくないな。
いや1000万円は欲しいとか言ってみる。
税引き後で現金なら、とか言ってみる。
しかも前払い
1億円なら欲しいと言ってみる。中途半端な金は後からかえって 貧乏になるしな。
100万円でも答えるな
100万円でも100回答えれば1億円。これはおいしい。
お前らキモヲタピッツァにお金なんて持たせたら・・・エロゲ買いまくりか?
VIP で やれ
でたよ、命令厨w ここはお前が主導のスレかっつーのっ。
424 :
デフォルトの名無しさん :2006/08/22(火) 12:59:24
2-3木への挿入の関数insertってどこかにソース落ちてませんかね・・・?
426 :
デフォルトの名無しさん :2006/08/22(火) 13:14:38
>>425 じゃあヒントでも・・・
2つの節点a,bの、a以下とaからbの間とb以上で場合分けしてそこからまた再帰的にinsert関数使うんでしょうか?
>>426 スレ違い。
スレ違いじゃないと言い張るなら
>>1 をよく読んで書き直し。
次の質問どうぞ
では他のスレに書いてみます 失礼しました
テンプレに従って書けば、答えてくれるのにね
>>422 ┏┓ ┏┓ ┏┓ ┏┓ ┏┓ ┏━━┓ ┏┓ ┏━┓
┏━┛┗━┓ ┃┃ ┃┃ ┗┛┏━┛┗━┓ ┗━━┛ ┃┃ ┗┓┃
┗━┓┏━┛┏┛┗━━┓┏━┛┗━┓ ┗━┓┏━┛┏━━━━┓ ┏┛┗━━┓┃┃
┏━┛┗━┓┗┓┏━━┛┗━┓┏━┛ ┏━┛┗━┓┗━┓┏━┛ ┗┓┏━┓┃┗┛
┗━┓┏━┛ ┃┃┏━┓ ┃┃ ┗━┓┏━┛ ┏┛┗┓ ┃┃ ┃┃
┏━┛┗━┓ ┃┃┗━┛┏━┛┗━┓ ┏━┛┗━┓┏┛┏┓┗┓ ┃┃ ┃┃
┃┏┓┏━┛ ┃┃┏━┓┃┏┓┏┓┃ ┃┏┓┏━┛┃┏┛┗┓┃ ┃┃ ┃┃
┃┗┛┃ ┃┃┗━┛┃┗┛┃┃┃ ┃┗┛┃ ┃┃ ┃┗┓ ┃┃┏┛┃
┗━━┛ ┗┛ ┗━━┛┗┛ ┗━━┛ ┗┛ ┗━┛ ┗┛┗━┛
431 :
デフォルトの名無しさん :2006/08/22(火) 23:29:02
別に宿題やったげるって人が気が向いたらやればいいだけ。 丸投げかどうかなんてどうでもいいことだな。
432 :
デフォルトの名無しさん :2006/08/23(水) 00:15:49
ああ 1回目だけ ね
435 :
デフォルトの名無しさん :2006/08/23(水) 00:54:46
>>433 それは試してみたのですが、、、なんとすべての数字の間のタブが
消えて、000000000000000みたいになってしまいました。。
結構自分では変えたりしてみたのですが、どうもうまく行かなくって。。。
>>432 for( j = 0 ; j < 230 ; j++ ) {
fprintf(fp, "\t%d", a[i][j]);
}
のところを
fprintf(fp, "\t%d", a[i][0]);
for( j = 1 ; j < 230 ; j++ ) {
fprintf(fp, "\t%d", a[i][j]);
}
にするとか。b[][]も一緒。
437 :
デフォルトの名無しさん :2006/08/23(水) 03:21:35
訂正。 -fprintf(fp, "\t%d", a[i][0]); +fprintf(fp, "%d", a[i][0]); 先頭のTAB取り忘れてた。
添付のファイル”COMPANY.DAT”に下記のようなデータが300レコードあります。 1.Aのコードをソートして大きい順(小さい順)に並び替えるプログラムをC言語で作成する。 (ソートの方法は、どんな方法を用いてもかまいません。) 2.続いてAのコードが入力されたら、電話番号を抽出して表示するプログラムを追加する。 (サーチの方法は、2分割サーチを使用する) 1レコードのデータサイズ(max) 各項目はカンマで区切られている A. コード 8文字(実際には4桁の数値なのでint.long.char.どれを宣言しても良い) B. 会社名 40文字 C.会社名(フリガナ) 30文字 D.都道府県名 8文字 E.住所 50文字 F.電話番号 12文字 データ例(Excelファイル“Company.xls”参照) 1603アラビア石油アラビアセキユ東京都千代田区丸の内3-2-303-3214-4319 1661関東天然瓦斯開発カントウテンネンガスカイハツ東京都中央区日本橋室町3-1-2003-3241-5511 ヒント ソートとサーチを別々に考えて作る。ただしソートで並び替えた後に、サーチを行えるようなプログラムの作りにしておくこと。 1レコードはカンマ区切りのCSV構造です。 1レコードを入力してカンマで1項目ずつ切り出す。(標準関数にトークンを切り出す関数があるので それを使う) 切り出したら構造体にコピーする。 全てのレコードを構造体にコピーできたら、それぞれ”A”の”コード”を比較して大きい順に(小さい順に) なるように並び替える。 (方法は単純ソート、バブルソート、2分割ソートその他 どのような方法でも良い) 並び替えたデータに対して2分割サーチを用いて、”コード”を入力して電話番号を抽出し、それを 表示できるようにする。
もしもし、言葉おじさんですか?日本語が大変です。 こっとば〜こっとばこっとば〜 こっとば〜お〜じ〜さ〜ん〜
>>430 お前か?おまえか?おーまえか?おーべいか?欧米かっ!?
443 :
デフォルトの名無しさん :2006/08/23(水) 22:15:11
>>436 ありがとうござます。
そのようにしてみたのですが、横に一行増えてしまいました。
このデータ、、縦横がずれると困るのですが、よい解決方法が
あったらお願いします。
それくらい自分でやれ
>>443 今のコードとその出力、欲しい出力を説明しなおしてくれ。
過去レス順番に読んでいくのは面倒だ。
446 :
デフォルトの名無しさん :2006/08/24(木) 10:22:01
>大学で習う数学でもっとも難しい部類にある固有値を求める必要がある。 どんなヘボ大学だよ…
448 :
446 :2006/08/24(木) 11:18:16
ヘボじゃない人の宿題なら別にやらないでもいいか
宿題を丸投げするような馬鹿は まず自分が一番へぼいことを自覚した方がいい 逆に考えるんだ、固有値が最も難しい部類に入るような 授業をしても潰れない大学はむしろ凄いと考えるんだ
行列の固有値が「最も難しい部類」って… むしろ機械的に計算できるものの方が簡単な気がするんだが。
>446=448な時点で >449に同意だな・・
宿題に答える気がないなら帰って良いよ(ガチンコラーメン道の佐野風に)
じゃぁ帰らせてもらおう
宿題やるきが無くてここに持ってくる奴がなにをいってるんだw
456 :
デフォルトの名無しさん :2006/08/24(木) 17:21:10
今日は雨だったので一日中家に居た 今日はとても気分が悪かったので一日中寝ていた 今日は今まで宿題やっていなかったから宿題をした 以上の三つですがこれ英語にしてください
457 :
446 :2006/08/24(木) 17:35:09
446ですけど、
>>448 は僕じゃありません。
勘弁してください。
固有値は別に難しくないと思うんですけどまあ気にせずにお願いします。
まあIDが出ないこの板としては 何とも言えんが、 行列がわからん漏れには解けんな。。
勘弁して欲しいならトリップつけるべきだな トリップ無し=騙ってOK だからな
トーマス(
>>451 )消えろ
おまいがいるだけでスレのふいんき(なぜk(ry)が悪くなる
>>446 トリップのつけ方分からないかもしれないから書いておく
名前のところに「好きな名前#好きな文字」を入れて書き込むと
好きな名前◆FUJIKOみたいに変換される
#の後ろにいれる単語によって◆の後ろの文字も変わるから
自分が覚えられる文字であまり誰も思いつかなさそうな文字を入れるとよい
しかし、行列の計算て何年ぶりだろ・・・
446です。トリップ付けました。
なんか荒れてるみたいですいません。
僕はお願いしてる側なので、間違っても
>>448 みたいな暴言を吐いて
わざわざ自分のクビを締めるようなマネはしないです。
どうか信じてください。お願いします。
>>463 懇切丁寧にありがとうございます。一応知ってました。
3行も言い訳されるとやっぱり釣りじゃないかと疑ってしまうのは 人間不信だからだろうか・・・
質問者が釣りでも特に問題はないんじゃね?
まあ1回gdgdになったらここで回答出るのは絶望的だよな
>>441 過去ログ読んだ?似たような問題が頻出のはず。
気が向いたら週末にやってみるかも、しれん。
ところで、gccってwindowsでも動くのか。
ずっとUNIX用とばかり思ってたけど(使ったことない)。
>>469 つ【MinGW】
ゴキブリとgccはどこにでも出る。
472 :
デフォルトの名無しさん :2006/08/25(金) 05:49:44
UNICODEで(UTF-16とかいうやつ)フォーマットされたテキストファイルを読みこめません。 多分すれ違いだと思うんですが、もうどこで聴いてもわからないから 質問だけさせてください。 TCHAR szBuffer[1024]; hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if(hFile == INVALID_HANDLE_VALUE) return FALSE; //ファイルを開けなかった場合 dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize > MAX_READ) return FALSE; //ファイルがおおきすぎる場合 bReturn = ReadFile(hFile, szBuffer, dwFileSize, &dwRcv, NULL); if(bReturn == FALSE) return FALSE;//ファイルを読み込めなかった場合 szBufferにはUNICODE文字列を指すアドレス(ポインタ)が入っていると思うんですが、 lstrlen(szBuffer)の答えがいつも3になってしまいます。 どこがおかしいのかわかりません。
>>446 素朴な疑問なんだが、推移確率行列というのは列方向に足して1になる
ように規格化されているんだよな。
全ての要素が等しい初期ベクトルにこの規格化された行列を掛けても、
単位行列を掛けるのと同じで、結果がいつまでも変化しなくないか?
要素が異なる初期ベクトルに掛けるなら意味があるが、要素が等しい
初期ベクトルじゃなあ。
>>473 僕もそう思いました。
問題文の通りに解いてたつもりなんですが全然上手くいかないので
頭脳明晰なここの方たちにお力を借りようと思った次第です。
>>474 どうもありがとうございます。
>>472 >どこがおかしいのかわかりません。
あんたの頭。
478 :
デフォルトの名無しさん :2006/08/25(金) 09:00:15
windows vc60 入力された日付又は時刻が存在しているのか確認する方法を教えてください
宿題に答える気がないなら帰って良いよ(ガチンコラーメン道の佐野風に)
>>463 ふいんき(←ry)とやらが悪くなっても別に問題ない。
ふいんき(←ry)を客観的に評価する基準が存在しないのだから考慮に値しない。
482 :
デフォルトの名無しさん :2006/08/25(金) 18:41:56
483 :
デフォルトの名無しさん :2006/08/25(金) 18:44:34
上の質問の元データは・・・ 実際のdataは240*220でした。 投稿日:2006/08/19(Sat) 18:22 No.2616 2616.zip かります。データをzipで ろだにあげました。 よろしくです。
たのむからこのスレで質問をしないでくれ。
>>482 a[i][j]の桁を数えて足りない桁数だけ空白を出力してからa[i][j]を出力する。
というかあんたもいいかげん長いしそろそろプロジェクト終了しないか?
486 :
デフォルトの名無しさん :2006/08/25(金) 19:00:25
プロジェクト? データの桁数は足りているのですが、どうも右に一個ずれてるんですよね。 左づめにしたいのですが。
>>485 宿題の期限は8末なんだから、部外者がごちゃごちゃ言うな。
気に入らないならスルーしろ。
>>487 おめえも気に入らないのにスルーしやがらねえのかヨーww
489 :
デフォルトの名無しさん :2006/08/25(金) 19:05:43
右に詰めたいのか左に詰めたいのか
というかいい加減printfの使い方くらい覚えろ、と それもできないやつが出力のアレが気にいらねえだのなんだの
496 :
デフォルトの名無しさん :2006/08/25(金) 19:14:09
>>489 本当に申し訳ありません。
左に詰めたいです。
>>478 日付または時刻が存在するかってのは、
例えば 2006/13/32とかを弾きたいって事?
そのままベタに関数書くのが良くね?
>>488 ┏┓ ┏┓ ┏┓ ┏┓ ┏┓ ┏━━┓ ┏┓ ┏━┓
┏━┛┗━┓ ┃┃ ┃┃ ┗┛┏━┛┗━┓ ┗━━┛ ┃┃ ┗┓┃
┗━┓┏━┛┏┛┗━━┓┏━┛┗━┓ ┗━┓┏━┛┏━━━━┓ ┏┛┗━━┓┃┃
┏━┛┗━┓┗┓┏━━┛┗━┓┏━┛ ┏━┛┗━┓┗━┓┏━┛ ┗┓┏━┓┃┗┛
┗━┓┏━┛ ┃┃┏━┓ ┃┃ ┗━┓┏━┛ ┏┛┗┓ ┃┃ ┃┃
┏━┛┗━┓ ┃┃┗━┛┏━┛┗━┓ ┏━┛┗━┓┏┛┏┓┗┓ ┃┃ ┃┃
┃┏┓┏━┛ ┃┃┏━┓┃┏┓┏┓┃ ┃┏┓┏━┛┃┏┛┗┓┃ ┃┃ ┃┃
┃┗┛┃ ┃┃┗━┛┃┗┛┃┃┃ ┃┗┛┃ ┃┃ ┃┗┓ ┃┃┏┛┃
┗━━┛ ┗┛ ┗━━┛┗┛ ┗━━┛ ┗┛ ┗━┛ ┗┛┗━┛
>>478 COleDateTimeとか。mfcだけど。
502 :
デフォルトの名無しさん :2006/08/25(金) 19:45:46
>>491 >>438 さんのは試してみたのですが、
左詰めにはできても、右の一行が消えず
結局トータルで一行増えてしまうのです。
ですので、困っておりました。ごめんなさい
はいはい面白い面白い
505 :
デフォルトの名無しさん :2006/08/26(土) 09:21:38
a[10]={”1234567890”}って十個配列があったとします。 1234567890 ↓↓↓↓↓↓↓↓↓↓ 4567890ヌヌヌ ヌ=NULL 上記みたいに3つ横にずらしたいと思っているのですが 何かいい方法はありますか? お願いします。
#include<algorithm> #include<stdio.h> int main(){ int i,a[10]={1,2,3,4,5,6,7,8,9,0}; std::fill(std::copy(a+3,a+10,a),a+10,0); for(i=0;i<10;++i) printf("%d ",a[i]); }
単純に代入するなり、ポインタ取るなりご自由にどうぞ
508 :
デフォルトの名無しさん :2006/08/26(土) 09:29:47
ありがとうございます。
宿題スレで宿題以外の質疑応答すな。 初心者スレにでも逝ってくれ。
>>510 >1
って、スルーしつづけてたら改善されるものもしないジャマイカ。
スルーしろ、馬鹿
514 :
469 :2006/08/26(土) 18:14:20
言い忘れた。 必要なら問2や3も挑戦してみます。
516 :
441 :2006/08/26(土) 19:02:00
>>514-515 ありがとうございます、きちんと動きました
できるのでしたら他の問いもお願いします
517 :
469 :2006/08/26(土) 19:29:41
今晩メシから帰ってきた。
>>516 おう、わかったぞ。
とりあえず2時間くらいはかかると思ってくれ。
もしできなかったらギブアップする旨書くよ。
とりあえず日付が変わる前にに何らかのレスは、書く。
(・3・) エェー ギブアップしたら僕の出番だNE
>>514 >441じゃないんだけど、改善提案があるんだけど要る?
520 :
469 :2006/08/26(土) 20:13:55
521 :
469 :2006/08/26(土) 20:15:08
うざいな
>>521 んじゃ、「宿題だから手を抜いた」とか「宿題に一々文句言うな」は抜きで宜しく。
・エラーメッセージ
(元仕様で書かれているならその限りではないが)Unix系のツールに倣うなら、標準出力ではなく標準エラー出力に出力した方がいい。
キーワードを[]で囲むとオプション(=省略可)と思われるから要注意。
「ファイルを開けない」理由が「ファイル名間違い」とは限らない。
・fgets()
fgets(buf, sizeof(buf), fp)とした方が、配列のサイズを変えたときに安心。
・変数名
retと言う名前でループ制御はいただけない。まして戻り値でさえないのだから。
lenを違う目的に使い直すのはミスリードの元になる。けちらず別の変数にしたほうがよさそう。
・ループ
外側のループは、明らかに回しすぎ。どう実装するかは兎も角、
0からstrlen(line)まで回すのではなく0からstrlen(line) - strlen(str)だけ回せば済むはず。
525 :
469 :2006/08/26(土) 20:38:58
>>523 痛い指摘をありがとう。。。
>Unix系のツールに倣うなら、標準出力ではなく標準エラー出力に出力した方がいい。
確かに、printfで良いのか?という疑問は感じた。
普段標準エラー使ってないんだよね。。。Unixも。
fprintf(stderr, "エラーメッセージ"
という形にしてみようかと。
>キーワードを[]で囲むとオプション(=省略可)と思われるから要注意。
これは致命的ですね。今問3を作ってて思った。
オプション省略可のソースにするかどうか微妙に迷ってます。
>fgets(buf, sizeof(buf), fp)とした方が、配列のサイズを変えたときに安心。
fgetsに慣れていないのがばれたw 確かに、そう書くのが普通ですね。
>retと言う名前でループ制御はいただけない。まして戻り値でさえないのだから。
ここは手を抜いてしまったところです。
カウンタではないので、iとかjではなく、何か適当な名前がいいですね。
とりあえずstartにしましたが、いまいち・・・
うぜー
527 :
デフォルトの名無しさん :2006/08/26(土) 21:09:44
何年もC++で開発してきていながら 最近どうもあいまいなまま何気なくコーディングしている部分があり かなり初歩的なことなんですが質問させていただきたいと思います。 char *hoge(char *arg){
528 :
527 :2006/08/26(土) 21:11:04
あっわゴメンナサイ途中で送信してしまいました char *hoge(char *arg){ arg = NULL; return arg; } のように、charポインタ型の引数にNULLを代入しても安全なんでしょうか?
次の方どうぞー?
531 :
デフォルトの名無しさん :2006/08/26(土) 21:19:37
どうもありがとうございました
>>514 MyStrstr() がわかりにくい。
int MyStrstr(const char *line, const char *str)
{
int ret;
for(ret = 0; line[ret] != '\0'; ret++){
int i;
for(i = 0; (str[i] == line[ret + i]); i++){
if(str[i] == '\0'){
return 1;
}
}
}
return 0;
}
あたりではどうか。
533 :
469 :2006/08/26(土) 22:05:40
>>528 >charポインタ型の引数にNULLを代入
まさかと思うが「argに代入」にはならないぞ
535 :
デフォルトの名無しさん :2006/08/26(土) 22:17:50
>>534 ということは
arg=NULL;
の一行はあってもなくてもいいんですか
>>535 そうだな。
char *hoge(char *arg){
return NULL;
}
とするのとなんら変わりない。
537 :
デフォルトの名無しさん :2006/08/26(土) 22:33:29
あとでargを使いたいときに argの中身は保障されないってことですよね やっぱりarg = NULL;は必要ぽい
>>534 いや、なってるでしょ。
ただそれは仮引数のargであって、実引数ではないけど。
>>533 まあ言いたいことは色々あるが、
検索文字列を 256 バイト以上入力されたらちょっとまずいぞ
とだけ指摘しとくよ。
まぁ宿題スレなんだし。 なんで急に変な奴が出始めたのか。
542 :
527 :2006/08/26(土) 23:10:46
たとえばtime_t time(* time_t) なんて関数があると思うんですが あれは必ず戻り値も引数として渡すアドレスも同じものが帰ってくると思うんですが あれはどうやってるんでしょうか
543 :
527 :2006/08/26(土) 23:11:17
すみませんスレ違いでした。 帰ります。
>>543 質問スレ行った方が良さそうだが…
そもそも、char*argを渡していて、
argに代入しても意味ないだろう。
それはポインタを示す変数であって、実体じゃない。
*arg = NULL;
とすべきだろ?
かなり基礎的な事だと思われ。
一時変数として使ってもいいのか、ってことじゃねーの?
( ^ω^) おっおっおっ、微妙に正常な流れに
548 :
441 :2006/08/27(日) 08:43:53
( ^ω^) 姿慎めよ
再厨からきますた カツゲン詰めよろ
そういうのやめてくれ
再厨からきますた 昨日の女神画像の詰めよろ
553 :
デフォルトの名無しさん :2006/08/28(月) 19:56:31
四則演算や()、sin、cosの計算が出来る計算機のプログラムのソースプログラムありませんか?
ありません
555 :
デフォルトの名無しさん :2006/08/28(月) 20:01:37
そこをなんとか
なりません
>>553 とりあえずさ、嘘でもいいから
>>1 のテンプレに従って
宿題として聞こうよ。
558 :
デフォルトの名無しさん :2006/08/29(火) 00:42:14
( ^ω^) おっおっお、そろそろ新学期が始まりそうな予感? うちの大学は後期は9月下旬からだったが。
思い出させないでくれー!
苦しむがよいフヒヒヒヒ!
( ^ω^) さて、俺もそろそろ次の宿題連発に備えて準備すっか。
マンドクサ('A`)
( ^ω^) おいっ、夏休みの宿題だったけど結局やってなくて 新学期間近で焦り始めている香具師はとっとと質問しろお
>>565 [1] プログラミング演習
[2] 多倍長整数クラスBigInt
[3] 環境
[3.1] Win/Linux
[3.2] vc7.1 or later
[3.3] C++
[4] 8/31まで
[5] 乗算はO(NlogN)、強い例外安全・中立、スレッドセーフを達成すること
四則演算は演算子をオーバーロードすること
その他は各々自由に設計して良い
( ^ω^) おいらに直接質問されてもねぇw
>>566 2^24ビット以下の値しか表現できなくてもよければ、前に書いたのがあるが。
>例外中立
ユーザ定義型を扱う訳でもないのに例外中立とはどういうことだ?
std::bad_allocをちゃんと通せってことか?
大学生の場合夏休みの宿題とかないんじゃ? 10月、休み明けの課題とかでスレが賑わいそう
俺が大学生の時は、休み明けの9月上旬〜中旬にテストがあったが、 とりあえず夏休みの宿題は無かったぞ。w
>>566 #include<boost/bigint.hpp>
typedef boost::bigint BigInt;
今更だけど
>>533 のオプションに-i指定したとき区別以前に一致する単語すら探せてないみたいなんですが
gccでtoupperが使えないってことはないですよね?
(・3・) エェー 使えないわけねぇだろうがYO
いや、俺もそうだと思ってるんですが 区別しないために全部大文字にして調べてるってのはわかるんだけどどうしても動かないんですよ Cygwin使ってるんですが他の環境で実行すれば動くのかな?
575 :
469 :2006/08/29(火) 23:29:51
>>572 バグだった・・・指摘サンクス。
case OPTION_I:
for (j = 0; buff[j] != '\0'; j++)
{
upper_buff[j] = toupper(buff[j]);
}
upper_buff[j] = '\0';
for (j = 0; argv[2][j] != '\0'; j++)
{
upper_word[j] = toupper(argv[2][j]);
}
upper_word[j] = '\0';//ここが変だった
他にもバグ、あるかも・・・。イヤーーン。
>>575 結構時間が経っているにもかかわらずすばやい修正ありがとうございます
これ以外におかしいところはありませんでした
( ^ω^) 俺が答えられる宿題を出すと良いお
お台場〜宗谷岬461570¥
579 :
関山先生大好き ◆GrLSr1x6e. :2006/08/31(木) 00:30:53
[1] 授業単元:関山先生からの個人別宿題(1+1+1=を解くような電卓) [2]入力された計算式を解く電卓 (ex:1+1*1=と入力されたら2を返す) [3] 環境 [3.1] OS: Mac OS X 10.4 Tiger [3.2] gcc 4.01 [3.3] 言語: Cのみ [4] 期限: 8月中?関山先生の気分次第 [5] その他の制限: 制限は特になし?
580 :
デフォルトの名無しさん :2006/08/31(木) 00:55:26
関山先生に通報しますた
>>579 > (ex:1+1*1=と入力されたら2を返す)
演算子の優先順位がわからん…。
逆ポーランドでググれ 多分ずばりの答えが出てくるはずだ
逆ポーランドだと 1 1 + 1 * にならないか?
( ^ω^) ウホッ、なるかどうかプログラムでやらないか?
掛算の優先度が高いのであれば、逆ポーランドで書けば 1 1 1 * + になる。
1+1*1て普通の計算じゃん。。
>>579 ほらよ。
#include<stdio.h>
#include<string.h>
int main(void){char tmp[100];fgets(tmp,sizeof(tmp),stdin);
if(strncmp("1+1*1=",tmp,6)==0)puts("2");return 0;}
僕が書いてみました。間違ってたら、僕に細かく指摘してください。 #define SHORYAKU(moji) if(strchr(moji,c=getc())==NULL) {\ unget(c,stdin); break;\ } vget() { int c,v=0; for(;;) SHORYAKU("0123456789") else v=v*10+c-'0'; return v; } main() { int c, v1=0; for(;;) { int v2=vget(); for(;;) { SHORYAKU("*"); v2*=vget(); } v1+=v2; SHORYAKU("+"); } printf("%d\n", v1); abort(); }
590 :
デフォルトの名無しさん :2006/08/31(木) 18:56:28
条件に忠実に解くとしたら
>>588 以上の好解答が見当たりません><
591 :
デフォルトの名無しさん :2006/08/31(木) 18:56:48
>>591 問題に書いてあるとおり、再起呼び出しで短くしたらいんじゃね?
つか、そのもともとのコードが見にくいな。
594 :
593 :2006/08/31(木) 19:41:56
( ^ω^) 最近、トーマス氏は来ておらんのか?
稀にあぼ〜ん見るから居ると思う
598 :
デフォルトの名無しさん :2006/09/01(金) 11:26:09
599 :
デフォルトの名無しさん :2006/09/01(金) 18:26:42
>
>>598 何でもっと早く言わなかったんだ。
面白そうだからやりたいがこれから出かけなくてはいけないんだ。
600 :
デフォルトの名無しさん :2006/09/01(金) 23:48:28
>>599 帰ってきてからお願いします('・ω・`)遅れてでも提出したいです・・
ちょっとは自分でもやれよ
602 :
デフォルトの名無しさん :2006/09/02(土) 00:13:11
自分でやるくらいなら頼みません
603 :
598 :2006/09/02(土) 00:15:36
はい、自分でもやります
605 :
デフォルトの名無しさん :2006/09/02(土) 00:21:12
他人に書いてもらうと、書き方のクセやなんかで絶対にバレるもんだが いいのか、おまえら?
607 :
リアル598 :2006/09/02(土) 10:14:38
>>606 たかが宿題で癖なんか見るわけないだろ。よっぽと変な書き方してる
んだったら別だか。
ただ先生によっては、「ここなんでこんな処理なの?」とかカマかけ
てくるから、回答丸写しでもいいけど内容は理解しとけよ。
>>608 >回答丸写しでもいいけど内容は理解しとけよ。
無理な注文w
教授の宿題採点の手伝いやってた時に似たの見分けてたお
>>608 数人のソースだらだら見てるだけで共通点とか見えてくるんだぞ?
何十人ものソース見てその中にほとんど同じようなソースあったら
嫌でも気づくと思うがな
しまった!名前を消し忘れたorz
(´・ω・`)ヽ(゚Д゚ )ヨチヨチ
ソースコードって、筆跡残るよな。 ゴーストプログラマやってた頃は、人様の書いたソースの記述スタイルを 我ながら完璧に模倣できてたりしたが、見破る人は見破るんだよ、これが。 コードを書くのにかかった時間の中で起こりうるスタイルの微小な変化が 時系列上に乗ってないと、不自然に見られる。 その場その場でのコードの模倣だけだと駄目なのよ。 プログラマーがそのコードに投じた作業時間と、それに伴う成長までをも 汲み取ってやらないと、偽造がバレる。 いや本当マジな話。 そして学生さんにはあまり関係のない話。 ついでに言うと身分を偽ってゴーストプログラマなんてやらなきゃならなくなった人間が この世にどんだけいるのかについては、俺は知らんぬ。
「前任の○○は鬱病になって飛びました」ってちゃんと伝えないと泥沼じゃない? たいして意味の無い責任回避のために嘘ついても、お互いのために良くない。
ゴーストプログラマって響きが甲殻みたいなだ 官庁から受けたお仕事だと逃亡しちゃったとは言いづらいかのう
モトコに取り締まられたい(;´Д`)ハァハァ
619 :
デフォルトの名無しさん :2006/09/05(火) 16:29:32
何か面白い宿題ないー?
620 :
デフォルトの名無しさん :2006/09/05(火) 16:36:47
621 :
デフォルトの名無しさん :2006/09/05(火) 16:52:30
あーーーっはっは、面白い、腹がいてぇ〜〜〜〜www
何、その、使い古されてもはや誰も使わない公園のゴミ箱に埋もれている、そんなギャクは。
623 :
学生 :2006/09/05(火) 23:21:38
こんばんわ〜 課題が解けないのでお願いします<(_ _)> 10個の任意の整数値(1〜100)を繰り返し入力し、それぞれの場合の 最大値、最小値、合計、平均値(平均値は小数点以下2桁まで求めること) を求めるプログラムを作成せよ。その際、それぞれの変数を max,min,sum,averageとする。 そのままです。 よろしくお願いします。
625 :
学生 :2006/09/05(火) 23:29:38
>>624 失礼しました。
[1] 授業単元:単元?
[2] 問題文:
>>623 [3] 環境
[3.1] OS: ペケピー
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限:明日の朝頃まで
[5] その他の制限:for文を使ってやれとのことです.
プログラミングは基本的なことしかできません
プログラミング以前の問題じゃないだろうか
>>623 お前は淘汰されるべきだ。
やる気がないのに単位だけ欲しがるな。
>>625 これ以上簡単にできない。
#include <stdio.h>
int main() {
int a[10], i, max = 1, min = 100, sum = 0;
double average;
for (i = 0; i < 10; i++) {
scanf("%d", a + i);
if (a[i] < min) min = a[i];
if (max < a[i]) max = a[i];
sum += a[i];
}
average = sum / 10.;
printf("max:%d, min:%d, sum:%d, average:%.2f\n", max, min, sum, average);
return 0;
}
この書き方なら、a[10]はa一つで済むな。
>>623 > (平均値は小数点以下2桁まで求めること)
2桁目は必ず 0 になるような気が...。
>プログラミングは基本的なことしかできません この問題は十分基本的なわけだが
これを提出して怒られてこい。 #include <stdio.h> #include <stdlib.h> #include <ctype.h> #define MIN_VAL 1 #define MAX_VAL 100 #define VAL_QTY 10 #define BUFFER_SIZE 256 #define FALSE 0 #define TRUE ~FALSE int IsDigitStrings(char* p_str){ if(*p_str == NULL) return FALSE; while(*p_str != NULL){ if(isdigit(*p_str++) == FALSE) return FALSE; }; return TRUE;} main(){ int max, min, sum; double average;{ int i; for(i = 0, sum = 0, min = MAX_VAL, max = MIN_VAL; i != VAL_QTY;){ int val; char str[BUFFER_SIZE]; printf("[%d]>", i); gets(str); if(IsDigitStrings(str) == FALSE){ printf("入力エラー : 10進数の数値を入力してください。\n"); continue;} val = atoi(str); if(val > MAX_VAL || val < MIN_VAL){ printf("入力エラー : 入力できる数値の範囲は%dから%dです。\n", MIN_VAL, MAX_VAL); continue;} sum += val; min = (val < min) ? val : min; max = (val > max) ? val : max; ++i;}} average = (double)sum / (double)VAL_QTY; printf("max = %d\nmin = %d\nsum = %d\naverage = %.2f\n", max, min, sum, average);}
633 :
デフォルトの名無しさん :2006/09/07(木) 22:20:14
なにそのムダに見にくいコード と1日以上前のレスに突っ込みを入れてみる
634 :
デフォルトの名無しさん :2006/09/08(金) 01:39:18
こんなもんだろ。 #include <string.h> #include <stdio.h> typedef int ELEMENT_TYPE; #define QUE_SIZE 10 enum { Q_SUCCESS = -1, Q_FULL = -2, Q_EMPTY = -3 }; typedef struct { ELEMENT_TYPE *buf, *end; } QUE; void initqueue(QUE *que, void *buf) { que->buf = que->end = buf; } ELEMENT_TYPE enqueue(QUE *que, ELEMENT_TYPE element) { if (que->end - que->buf == QUE_SIZE) return Q_FULL; *que->end++ = element; } ELEMENT_TYPE dequeue(QUE *que) { if (que->end == que->buf) return Q_EMPTY; ELEMENT_TYPE value = *que->buf; memmove(que->buf, que->buf + 1, sizeof(ELEMENT_TYPE) * (--que->end - que->buf)); return value; } int main() { QUE que; char buf[1000]; int v; initqueue(&que, buf); enqueue(&que, 1); enqueue(&que, 2); while ((v = dequeue(&que)) != Q_EMPTY) printf("%d\n", v); }
>623の問題を自分の勉強のつもりで取り組んでみました 小数点までもとめるのは、かったるいので省略 #include <stdio.h> int main(void) { static int sum; int a[10],i,b,average,min=1,max=1; for(i=0;i<10;i++){ printf("数値を入力してください"); do{ scanf("%d",&b); }while(b>100); a[i]=b; sum=a[i]; if(min>a[i])min=a[i]; if(max<a[i])max=a[i]; } sum/10; printf("平均値は%d",sum); printf("最大値は%d",max); printf("最小値は%d",min); }
640 :
637 :2006/09/08(金) 09:33:31
>>638 うぉおおお、最初と最後がつながってたのかorz
d(゚Д゚)☆スペシャルサンクス☆( ゚Д゚)b
回答者のレベルまで下がってるな 夏休みはまだ終わらないのか?
643 :
デフォルトの名無しさん :2006/09/08(金) 13:01:47
>>642 だからお前がレベルをどうこう言うならお前が出せっつーんだが?
まだこのスレの趣旨を理解していないでけぇ面するだけのヘタレが多いんだなw
いつのまにかいじれば課題ができそうなヒントを出す趣旨に変わってたのか 知らなかった
趣旨は「丸投げ厨を隔離する」ことだから回答の中身は割とどうでもよい。
と、丸投げ厨が申しております。
丸投げのほうがいいんだけどな 講義で毎週宿題出されるとこだったら、毎週毎週面倒見るのか?
丸投げ=沢山の宿題をまとめて放出 だとでも思っているのか?
ん?なんだその定義 依頼者に解かせようとヒント与えるやら、回答を理解してもらうために説明するやら そーいうことせずにただただ殺伐と宿題依頼と回答だけあればいいってこった
いつからここは個人の判断基準でレベルが決まるスレになったんだ? 丸投げって時点ですでに水準を決める基準なんてないんだよ 要するに、単位取得においては不可、ゴルフならOB、 入学以前に試験に合格していない、もはや評価される以前の場なんだよ、ここはw
ここはプログラム組むのが大好きな人が趣味で回答してるんじゃなかったんだね… なんか残念(⊃д`)
>>652 少なくとも漏れはそうだが何か。
#最近回答してないがな。
俺も娯楽のつもりでやってる。 でもまあ公衆の面前で発言してる以上、五月蝿い蚊の批判を受けることもあるだろ。 でも、このスレには勉強の為にコードを書いている人もいるらしいから、 そういうアレも多少はあってもいいんじゃないかと。 技術者なら他人の指摘を受け入れて技術を磨くべし。
俺は主にネタだな。 依頼者の表面上の要求だけは満たしている皮肉に満ち溢れているコードを出すのが好き。 まぁ、最近はネタ考えている時間がないからやってないけど。
俺は気分によって娯楽と勉強とネタが入り交じってるな。
ネタだと気づかずにそのまま転載する奴とか多いんだろうな…。 うちの学科では脈々と受け継がれている過去レポがあるのだが、 ご丁寧に誤字まできっちり受け継がれているせいで 毎年写した奴が晒される。
そりゃまた陰湿な文化継承してやがんなw
こんなところで宿題を聞いている時点で、本人は宿題よりも 提出納期の方が大事という事でしょ。 減らず口まで出してきて、そんなのにイチイチかまってあげてもね・・
別に普通に解き方のヒントが欲しいってこともあると思うが。 別にいちいち噛みつかんでも、聞きたい奴は聞いて、答えたい奴が答えれば。
一度人に頼むと後が大変だぞ? 自分で書くときにそれと同じレベルで書けないと 人にやらせてたことが一発でバレる。 同じ人が書いてくれるとは限らないから、毎回筆跡の違うものになるし。 高校あたりなら注意されるだけだけど、 大学だとその年次の全ての単位を取り消しにされかねないぞ。
単位を取り消しとかありえんどこの脳内大学だ
取り消しじゃなくてそもそも取得できない だろうな
後期に不正をやらかすと、前期の単位も消えますよ。
大学によるんじゃないかな・・・
俺何回かここで頼んだけど 皆理解できたら自分なりにアレンジくらいはしてるんじゃないのか?
自分はアレンジしているだけマシってか?
ここに宿題を丸投げするレベルの人間が、 果たして理解できるのかどうか、そこが問題なだw
人に聞いたら不正なのか?w
>>670 まあ、不正かどうかは正直微妙なところではあるけど、
一応宿題は自分のためにやるもだからなぁ...
2ch 丸写しをさせるために高い金出してる親の気持ちにもなってみれ。
社会人なら話は別。2ch だろうがなんだろうか、合法的な手段で業務
を遂行できれば ○
大学行ったことないのかなぁ、この人たち。
宿題が投下されないからこのような不要なレスで埋まっていくのです。
>>673 大学かどうかに関わらず、
世間一般の不正行為は全て「ばれなければ問題ない」わけだ
ばれなければ当然大学の単位が帳消しになることもないし、
ばれなければ、どこぞの県庁の裏金だって、
誰かさんのインサイダー取引だって、問題なかったわけだ
要はそれだけのことだw
というかここに出てくるくらいの事をできないんじゃ何も出来ないだろ
っていうか社会に出たことがないんじゃね?
宿題投下まだー? 後期もまだ始まってないとこ多いだろし当分この流れな悪寒・・・!
宿題投下されない内は自分たちで出し合ったり、 いいトピックを出して議論できるのが大人だろう、と言ってみるテスツ
じゃあ秋の新作アニメについて熱い議論を(ry
テレビ番組の予定表が載ってるサイトからアニメ欄だけを抜き出して表にし直せとか
そういやGコードを延々とリストアップしつづけるサイトってないの?
いまどきGコードを使ってる人っているの?
商品管理と親父の頭にバーコード使ってますが何か?
そこでバーコードが出てくるのがよくわからないが
親父が47
いまどきバーコードも2次元化してますが何か?
コード繋がりも分からないのか世
僕の肛門にもコードが繋がりそうです><
基本的にバレるものだとわからないくらい馬鹿なんだろうなぁ。 そういうのはさっさと淘汰されて居なくなるからいいけどね。
>>688 バーコードの「バー」が何を意味するか調べてからそういうことを言え。
「二次元バーコード」の検索結果 - 416,000 件の結果 (0.13 秒) 正式名称は 二次元コード もしくはQRコードなんだけど、 二次元コードは範囲が広すぎでよくわからんし、QRコード なんて一般人には通じない。
自演擁護しなくてもいいですよ
というか、バーコードは二次元だな。一次元、二次元、三次元について調べ直し!
QRなんて携帯の機能についてるだろ
QRコードで十分通じるだろ それに正式名称って二次元コードはQRコードだけじゃないし・・・ まぁかわいそうだから擁護してあげると、うちの携帯は QRコード読み取りアプリの名称が「バーコードリーダー」だな
>>696 図案としては2次元ですが、データの集積方向は1次元です。
つまり、二次元バーコードはバーが印刷面に垂直に並んでいるということで宜しいか?
>>698 それ普通にバーコードが読めてついでにQRコードも読めるって意味では?
読んでみれば?
ほんとだ バーコードも読める orz
別にいいじゃんなあ。 そんなん言ったらQWERTYキーボードだってキーなんか無いんだぞ。
>>707 キーボードって鍵盤なんだぞ。
鍵盤の鍵の出所はピアノのアレで、細長い白黒が食い合ってる様が
鍵に見えたからキーボード。トリビアにもならん。
そういう意味では、押し込みボタンの一つ一つをキーと呼ぶのは単なる後付。
そして拘泥するだけ馬鹿を晒す話。
ご清聴ありがとうございました。
では今日からSWボードと呼びましょうか
タイプライターのキーをswで置き換えたってキーだろ。
だから、バーコードのバーをドットで置き換えてもバーって言ってるんだろ。
713 :
680 :2006/09/10(日) 21:52:09
スレの流れにワロタ プログラマらしく話題の設計を事前に2、3回は推敲しようよι 突発的に組んでもろくな実装はできないと思われ
話題の設計は結構やってるんだけど、レスポンスが 安定しないからデバッグが難しいんだよ。
うわっ、なんでソースじゃないコードの話になってんだ?
宿題が出しにくい雰囲気になってる予感。
720がすごい宿題出すって
720にプレッシャーかけるなよ
どうぞどうぞ
[1] 授業単元: [2] 問題文(含コード&リンク): 分割された領域としてキューを用いるマージソートを作成せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:9/12 よろしくお願いしますよ
よく意味が分からないぜ。 マージソートの計算過程の、配列を二つに分割するという操作に、キューを使えってこと?
略してマジキュー …逝ってくる
がんばれーがんばれーたーまーちゃーん
724 :
sage :2006/09/11(月) 11:41:28
こんなんで応用問題なのか
FORTRANとかの課題をそのまま持ってきた感じだな
729 :
sage :2006/09/11(月) 13:05:44
>>728 ありがとうございます。
自分なりにこれを参考に、みないで作成してみます。
本当に助かりました。
>>727 何分、今月の頭から入門書からはじめたもので^^;
今後はなるべく気をつけたいと思います。
サイトをみて回ってて、scanfやgets()などがあまりよろしくないとは聞いていたんですが、
その理由がようやくわかりました。
ありがとうございました。
マージソートくらいのことでマジになっている m9(^д^)プギャー
ギャグだろ。
この流れワロタ
[1] 授業単元: ファイル入出力 [2] 問題 『指定したファイルに、文字列を挿入するファイルを作成せよ。(行数指定)』 ファイル名、文字列と行数を入力させ、もともと用意してあったテキスト(内容有) の指定した行数目に、文字列を挿入するんですが、どうやったらできるのか検討がつきません。 よろしければ、教授いただければと、思います。 よろしくお願いいたします [3] 環境 [3.1] OS: WindowsXP ProSp2 [3.2] VC 6.0 [3.3] 言語: C [4] 期限: 9/14日迄 [5] その他の制限: 別ファイルを作成して、文字列の内容を退避させるのは駄目だそうです。 よろしくお願いします。
>>735 釣り? 一般的に、テキストファイルの中間に文字列を挿入するにはファイルの内容を一旦退避する必要があるのだけれど。
#それとも、メモリ上に退避しろということなのかな?
>>736 普通はメモリ上に退避させると考えるだろ。
別ファイルを作成してって部分が読めなかったのか?
>>736 挿入するサイズの分だけファイルのサイズを増やし、
挿入終了位置より後ろのデータを全て挿入するサイズ分、後ろに動かす。
その後動かして開いた空間に文字列を入れる。
という方法を使えば退避なしに出来るんじゃね。
別ファイル作に作るのならメモリ上に退避させる必要ないじゃないか。
そろそろありきたりの課題と回答例を集めたサイトが欲しいところ
言い忘れてましたけど、対象とするファイルのサイズは4GB超えてる場合も対応する必要があるみたいです。
4GB以上でも認識するファイルシステムを採用しているOSでやってください
やってみた。いろいろ間違ってるだろうけど。責任はとらない。 main(int argc, char* argv[]) { FILE *in, *out; const char str = argv[3]; int ln = atoi(argv[4]); in = fopen(argv[1], "rb"); out = fopen(argv[2], "w"); while(1) { int c; if(c == EOF) abort(); if(c != '\r') { if(c != '\n') { fputc(c, out); continue; } } else if((c = fgetc(in) != '\n') ungetc(c, in); if(ln == 1) break; fputs("", out); ln--; } fputs(str); while(1) { char buf[1024]; int len; if(0 => (len = fread(sizeof(*buf), sizeof(buf), in)) break; fwrite(sizeof(*buf), len, out); } fclose(in); fclose(out); return 0; }
735です。 やはりおかしいので、再度教授に確認をとったところ、 別ファイルの作成はOKとのことでした。 お手数お掛けしてすみません。 ただ、ファイル作成せずできるのは興味はありますが。 ちなみに、741は私じゃないです TT
>>737 普通は、作業ファイルを使う。
何故なら、挿入処理がなんらかの事情で中断したときにファイルが破壊されるのを敬遠するから。
#そうでない糞アプリもあるが、それは別の問題。
>>738 その方法も、同様の問題を孕んでいるね。
>>739 ミスリードも甚だしい。
>>740 言い出しっぺの法則。
>>744 1行目から正しくないばかりか、3行目でエラーが出るとはなかなか剛毅なソースだな。
>>746 お前の言う「普通(の方法)」は問題文に明記された指定よりも優先されるのか?
ファイルに退避せずに処理する方法がある以上、それを求められていると考えるのが
「普通(の態度)」じゃないか?
問題文が全てと思うか、問題文の妥当性も疑うかのスタンスの違いじゃね。 後者の立場だからこそ、>736は「釣り?」って書いてるんだろ。 >736もどうかとは思うが、結果的に正しかったわけだな。
749 :
デフォルトの名無しさん :2006/09/11(月) 18:54:38
どこからどうみても釣りです 本当にありがとうございました
300バイトのファイルの100バイト目に50バイト挿入する場合は、 100バイト目から最後までを読み取って、150バイト目から上書きし、100バイト目から 挿入する50バイトを上書きする。 これで別ファイルはいらなくなる。
>>746 ごちゃごちゃ言ってねーで、回答してみろや、な?
753 :
744 :2006/09/11(月) 20:45:25
いや、2GB超えたとこでバグると見た。
intかw
それと64bit対応の関数使わないと正しい値が取得できない。
>>751 ただし、途中で操作に失敗すると、元のデータも失う諸刃の剣。
成る程。そういうやり方もあるな…。 ファイルサイズ意識してないところがスマートですね。
size_t が見向かれもしないところに泣いた
>>761 #define __USE_FILE_OFFSET64 1
が必要になるんじゃないの?
765 :
761 :2006/09/12(火) 01:36:02
>>763 lenとbuflenはsize_tで脳内修正よろ。
今気付いたけど、片方のバッファは大きくしても良かったな、これ。
>>764 そこは理想論て事で。fseekの相対移動の方が良かったかも。
本来fpos_tの中身は隠蔽されているのだから、素で動作して欲しいところだけど。
766 :
デフォルトの名無しさん :2006/09/12(火) 08:29:03
よろしくお願いします プログラム基礎なのに問題のレベル高すぎ>< [1] 授業単元:プログラム基礎 [2] 問題文:メールアドレスか判定する関数を作りなさい。 BOOL IsMailAddress(char *Addr); 引数からわたされたAddrがメールアドレスのフォーマットに 則しているか否か判定する。 則していればTRUEを返し、そうでなければFALSEを返す。 [3] 環境 [3.1] OS:Windows [3.2] VC++ 6.0 [3.3] 言語:C++ [4] 期限:9/17 [5] その他の制限:特になし
>メールアドレスのフォーマット kwsk
lex/yacc様の出番だな。
正規表現を扱うクラスがあれば大した事なかろう
Boost.Regexとか鬼車とか使っていいのん?
こんなことすら投げ出すような連中が、何もできないくせに プログラマ面して自分の部下として配属されるかと思うと寒気がする。
>>773 お前のような上司に当たるほうが不幸せだろうがな。
|
|
|
Σ°|||||Ε
>>773 J
.∩____∩: :.+
ワク. | ノ ヽ+.:
:.ワク/ ● ● | 食べたいクマー
ミ '' ( _●_)' 'ミ
. / ._ |_/__ノヽ
-(___.)─(__)─
776 :
デフォルトの名無しさん :2006/09/12(火) 13:37:48
>>773 あるいはお前の上司になるかもなwwwwwwwww
学習能力もないゴミが学生面してんなよ。 脳みそ使うのが嫌ならさっさと退学しろ。
778 :
777 :2006/09/12(火) 13:54:35
[1] 授業単元: 実験1
[2] 問題文(含コード&リンク): ナインメンズモリスいう最古のパズルゲームの必勝手順(先手勝ちor後手勝ちor引き分け)を解くプログラムの作成。
ナインメンズモリスの紹介:
http://www.bu.st8.arena.ne.jp/game.hp/morris/1.html [3] 環境
[3.1] OS: Windows/Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2006年10月まで
[5] その他の制限: 特になしです。
ちょっと無理なお願いで難しいかもしれませんが、
どうかお助けください〜。
頼みます。
あと3週間もあるのに丸投げとは、ハナから自分でやる気がないんだな。 後期が始まる前に退学したら?
まぁまぁ 顔真っ赤にして怒るなよw
性帝トーマス(w
どこをどう読んだら怒ってるように見えるんだろう。
期限が迫ってからだと何故もっと早く言わなかったかと怒られるし、 質問のタイミングが難しいな。
>>784 だから丸投げするくらいなら早く質問しろと。
切羽詰ってからじゃ本当の意味での丸投げになるだけだがw
期限の長い課題を3日後までの期限だと偽ってここに投げればよい。
わからんからと泣きついてきたくせに自分はさっさと帰宅する そんな使えん後輩を思い出させるからやめれ。
>>786 そうそう。そうすれば誰もやらないからw
期限短いからどうせタイムアウトで無駄になるから やらねーってやつが増えるだけかもなw
だいたい1週間前くらいがオススメかな
課題の規模にもよるな。
>>792 千日手になる場合全部計算して検出か・・・まんどいな('A`)
これって自分で解法見つけて解くんじゃないの?
795 :
766 :2006/09/12(火) 23:16:25
>>770 様はじめご意見を頂けた皆様、大変感謝いたします。
これから770をじっくり読んで勉強したいと思います。
ありがとうございました、また次も助けてください^^
>>794 96年にやっと解法が見つかったのを、一学生が別の解き方を発見できるとは思わないが。
総当りだと膨大な時間が掛かるのは目に見えてるし。
解法を見つけて、それをプログラム化しろって事なんだな
798 :
デフォルトの名無しさん :2006/09/13(水) 02:54:16
Sage忘れ失礼しました
こういうメモリリークもりもりなソースを見ると寒気がする。
漏れ方がハンパ無いなwww 開放くらい自分でやってくれって事なんだろうけど、
[1] 授業単元: C言語基礎問題集
[2] 問題 コマンドプロンプトで動作する、COPYコマンドと同様な動作をするプログラム
、My_COPY.exeを作成しなさい。ただし、エクセルやワードファイルもコピーできるようにすること。
※一応自分なりにやってみたのですが、どうしてもエクセル、ワード複製できませんでした。
よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2655.txt [3] 環境
[3.1] OS: WindowsXP
[3.2] VC 6.0
[3.3] 言語: C
[4] 期限: 9/15日
[5] その他の制限:
バイナリで出入力しただけではダメなのでしょうか。
入門書で乗っている範囲+ネットで調べてがんばってみたのですが。
よろしくお願いいたします。
>>804 バイナリ転送で何故fscanfとfprintfなのか、
そこを訊ねたい。w
>>724 です。
>>728 さんのを参考にして、提出したんですが、quit関数に引数を渡す必要がないと、言われてしまいました。
自分の考えではbuf内の文字列を変更するため先頭アドレスの引渡しは必要だと思うのですが、なにか別に方法があるのでしょうか?
戻り値は真偽の数値を渡すので使用できませんし。
よろしくお願いいたします。
>>805 さん
そうですか、出力関数に問題があるのでしょうか。
何分持っている入門書レベルでは、ファイル出力をそこまで扱っていないため、
参考サイトなどがあればお願いしたいのですが。
808 :
805 :2006/09/13(水) 10:20:26
811 :
805 :2006/09/13(水) 11:00:57
copyコマンドって結構大変じゃない?ワイルドカード対応とかも必要だし。 C:\>copy /? 1 つまたは複数のファイルを別の場所にコピーします。 COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B]送り側 [/A | /B] [+ 送り側 [/A | /B] [+ ...]] [受け側 [/A | /B]] 送り側 コピーするファイル (複数可) を指定します。 /A ASCII テキスト ファイルとして扱います。 /B バイナリ ファイルとして扱います。 /D 受け側のファイルが暗号化が解除されて作成されるようにします。 受け側 新しいファイルのディレクトリまたはファイル名 (複数可) を指定し ます。 /V 新しいファイルが正しく書き込まれたか検査します。 /N MS-DOS 形式以外の名前のファイルをコピーするときに、利用可能な らば、短いファイル名を使用します。 /Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示し ません。 /-Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示し ます。 /Z ネットワーク ファイルを再起動可能モードでコピーします。 環境変数 COPYCMD でスイッチ /Y が設定されている場合があります。 このスイッチは、コマンド ラインから /-Y が指定されると無効になります。既定 では、COPY コマンドがバッチ スクリプトから実行されていない場合、上書き確認 メッセージが表示されます。 複数のファイルを付加するときは、受け側に 1 個のファイルを指定し、送り側に 複数のファイルを指定します (ワイルドカードを使うか、ファイル1+ファイル2+
813 :
804 :2006/09/13(水) 11:28:08
>>811 コピペしてみたらちゃんと動作しました。
これかれ、流れを一度見直して解読してから、自分で1から書いてみようと思います。
ありがとうございました
>>812 そうなんですか、一応実行例みると、ファイルを複製してる機能としか見えないので
>>811 さんの答えで問題ないかと
思われます。 ご指摘ありがとうございます。
NTFSの副ストリームは対応しなくていいの? とか混乱させてみる(w
815 :
798 :2006/09/13(水) 13:13:24
問題間違えというバカなことをやってしまいました、すいません
[1] 授業単元: C言語研究1
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2658.txt [3] 環境
[3.1] OS:Windows XP Pro SP2
[3.2] コンパイラ名とバージョン: Visual Studio .NET 2003
[3.3] 言語: C++
[4] 期限: 2006/9/13 23時59分
[5] その他の制限:
上記のソースに含まれるエラーを修正せよ。
ただし、malloc,free関数の使用をやめ、演算子を用いて同様の処理を行う。
「参照」を利用してエラーを会費する。
neg()関数を呼び出すときに使用したoオブジェクトのpがさす整数を格納するメモリが
main関数で使用する前に解放されてしまっていることまではわかっています
どうぞよろしくお願いしますm( . . )m
816 :
724 :2006/09/13(水) 14:29:56
>>815 free(p); -> delete p;
p = (int *)malloc(... -> p = new int;
int neg(dyna ob) -> int neg(dyna& ob)
818 :
777 :2006/09/13(水) 19:04:02
>>792 様を始め様々な意見をありがとうございます。
ただ決して丸投げしてるわけではなく、自分では精一杯頑張っているつもりです。
解法は論文通りでいいので、それをプログラム化してほしいということです。
自分でやれ
やだよ、一人でやるオナ○ーなんて
それ普通は一人でやるだろ
何なら男2人でやるか(藁)
男女あわせて複数人でやる、耐久レースもあります。
解法があるのにコード書けないって お前本当にC言語勉強してるのか? というか、やる気ないだろ。
>>824 じゃあお前がやってやれよ。それとも口だけか?カス。
>724 ぐろーばる変数を導入しり
たらい回しにした挙句、結局誰も書かない予感。
プログラマが面倒な事を自ら進んでやるケースは 唯一自分が得をする場合だけだ。w
解法があったらつまらんし。 それに元々大して面白いモノでもないんだから、論文通り実装なんてやってられるか。
[1] 授業単元:文字列 [2] 問題文: 関数int GetFreq(char c, char *s)を用いて、文字列の中から 実行時に与えた1文字の出現率を調べるプログラムを作成する 関数の定義 int GetFreq(char c, char *s) 第2引数(上記定義の変数s)に与えらた文字列の中に, 第1引数(定義の変数c)で与えた文字が何個あるか数え上げる そして,数え上げた結果を戻り値として渡す。 第1引数(変数c)には,探す文字を渡す。 第2引数(変数s)には,検索対象となる文字列を渡す。 戻り値は,見つかった文字の個数を返す。 実行結果の例 (入力)This is a pen. (入力)i (結果)0.142857 (2/14) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ:GCC [3.3] 言語:C [4] 期限: よろしくお願いします
int GetFreq(char c, char *s) { int count = 0; for(; *s; s++) if (c == *s) count++; return count; }
ぷよぷよのカセット貸しただろ。早く返せよ。
836 :
A :2006/09/14(木) 22:06:07
837 :
デフォルトの名無しさん :2006/09/14(木) 22:25:31
おねがいします。 自分のファイル名(x.exe)を読み込んで xの部分がAすなわちA.exeだったらaを実行して xの部分がBすなわちB.exeだったらbを実行する っていうようなCのプログラムを教えてください。
>>836 pgrしとくべきなのかのう・・・
画像から文字検出とかは、それこそ色々やり方あるから講義で説明されたなりしたのを
使ったほうがいいと思うんだぜ
840 :
A :2006/09/14(木) 22:33:37
>>838 文字までは検出しないんです・・・
ナンバーの枠を検出できたらいいんですが
>>841 そんな環境依存に手をださんでもargv[0]で十分じゃね。
843 :
デフォルトの名無しさん :2006/09/14(木) 22:47:33
>>842 すいませんまったくの初心者なんでサンプルコードみたいなの
いただけるとうれしいです
844 :
A :2006/09/14(木) 23:10:06
>>841 僕もまったくの初心者で
GetModuleFileName(NULL,buf,sizeof(buf))
をどぉしたらいいとかわからないのですが・・・
>>844 実行ファイル名取って、ナンバーが識別できるのか?w
いいカオス。 そろそろ次の課題が出ると、なお良し。
847 :
デフォルトの名無しさん :2006/09/15(金) 00:07:14
.net2003vcでGDライブラリを使ってグラフを作成したいのですが、 環境構築ができません。 どなたか、経験ある方いませんか?
いいかげん、講義さぼった上で友達に聞いた課題をここに丸投げするのは止めろよ。 無駄なんだから。
mixiなんて糞益体も無いものに招待なんかされたくねえ mixi株を100万株俺に無償譲渡で宿題解いてやる
>>844 #include <stdio.h>
#include <libgen.h>
#include <string.h>
void methodA() {
printf("method A\n");
}
void methodB() {
printf("method B\n");
}
int main(int argc, char **argv) {
char *program_name;
program_name = basename(argv[0]);
if (!strcmp(program_name, "a.exe"))
methodA();
else if (!strcmp(program_name, "b.exe"))
methodB();
return 0;
}
853 :
デフォルトの名無しさん :2006/09/15(金) 04:09:30
>>836 mixi見れないよヽ(`Д´)ノ ウワァァァン
mixiなど俺の見れない所にソースをうpするなんて、喧嘩売ってんの?
外部関数って何を指して言ってるんだろうlibc使っちゃダメってこと?!
>>853 問題文のテキストには
>外部関数は使用禁止とする
>853には
>外部変数は使用禁止
外部変数と外部関数じゃかなり意味が違うんだがw
しかも範囲もよく分からんw
普通にstdio.hは使っていいんだよな?
OSが限定されてるからWin32APIつかえとかか?
あとbcc5.6って?
858 :
デフォルトの名無しさん :2006/09/15(金) 14:15:01
>>853 授業やってんのにさっぱりのド素人って言ってる意味がわからん。
課題が出るたび、誰かに解いてもらってるのか?いみねーだろ
このスレは丸投げするクズの隔離病棟です。
おちこぼれ捨て場
862 :
デフォルトの名無しさん :2006/09/15(金) 18:51:33
このおち○こぼれどもめ。
このスレは宿題と称して無駄な作業をさせて同業者の足を引っ張るスレです 学生のためになりませんからいくら現実逃避したくても誘いにのってはいけません 私が言うのですから間違いありません
865 :
デフォルトの名無しさん :2006/09/15(金) 18:59:53
俺が思うに、プログラミングのこと教えてあげるのっていうことは、 なによりも自分のためになると思うんだけど
ある程度の課題ならそうかもな ここに投下される大半は基本中の基本すぎてためになることないけどな
2006年 1月号 (第廿玖景) できる奴は実行し、できない奴ほど教えたがる。
プログラミングっていう観点からすれば、「実行する=ちゃんと動くプログラムを書くこと」だろうから、 このスレではそれが成り立たない気がするぜ。 その言葉の真意を察すると、 「教えるだけの人」っていうのは、口先だけで何だか正しいかどうかも分からない理屈を並べているだけで、 何もしないor出来ない人の事を指しているんだと思うよ。 本質的な意味は「机上の空論」に近いんじゃないかな?
自分の言葉の真意を察するなんて多重人格なのか?
その って自分が直前に言ったことしか示せないんだっけ? 文脈により相手の言ったことも示せたと思うんだけど。
日本語に不自由なやつが涌いてますねw
どうしてわざわざ人を傷つけること言うんだろう(´・ω・`) おかしいと思ったら指摘してくれよ。
>>871 っというお前が日本語が理解できない在日朝鮮人なんだろ?
日本語は日本人のための言語、頼むから朝鮮民族が
他国にずけずけと入り込んで生活保護を受けているくせに
日本語で「日本嫌いだ」とか言わないでくれよ?な?
頼むから祖国に帰って税金を納めて徴兵もされてこいや、な?
[1] 授業単元:ファイル、構造体 [2] 問題文: 一行に名前と身長[cm]、体重[kg]がそれぞれスペースで区切られて左詰めにされ、 且つ複数名のデータが、それぞれ改行で区切られて記述されているテキストファイルが ある.その末尾に新たに入力された1名分のデータを追加してファイルを上書きする プログラムを書きなさい. 入力される名前はスペースのない20文字以内の英文字 身長,体重は整数で記述をする プログラムの実行後,入力すべきファイル名を受け付ける 構造体の名前をdataで、構造体のメンバは 名前はchar型とし,nameとする 身長はint型とし,heightとする 体重はint型とし,weightとする [3] 環境 [3.1] OS:winXP [3.2] コンパイラ:gcc [3.3] 言語:C 長くなりそうですがおねがいします。
>>874 struct data{
char name[21];
int weight,height;
};
main(_,filename){
struct data dat;
void*fp;
printf("filename? ");scanf("%d",filename);
printf("name ? ");gets(dat.name);
printf("height ? ");scanf("%d",&dat.weight);
printf("weight ? ");scanf("%d",&dat.height);
fprintf(fp=fopen(filename,"a"),"%s %d %d\n",dat.name,dat.weight,dat.height);
fclose(fp);
}
876 :
875 :2006/09/15(金) 23:03:27
あ、bugってた × printf("filename? ");scanf("%d",filename); ○ printf("filename? ");gets(filename);
いまだに scanf を使う香具師があとを絶たない件
別にscanf使ってもいいんじゃね?宿題くらい。
人の宿題やるときくらいにしか使わないもんな
>>878 未だにscanfも使えない初心者m9(^д^)プギャー
普通、scanfみたいな問題ある関数は初心者以外は使わない。 まともな入力処理にしたければfgetsとsscanfを組み合わせて使え。 正しく入力される場合しか想定されてないプログラムなど糞だ。 まあ、ここに丸投げするようなレベルのアホにはscanfで十分だろうけど。
>>882 書き込み疾きこと風の如し、
リアルの前では徐かなること林の如し、
2ちゃんで怒り狂うこと火の如し
PCの前を動かざること山の如し
>>878 scanfを使って、初心者らしさを演出してるんですよ。
>>875 遅くなりましたが、ありがとうございます
データファイルがいくつもあるフォルダで プログラムを実行し、ファイルを読みとるため、 データファイル名を入力するとき、入力補完機能をつけるにはどうすればよいのでようか? 長いファイル名をイチイチうつのが面倒なのですが UNIX環境みたいにscanfで文字を入力する際に補完とかできないかと思いまして
マルチ
>>887 readlineはGPLだから安易に使うわけにはいくまい。
890 :
デフォルトの名無しさん :2006/09/16(土) 12:14:35
[1] 授業単元:プログラミング言語 [2] 問題文:数値をキー入力し、偶数、奇数を判定し、表示せよ。 [3] 環境 [3.1] OS:winXP [3.2] コンパイラ:gcc [3.3] 言語:C [4] 期限: 平成18年9月17日24時まで よろしくお願いします。
891 :
886 :2006/09/16(土) 13:04:36
>>887 Linux環境です
scanfで入力画面にうつってもtabで補完されないです
>>890 #include <stdio.h>
int main() {
int num;
if (scanf("%d", &num))
printf("%s\n", num % 2 ? "odd" : "even");
return 0;
}
>>891 だったら、なおさらreadlineを使え。
整数でないときは偶数・奇数の概念ないのでは?
そうじゃなくて、実数値が入力されてきたらどうするよ? ってことだと思うぞ。
それは仕様が決まってないから未実装 (=どうなるかわかりません) でいいんじゃない。 どうなるか知りたかったら、ちゃんとそこまで書いた問題をよこせ。
不定になるのは未定義と言うな。 未実装だと仕様は決まってるけど、まだ作って無いだけを指すことも多い。
puts(num % 2 ? "odd" : "even"); putsとかputcharの事も忘れないであげてください……
正しいソースコードを入力できないプログラマがダメな奴だというのと同じくらい、 プログラムが求めている正しい入力ができないユーザはダメな奴だ。 そういう奴らは両手の指を使え。
901 :
デフォルトの名無しさん :2006/09/16(土) 22:40:25
[1] 卒業研究: [2] 質問です。 条件 AさんとBさんがいます。AさんとBさんは通信ができます。 AさんとBさんが通信を開始し、終了すると、その間の記録がログファイルとして 記録されます。 通信の開始は、キーボードからスタートと入力することにより開始されます。 終了は、キーボードからエンドと入力することにより、終了されます。 要求 通信を自動的に1時間ごと切り、1時間ごとのログファイルを作成したい。 アルゴリズムだけでもいいので よろしくお願いいたします。 [3] 環境 [3.1] OS: WindowsXP [3.2] Visual C++6.0 [3.3] 言語: C++ [4] 9月21日 よろしくおねがいします。
>>901 何層からのログを取りたいのか
チャットのログを保存したいとかだったらぶちころすぞ(´・ω・`)
>>901 誘導されてきたんなら、そう書いた方がいい。
マルチにも見えるぞ。
全体的に意味がよくわからんが、
一時ファイルにログを追加していき、切断のタイミングでファイルごと、
移動・リネームして一時間ごとのファイル名に変更、
一時ファイルは中身を削除して、さいしょからログを取るって流れじゃダメなのか?
不明点大杉。
・1時間ごとに切断するというのは、一時間毎にエンドとスタートを手動入力するのか?
・AさんとBさんというのは、システムではなく、生身のユーザなのか?
・つーか、卒研なら死ぬ気で手前でなんとかしやがれボケ
>>901 こんなんが卒業研究としてまかり通るのか?
恐ろしい大学もあるもんだ。
だよな。。流石に卒研は…
ソケットプログラミングの演習にしか思えないな
BSDソケットじゃつまらないから、受け狙いでDirectPlayを使え。
単に「通信」としか書かれてないんだから RS232Cを使った通信でやってみなよ。
>>905 卒研本番になって初めて基礎的な勉強を始める馬鹿というのもたまにはいる。
大学名ぷりーず
912 :
デフォルトの名無しさん :2006/09/17(日) 08:22:56
みなさん辛い意見でw 通信というのは気にしないでください。 そこのプログラムはできています。 AさんとBさんが通信をするとログファイルが生成される。 これもプログラム済みです。 ただ、その通信をキーボードからスタートさせ、キーボードからエンドと入力するまで 、その通信を自動的に1時間ごとに切り、1時間ごとのログファイルを生成したいのです。 よろしくお願いします。
913 :
デフォルトの名無しさん :2006/09/17(日) 08:26:46
補足 流れとしては キーボードからスタート入力→通信開始→1時間経過→通信終了→ ログファイル生成→通信開始→1時間経過→通信終了→ログファイル生成 →キーボードからエンド入力→終了。 みたいな感じです。 あとこの質問はほかのスレから誘導されてきました。 よろしくお願いします。
>>912 画面に表示されるタイミングなり、通信のタイミングなり、自分のログを取りたいタイミングの
関数をwrapする関数を作り、それで元の関数を置き換える。
そのwrapする関数内でログに出力する。
ログの出力は、毎回ファイルオープン、書き込み、クローズを行う。
また、最後に出力された日時をstatic変数などで覚えておき、時刻の変わり目でログファイルの
切り替え(ログファイル名の変更)を行う。
む、書き込んでいる間に変な補足が。
>>914 は忘れてくれ。
>>913 をそのままコードに起こすだけのようにしか見えない。
何を悩んでいるのかサッパリ解らん。
917 :
デフォルトの名無しさん :2006/09/17(日) 08:51:25
>916 コードに起こしてみていただけますか? 悩んでいる点としては、キーボードから入力をすると開始されるまでは、 わかるのですが、その後その通信を1時間ごとに切らなくてはいけない。 それをキーボードからエンドと入力されるまで、ずっと繰り返す。 この点がどうプログラムしていいかわかりません。
エンドの指示があるまでループすりゃいいじゃない
入力を標準入力から読むようにしてて、その入力待ちでタイムアウトをコントロール出来ないとかそういう話じゃない? よく知らないけどpselectとかでIOの状態を見てから読みに行けばいいのかな? コンソールアプリに拘らなくていいなら、MFCとか.NETとか使ってGUIアプリのフレームワークの中でやればそういうことと無縁で済むかも知れない。
単にタイマーの使い方がわかりませんってだけな気もする 誘導元ってどこなんだぜ?
環境がWindows限定なんだから、 別にtimer用スレッド立てて、そっちでログ制御もやればよくね?
// メインスレッド while ( gets() ) { if ( 通信中&サブスレッド死亡 ) 通信停止 if ( "start" ) 通信開始&サブスレッド開始 else if ( "end" ) サブスレッド停止&通信停止 else 通信開始してるなら送信 } // サブスレッド do { // 一時間で自動切断ならこのループはいらない while ( 一時間経つまで ) { if ( メインスレッドから停止指示 ) break; select(); // 250ms位? if ( IS_SET(受信) ) 受信文字列出力 } ログ書き出し } while ( !メインスレッドから停止指示 ); かなり適当だけど、こんな感じ?
卒業研究なんだ・・・('Д`;)
なんか絶望的なまでに日本語がダメっぽいんだが、これって本当に卒業目前の大学生なのか?
高専 or 専門とか? そこに卒研があるのかどうかは知らないが。
専門でもあるとこはあるみたいだね
大学名ぷりーず
もっと学ぶべき言語があるはずだ!
>>927 「大学どこよ?おいらっち早稲田なんやけど〜wwwwww」
>>901 「東大です」
927「・・・え・・・!?」
901「東京帝国大学です。」
927「・・・う、うわあ・・・ああ・・・ああああああああああ(イスから転げ落ちる)」
901「どうかしましたか?」
927「ああ、あふゥッ・・・ひいいい・・ガクガク(足が震える)」
901「やだなあ、そんなにびびらないで下さいよ。ちょっと頭がいいだけです
から^^」
927「ああ・・あ・うんっ・ああ・・・ビクンビクン(小水を漏らす)」
901「ちなみに理3です。」
927「あんっ!ああん・・らめ・・・もうらめえ!ビクンビクン(射精する)」
930 :
927 :2006/09/17(日) 21:37:17
まぁ、私は高卒なわけですがw
931 :
デフォルトの名無しさん :2006/09/17(日) 21:39:06
>>922 ありがとうございます。参考にしてみます!
あと卒業研究というのは、これじゃあありません。
もちろん。少し使うだけです。こんなんで卒業できたら、苦労しませんし。
みなさん親切にありがとうございました!
少し使うだけのとこがわからないならメインの部分も相当わかってないんだろうな・・・
いや、さすがに誰もこれで卒業するとは思ってないだろ・・・ こんなのを聞いてるようで卒業できるのかって思ってるだけで・・・
院生にちょっとプログラムの手直しするよう頼まれたってとこじゃね?
935 :
デフォルトの名無しさん :2006/09/17(日) 22:01:21
>>932 正解!そうなんです。ぜんぜん分かってません!
本当に卒業できるかな?
就職決まってるし、ヤバス!
>少し使うだけです。こんなんで卒業できたら、苦労しませんし。 なら聞くなや…
938 :
デフォルトの名無しさん :2006/09/18(月) 21:25:03
3月末までに3回くらい再発表のチャンスがある。 割と何とかなるもんだ。
大学によっては何回も発表のチャンスがあるんだ・・・
恋のチャンスをください
>>941 総当りでその辺歩いている子に声掛ければ?
20人くらいに声掛けて一人も釣れなかったら恋は諦めろ
あきらめます
「Javaによるアルゴリズム事典」(技術評論社)に載ってる 安定な結婚のトピックはちょっとだけ面白かった
>>944 「C言語によるアルゴリズム事典」じゃだめなん?内容同じでそ?
947 :
デフォルトの名無しさん :2006/09/21(木) 12:31:30
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
@次の代入を実行したあとの変数aと変数bの値を予測せよ
例題 a=50; ++a; 答えa=51
問題1 a=50; b=++a; 答え a=? b=?
問題2 a=66; b=a++; 答え a=? b=?
問題3 a=30; b=-a; 答え a=? b=?
問題4 a=31; b=a--; 答え a=? b=?
A下記を参考に 「入力される実数が負の数の場合」に四捨五入するプログラムを完成させよ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2652.txt [3] 環境
[3.1] OS: (Windows/Linux/等々) WindowsXP
[3.2] ボーランドC++コンパイラ
[3.3] 言語: Cのみ
[4] 期限: 明日まで・・お願いしいます;;
[5] その他の制限:
問題文が間違ってましたごめんなさい 正しくは 問題3 a=30; b=--a; 答え a=? b=? 素人で全くCプログラムが分かりません。助けて下さい。お願いします。
負の数の四捨五入の定義を示してくれ。あと、サンプルが違うぞ。
950 :
デフォルトの名無しさん :2006/09/21(木) 13:20:08
元金100万円を年利率0.1%で預けた場合、 福利計算の元利合計WOが元金a円の50%を超えるには何年かかるか計算しなさい。 なお、複利計算で生じる1円未満は切り捨てのこと。 お願いします。
951 :
デフォルトの名無しさん :2006/09/21(木) 13:24:39
953 :
デフォルトの名無しさん :2006/09/21(木) 14:09:52
>>953 それすごくmixiでも見た記憶があるんだけど
955 :
デフォルトの名無しさん :2006/09/21(木) 14:29:16
すごく初歩的なことですみません。 2次元配列とfor文を使って 1 2 3 4 5 6 7 8 9 と表示させるにはどうすれば出来ますか?
956 :
955 :2006/09/21(木) 14:41:57
3次元みたいです
957 :
デフォルトの名無しさん :2006/09/21(木) 14:54:16
>>953 #include<stdio.h>
int main(void)
{
int seisu;
double jissu;
printf("実数=");
scanf("%lf", &jissu);
seisu = jissu - 0.5;
printf("%lf の四捨五入は%d です。\n", jissu, seisu);
}
>>947 ちゃんと講義に出席して、一番前の席に座って話を聞け。
それだけでわかるだろ。
959 :
デフォルトの名無しさん :2006/09/21(木) 15:12:33
>>955 配列をどこに使うんだ?
#include <stdio.h>
void main(){
puts("1 2 3\n4 5 6\n7 8 9\n");
}
960 :
デフォルトの名無しさん :2006/09/21(木) 15:14:49
>>958 ここは落ちこぼれの集まるとこだから、そいつらのためにならないように、俺たちが解いて
落ちるとこまで落とせばいいんだぜ?
961 :
957 :2006/09/21(木) 15:20:56
ごめん、
>>957 ちょっと訂正。
main 関数の戻り値に int を宣言しときながら、最後 return 0 するの忘れてた。
減点対象になるかも知れんので訂正。
#include<stdio.h>
int main(void)
{
int seisu;
double jissu;
printf("実数=");
scanf("%lf", &jissu);
seisu = jissu - 0.5;
printf("%lf の四捨五入は%d です。\n", jissu, seisu);
return 0;
}
>>955 #include<stdio.h>
int main(void)
{
int i,j;
int hairetsu[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d ",hairetsu[i][j]);
}
printf("\n");
}
return 0;
}
963 :
デフォルトの名無しさん :2006/09/21(木) 15:43:19
>>957 >>960 ありがとうございます!何度も丁寧にすみません。無事にコンパイルできました。重ね重ねお礼申し上げます。明日に間に合いそうです。
>>958 >>960 毎回欠かさずに授業に出ているのですが、さっぱりです。
>>954 mixiはやってないので分かりませんが、mixiに同じような問題があるのでしょうか?mixiやってみます!
厚かましいのですが、@の問題も分かる方がいらっしゃいいましたらよろしくお願いいたします。
964 :
955 :2006/09/21(木) 15:44:21
>>959 膨大な数値を表示する場合のときforなどを使わないと面倒なので学んで置きたかったんです。
>>962 ありがとうございます!
>>961 それだと、-0.5を四捨五入すると-1になるけど、0.5の
四捨五入は1なので、四捨五入すると0になる範囲が
ほんのちょっと他の整数より狭いんだけど。
問題1 a=50; b=++a; 答え a=51 b=51 問題2 a=66; b=a++; 答え a=66 b=67 問題3 a=30; b=--a; 答え a=29 b=29 問題4 a=31; b=a--; 答え a=31 b=30 だっけ。。 (a=a+1;って書くから 苦手なんだなw)
>>965 0を中心に正負が繋がった数列上で考えた場合、0.5以上 が 1 になり、
0.5 未満が丸めて 0 になる範囲なら -0.5 以上は 0 になるべきという意味?
そこまで、数学的厳密さは要求されてない問題だと思う。それに負数の
四捨五入自体の数学的定義にそもそも曖昧さがあるものだし。
もし、正負の一貫性を要求するとしたら、基本的に負の場合も 0.5 を足すべき、
という事になるだろうけど、そもそも“四捨五入”という行為には数学的な正負の
一貫性とかは問われてないと思う。
設問からして正の四捨五入とは別個に負の四捨五入を作らせてるわけだし。
個人的には、表計算ソフトの ROUND 関数に負数を放り込んだときに返ってくる
答えと同じ思考の四捨五入で答えればよい問題だと思う。
968 :
927 :2006/09/21(木) 17:14:15
>>966 というか、前置インクリメントか、後置インクリメントかで意味が変わってしまうようなコードの書き方自体がC言語の瑣末な言語仕様に依存したものであり、可読性も低く推奨できない。
当然意味を知っていて読めないといけないものだけど、宿題としては適切でないね。
悪いコード例を読み解きましょうなんて課題は、出題者の自己満足でしかない。
もっと重要なことをやるべきだろうに。
>>968 >というか、前置インクリメントか、後置インクリメントかで意味が変わってしまうようなコードの書き方自体がC言語の瑣末な言語仕様に依存したものであり、可読性も低く推奨できない。
使い分けるためにわざわざ二種類の構文が用意されているわけだし、
何より意味は明確に定義されているんだから躊躇せずに使うべきだ。
この構文を避けるというスタイル/ポリシーはあり得るが、これ自体が悪いコードでは決してない。
お前の主観的な可読性を押しつけられてはたまらん。
やれやれ、インクレメント/デクレメントの前置・後置問題ってのはC言語では 演算子の評価結果と副作用の説明に一番いいというのに。 結局、評価と副作用すら理解しとらんド素人がなんか言っとるだけか。
>>968 >前置インクリメントか、後置インクリメントかで意味が変わってしまうような
前置か後置かで意味を使い分けるために2種類のインクリメントがあるんだが。
<<966 結局これでいいんかな・・ (俺が)あまり使わないから、自信無いんよ。。
>>972 よくない。
1. 51,51
2. 67,66
3. 29,29
4. 30,31
なんと。。
975 :
デフォルトの名無しさん :2006/09/21(木) 19:45:56
>>966 >>973 ありがとうございました;;感謝しています!本当にお手数掛けました。
これで提出できます。恩に着ます!
976 :
デフォルトの名無しさん :2006/09/21(木) 20:41:51
if(!((menu == 1 || menu == 2) && data2 == 0)) /* menuの値が1またはmenuの値が2かつdata2が0これらが偽の場合 */ これを実行するとmenuに1と2以外のときdata2に0が入るとエラー文がでてしまいます。 教えてください><
977 :
お願いします :2006/09/21(木) 20:44:40
C言語 途中に空白のない半角英数字からなる任意の40文字以内の文字列を 文字型配列に入力する。それが英小文字のa〜zならばaをb,bをc,cをd,・・・ zをaというように1つずつずらして置き換え,別の文字型配列に格納する。 a〜z以外の文字はそのまま別の配列に移す。文字列すべての検索と置き換え・ 移し変えが終わったら,元の文字列と変換後の文字列を出力するプログラム。 お願いします〜
>1嫁
[1] 授業単元:情報 [2] 問題文(含コード&リンク):入力された数の半径の円の面積を求める [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 数日中 [5] その他の制限: 特になし
>>976 #include<stdio.h>
int main(void)
{
int menu = 3, data2 = 0;
if(!((menu == 1 || menu == 2) && data2 == 0))
{
printf("hoge\n");
}
return 0;
}
という、形で実行してみて何もエラーなんか出なかったけど。
てか、せめて環境とエラーメッセージの内容くらい最低限書いてくれ。
981 :
(^-^) ◆MONSOON/qo :2006/09/21(木) 21:13:34
977 コンパイルしてないけど char str1[40]="bAnVBFD8imMHG1lDNFGdMGHbMGH54kHJm8UKF6Sa", str2[40]; int i,m='a',n='z'; for(i=0;i<40;i++) if( m<=str1[i] && str1[i]<n )str2[i]=str1[i]+1; else if( str1[i]==n )str2[i]=m; else str2[i]=str1[i];
982 :
(^-^) ◆MONSOON/qo :2006/09/21(木) 21:20:51
修正しマスタ #include <stdio.h> main(){ char str1[41]="bAnVBFz8imMHG1lDNFGdMGHbMGH54kHJm8UKF6Sa", str2[41];str2[40]='\0'; int i,m='a',n='z'; for(i=0;i<40;i++) if( m<=str1[i] && str1[i]<n )str2[i]=str1[i]+1; else if( str1[i]==n )str2[i]=m; else str2[i]=str1[i]; printf("元の文字列=%s\n",str1); printf("後の文字列=%s\n",str2); }
>>979 #include <math.h>
#include <stdio.h>
int main(){
float r;
printf("Please Input Radius>");
scanf("%f",&r);
printf("\n%f",r*r*M_PI);
}
984 :
お願いします :2006/09/21(木) 21:33:53
すいません自分初心者でコンパイラ名とか良くわからないんですけど freecommandlinetools_updateこんな名前です。 OSはXPです。
985 :
デフォルトの名無しさん :2006/09/21(木) 21:35:42
C++関係の本が山の中から出てきた。来週はこれを捨てよう。 C++を勉強している若い人は人生を無駄しないように別の言語も考えたほうが良い。perlとか。 Javaも同じ。
C++もPerlもJavaもやればおk
勉強目的ならC#とかオススメだな GUIでも簡単だから学習意欲も沸くだろうし
989 :
お願いします :2006/09/21(木) 22:01:05
すいません977です。
991 :
◆jG/Re6aTC. :2006/09/22(金) 08:12:43
[1] 授業単元:ネットワーク
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2679.txt [3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: ベターCとしてC++
[4] 期限: 2006年09月25日12:00まで
[5] その他の制限: Winsock2を使用します。
ライブラリは、Cの標準ライブラリとSTLは使って大丈夫です。
基本的にコンソールアプリになります。
コーディングに関してはほとんど教えられておらず、Winsock FAQやMSDNを参考にして組め、と言われています。
言語はC++ですが、別にstdio.hを使っても大丈夫です。cstdioでもいいです。
あと、Winsock2ってことですが、無理にWinsock2の新機能を使わなくても、Winsock1の機能の方が使いやすければそれでも大丈夫です。
どうか、よろしくお願いいたします!
あ、すみません。 次スレ立っていましたね。 移動しますので、よろしくお願いします。
(凄い●投げですorz)
>>979 main()
{
int r;
scanf("%d", &r);
printf("半径%dの円の面積は、およそ%d\n", r, r*r*3);
}
3かよw
3はちょっとなぁ・・・
997 :
927 :2006/09/22(金) 14:04:46
本物のゆとり教育世代!
3も3.1415もどうせ近似値に過ぎないから大差ない。 出てくる答えはどちらも「およそ」の面積でしかないし。
999 :
デフォルトの名無しさん :2006/09/22(金) 15:20:35
999GET
痔スレマダー?オチンチン
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。