[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/15 06:15 / Filesize : 299 KB / Number-of Response : 887
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 104代目



1 名前:デフォルトの名無しさん [2008/02/04(月) 23:32:19 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 103代目
pc11.2ch.net/test/read.cgi/tech/1200318925/

233 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:43:34 ]
ひどいな

234 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:47:34 ]
ひどすぎるな

235 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:54:57 ]
>while(!feof(fp)){
> fscanf(fp, "%d", &temp);
> data[temp]++;
> }

>while(count <= 100)

236 名前:デフォルトの名無しさん [2008/02/13(水) 15:02:22 ]
晒しage

237 名前:デフォルトの名無しさん [2008/02/13(水) 15:30:21 ]
>>231
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6046.txt

238 名前:デフォルトの名無しさん [2008/02/13(水) 16:19:12 ]
>>230
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6047.txt

239 名前:デフォルトの名無しさん [2008/02/13(水) 20:12:05 ]

チョンのあやかり創価学会

偽善者が政治活動、公明党

ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや

カルトキチガイ・創価騙されバカ信者

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党


240 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:44:17 ]
>>232
>>238
期限間近のものを本当にありがとうございました。

241 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:48:28 ]
>>232は荒らしだから礼は言わなくてよし。



242 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:01:17 ]
>>241
今、実行できる環境がないのですが>>232はなぜ荒らしなのでしょうか。

243 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:08:23 ]
表面上問題文で要求された結果は返すけど、
拡張性が無く再利用できないアルゴリズム。
fclose()してない。
こんなの宿題で提出されたら俺なら赤点つける。

244 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:14:18 ]
>>243
荒らしのプログラムにも気付けない自分が情けないです…
詳しい説明ありがとうございました。

245 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:04:07 ]
宿題丸投げしてる時点で情けないけどな

246 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:20:41 ]
>>243
>>232読んでみたがこれで十分だろ
題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな
拡張性について指定がない以上、こういうのも一つの解としてありだろ

247 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:28:18 ]
学生の宿題なんだからむしろ質素な方がいいと思うのですが
>>243さんは一体何のつもりなんでしょうか(苦笑

248 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:36:48 ]
ここはIDが出ないから自演が楽でいいなw

249 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:42:48 ]
>>246
題意満たしてるか?

250 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:42:52 ]
自演以外でいちいち擁護する奴なんていないしなw

251 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:43:53 ]
>>249
何か条件抜けてるか?



252 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:48:30 ]
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \   
     |┃     |    (__人__)     |     俺なら赤点つける
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \



253 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:48:33 ]
>>235


254 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:54:02 ]
>>251
合格者がちょうど100人の時にカウントがずれる。
<にすべき比較を<=にしてるという初心者のようなミス。
fclose()していない。

仮にあれが荒らしじゃないとすれば、無能であるという自覚の無い初心者。
ある意味荒らしよりたちに負えない。

255 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:55:30 ]
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \   表面上問題文で要求された結果は返すけど、
     |┃     |    (__人__)     |     拡張性が無く再利用できないアルゴリズム。
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

256 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:57:38 ]
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \   題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな
拡張性について指定がない以上、こういうのも一つの解としてありだろ
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

257 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:59:46 ]
     |┃三        / ̄\
     |┃         |     | ←これなに?
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \ 
     |┃     |    (__人__)     | 
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

258 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:59:47 ]
>>232はダメだろ。
211回数えてるぞ。

259 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:03:02 ]
最近オプーナAAをよく見かけるな

260 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:03:27 ]
データ210個あるって言ってるのに配列101個分しか用意してないし。
何したいのかわからん。

261 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:04:31 ]
受験生全員が100位タイ以内に収まる場合にずっこける希ガス



262 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:05:02 ]
穴だらけじゃんwwwwwwwwwww

263 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:06:28 ]
>>260
それはお前がバカ

264 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:06:59 ]
>>260
それは点数による度数分布だからおk
0〜100以外の点数が来たらNGだが

265 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:07:17 ]
feofでend-of-fileの判定。

266 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:13:22 ]
まとめ
>>232
・今回与えられたデータではたまたま正常に動く
・不正なデータ(100点を超えたりマイナスだったり)に対する備えが無い
・偏ったデータ(全員が100点とか)で無限ループ
・100位以内が丁度100人の時に計算がずれる
・ファイルから点数を直接読み出してないから拡張性が無い
・↑のデータを利用して他の関数を書いてるから再利用できない
・fclose()してない

>>238
・パーフェクト

>>230は好きな方選んで提出したらいいんじゃね?
自力で組めなかったんだし粗悪なプログラムで赤点補習した方が将来のためかもしれないしね。

267 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:14:52 ]
>>266
バカがまとめんなよw
>>232で出る答えは間違ってるし、全員100点でも無限ループなんてしない。

268 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:21:10 ]
>>266
>>238も人数が210人未満のときに間違える。

269 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:22:04 ]
>>232の実行結果
合格者数:105人
合格者平均点:77.7723810点

>>238の実行結果
Success:104
Average:77

270 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:33:34 ]
どうして>>232の答えは間違うんでしょうか?

271 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:34:26 ]
>>270
プログラムが間違ってるからだね。



272 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:37:40 ]
>>270
ループ終了条件をfeofで判定してるため、最後の数を二重に数えてるから。

273 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:37:52 ]
烏賊じゃないんだ

274 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:40:35 ]
まあ>>238のプログラムも入力部分を関数化しろって条件満たしてないんだけどな。

275 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:50:30 ]
>>237
ありがとうございますm(_ _)m

276 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:56:49 ]
>>272
ありがとうございます。

while(!feof(fp))
{
fscanf(fp, "%d", &temp);
data[temp]++;
}



while(fscanf(fp, "%d", &temp) != EOF)
{
data[temp]++;
}

みたいにしたらいいのかな。

277 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:58:10 ]
そうだね

278 名前:デフォルトの名無しさん [2008/02/14(木) 00:10:08 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6049.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++2005 ExpressEdition
 [3.3] 言語:C
[4] 期限:2月15日
[5] その他の制限:特にないです

279 名前:デフォルトの名無しさん [2008/02/14(木) 00:14:35 ]

チョンのあやかり創価学会

偽善者が政治活動、公明党

ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや

カルトキチガイ・創価騙されバカ信者

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党


280 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:18:58 ]
条件なのにできるってなんかおかしくね?

281 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:40:44 ]
>>276
fscanfを使うなら、
while (fscanf(...) == 1)
とするべき。



282 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:50:47 ]
>>278
「double max(double a,double b)関数をとり、引数aとbの大きいほうを返す関数」は、
double max_caller(double (*f)(double, double), double a, double b){
return (*f)(a, b);
}
でよろしいか?

283 名前:デフォルトの名無しさん [2008/02/14(木) 07:06:31 ]
>282
いいですよ。

284 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:53:12 ]
>>281
なるほど、それだと読み込みエラーとかでもループを抜けられるんですね。
勉強になりました。ありがとうございました。

285 名前:デフォルトの名無しさん [2008/02/14(木) 11:39:45 ]
>>278
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6051.txt
チェックあまりしてない。甘いところはご愛嬌。

286 名前:デフォルトの名無しさん [2008/02/14(木) 12:09:39 ]
>>278
問題2
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6052.txt
これもチェックあまりしてない。甘いところはご愛嬌。

287 名前:デフォルトの名無しさん [2008/02/14(木) 18:04:30 ]
「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」
って課題が出たんですけど、誰か教えてください。

288 名前:デフォルトの名無しさん [2008/02/14(木) 18:19:45 ]
>>287
>>1からやり直し

289 名前:デフォルトの名無しさん [2008/02/15(金) 12:03:39 ]
すいません。書き直します。宜しくお願いします。

[1] 授業単元: 一般情報処理C
[2] 問題文(含コード&リンク):「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:c
[4] 期限:2008/2/19
[5] その他の制限:なし

290 名前:デフォルトの名無しさん [2008/02/15(金) 14:45:36 ]
急ですみませんが、(1)だけでもいいので、出来る方いらっしゃいましたらよろしくお願いします。

[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
崖から鉛直上向きに投げた石の4秒後の鉛直方向位置を求めたい.
(1)オイラー法によりその位置を求めるプログラムを作成し,4秒後の
位置を求めなさい.
(2)理論解との位置の誤差を0.1m以下にするには時間きざみΔtを
いくらにすればよいか考察しなさい.
[3] 環境
 [3.1] OS:Vista
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語:C
[4] 期限:2008/2/15 15:50まで
[5] その他の制限:

291 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:11:20 ]
>>290
(1)だけ。
初速に関する条件がなかったけど入力させる形でよかった?
#include <stdio.h>
#include <stdlib.h>

#define GRAVITY (-9.80665)
#define DELTA_T (0.1)

int main(void)
{
char temp[32];
double v0, velocity, time, y;

printf("初速度を入力してください:");
do{
fgets(temp, sizeof(temp), stdin);
v0 = atof(temp);
}while(v0 <= 0);

for(time = 0; time < 4; time += DELTA_T)
{
velocity = v0 + time * GRAVITY;
y += velocity * DELTA_T;
}
printf("4秒後の位置は %f(m) です", y);
return 0;
}

>>289
一口に酔歩って言っても定義はいくつもあるんだけど、
何の前提条件も無しでその問題文がだされたわけ?



292 名前:デフォルトの名無しさん [2008/02/15(金) 17:34:59 ]
>>291
えっとその前の課題が「二次元格子上での酔歩におけるnステップによる平均移動距離を、m回のシュミレーションによる統計平均から計算せよ。また、その標準偏差を求めよ」
で、その課題の下に「乱数の発生方法について」とあって、1#include<stdlib.h>によって、stdlib.hヘッダーをインクルードする。2#include<time.h>によって、time.hヘッダーをインクルードする。
3srand((unsigned)time(NULL));によって乱数の種の初期値を現時刻から決める。4rand()/(RAND_MAX+1.0);によって0から1における一様乱数を発生させる。
と書いてあって、その下に上記の課題が書いてあります。

293 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:05:59 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6055.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 2月18日24時まで
[5] その他の制限:考察も書かないといけないので
         注訳等も入れてもらえると幸いです。
         また期限はギリギリの期限ですので出来るだけ
早く対応していただけると非常に助かります。

294 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:59:30 ]
>>293
元のプログラムがてんでダメダメだな。

295 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:13:23 ]
>>294
あれ、引用のコピペ失敗したかな(´・ω・`)、自分で動かした分には元のプログラムは動いたんだけど

296 名前:293 ◆klsLRI0upQ mailto:sage [2008/02/15(金) 22:19:36 ]
>>294
サンプルプログラムの原文HTML化したものはありますけど
そちらをうpった方がいいでしょうか?

297 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:26:43 ]
>>295
67行目に変な文字が入ってるけど、ダメってのはそういう意味じゃない。
元のプログラムの作り自体にセンスが感じられないってこと。

298 名前:293 ◆klsLRI0upQ mailto:sage [2008/02/15(金) 22:28:41 ]
>>297
なるほど、そういう事ですか><

299 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 07:24:05 ]
>>293
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6056.cpp

300 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:45:37 ]
>299
ありがとうございます

301 名前:_ mailto:sage [2008/02/17(日) 08:34:24 ]
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \ 
     |┃     |    (__人__)     | 
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \



302 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:03:44 ]
                三 |┃┃
            三    |┃┃
                  |┃┃
             ∧∧ ..|┃┃
          三 (  ;). |┃┃ピシャッ!
            /   ⊃.|┃┃

303 名前:_ mailto:sage [2008/02/17(日) 11:52:13 ]
      .. |┃三    ..   / ̄\
     ..  |┃        |     |
      .. |┃     ..    \_/
   ガラッ.. |┃           ..|        
     三 |┃            |    
  三    |┃  ノ//   ./ ̄ ̄ ̄ \
        |┃三    /  ::\:::/:::: \   
   ∧∧ ..|┃     /  <●>::::::<●>  \ 
三 (  ;). |┃     |    (__人__)     | 
  /   ⊃.|┃三   \    ` ⌒´    / 
 シュー    |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

304 名前:_ mailto:sage [2008/02/17(日) 11:52:33 ]
                三 |┃┃
            三    |┃┃
                  |┃┃
             ∧∧ ..|┃┃
          三 (  ;). |┃┃ピシャッ!
            /   ⊃.|┃┃

305 名前:デフォルトの名無しさん [2008/02/17(日) 12:15:33 ]
【質問テンプレ】
[1] 授業単元: コンピュータ実習
[2] 問題文:(下記のコードに書き加えてファイルに出力しなさい)
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: 今日
[5] その他の制限: なし
#include <iostream>
#include <string>
#include <fstream>

class write{
private:
string input;
public:
string input(){
cout<<文字列をファイルに書き込みたい;
cin>>input;
return input;
}};

int main(){
write ob;
//書き込み処理

//書き込み処理終了
return 0;
}


306 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:57:43 ]
//書き込み処理
fstream("ファイル", ios::out) << ob.input();
//書き込み処理終了

307 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:06:25 ]
>>306
ofstream使えよ。

308 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:48:53 ]
[1] 授業単元: Cプログラミング
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6057.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 明日まで

問題はC言語のシグナルの送信に関するものです。
よろしくお願いします。


309 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:10:27 ]
シグナルハンドラとしてSIG_IGNを使う。
あと、シグナルハンドラの中では、非同期シグナルセーフな関数以外は呼び出さない方がいい。

310 名前:デフォルトの名無しさん [2008/02/17(日) 21:55:38 ]
[1] 授業単元:C言語II
[2] 問題文(含コード&リンク)
  シェルを実装していますが、分からないのは入出力リダイレクションの処理です。
  たとえばプロンプトから

  $ cat 123 > textout

  と、入力して 引数の'>'(もしくは'<') で入出力を切り替える処理を考えています。
  どうすればいいのでしょうか?
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4.4
 [3.3] 言語:C
[4] 期限: 2008年2月29日

311 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:26:19 ]
>>308
とりあえずsignal.hなるものの存在を初めて知った

で、<unistd.h>は「unix standard」。
ここまで来ると、Windowsの人間はまるでついていけない……




312 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 02:30:54 ]
>>308 [kill-main.c]
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>

pid_t pid;
void ctrlc(void){
kill(pid,SIGUSR1);
}

int main(){
unsigned int c;
if((pid = fork()) == 0){
execl("kill-child","kill-child",(char *)0);
perror("execl");
exit(EXIT_FAILURE);
}
if(signal(SIGINT,(void*)ctrlc) == SIG_ERR){
perror("sigint");
exit(EXIT_FAILURE);
}
do{
printf("Send signal?(C-c/n)\n");
while((c=getchar()) != EOF)
if(c != '\n')
break;
if(c == 'n')
exit(0);
}while(c != EOF);
}

313 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 02:32:35 ]
>>308 [kill-child.c]
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void siguser(void){
static int n = 0;
printf("Signal received %d times\n",++n);
if(n == 10)
exit(EXIT_SUCCESS);
}

int main(){
signal(SIGINT,SIG_IGN);
if(signal(SIGUSR1,(void *)siguser) == SIG_ERR){
perror("signal");
exit(EXIT_FAILURE);
}
for(;;){}
}

子まで書き換えないとならないのがミソだな

314 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 04:08:11 ]
>>312-313
御回答ありがとうございます。
SIG_IGNを使いシグナルを無視させることで無効化するんですね。
勉強になりました!ありがとうございます。

315 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 14:14:22 ]
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):Cシェルを作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2008年2月19日まで
[5] その他の制限: なし

C言語でシェルを作っているのですが、
>310さんと同じく'>'の入力リダイレクションの処理が分からないです。
自力で途中までは書いているのですが、キー入力の分割処理が上手く行きません。
void parseitファンクション内の処理がおかしいと思われます。

助けて頂けると幸いです。

ソースファイル↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6060.c

316 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:43:12 ]
誰か292頼みます

317 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 18:15:57 ]
>>316
問題が理解できないのでどうしようもない

まずnステップっていうのがわからない
そもそも、1ステップでどういう動きをするんだ?
ランダムで X 方向 or Y 方向に 1つ動くっていうのか、
それとも、X 方向にランダムでいくつ、Y方向にランダムでいくつって言う風に動くのか

あと表示のしかたも、各ステップ毎のX,Yの値をただ単に並べればいいのか、
図で見せるのかわからない

318 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:56:21 ]
>>315
void parseit 内で、
*params++ = command;
の後のパラメータ分文字を読み飛ばす処理内で、">"の処理をしているのが不味い

a.out > aaa
   ↑
ここでパラメータ分文字を読み飛ばす処理は終了するので、次のパラメータを探す処理に
移ると、次のパラメータは、">"になる

">" の処理もそのままだと、 ファイル名の前後に空白文字が入る可能性がある(問題ないのかもしれないけど)

あと、void parseit 関数の終わりの*params = '\0'; は、 *params = NULL; じゃね

319 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:16:23 ]
>>318
なるほど、そう言うのが原因なんですね。
確かにテストをすると空白らしくものがファイル名と'>'の前(おそらく)に入ってると思われます
となると、やはり新しいファンクションを増やした方がてっとり早いのでしょうか?

320 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:59:51 ]
>>319
横レスになるけど.
先に ">"の前後で文字列を切り分けてからコマンド部分をあらためて切り分ける方法もあるんじゃないかな。

標準関数を使っていいのなら切り分けはこんな感じ↓

char redirect[20]; // リダイレクト先
_Bool test_parse( char *command, char **param )
{
   _Bool ret = false;
   char cmd[256]; // コマンド部
   int result;
   // >の前後で文字列を切り分け
   result = sscanf( command, "%255[^>]%*[>]%19s", cmd, redirect );
   if( result > 1 ) {
      ret = true;
   }
   getToken( cmd, param ); // ここでコマンド部をパラメータと切り分ける関数を別に作って呼ぶ
   return ret;
}

こうするとローカル変数cmdとredirectにそれぞれ>の前後で切り分けた文字が入るはず。
ついでにretで1以外が入っていた場合はredirectにも代入があったことになるからフラグでそれを知らせてます。

321 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:51:32 ]
>>320
レス感謝です。
getTokenでparseitと同様の処理をさせれば良いのでしょうか?



322 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 06:43:13 ]
>>321
4時か、がんばってるねぇ…

とっくに寝てそうだけど、getTokenでparseitのparamsに入れていく部分の処理を入れればいいと思う。
元のソース見る限りだとredirectは特に同じことをしてなさそうに見えるから。

323 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 06:54:35 ]
試しに>>320の教えてくれたsscanfを使ってみたのですが、
未だに空白が付いて正しい結果を出しません。
もしかしたらメイン内でやったのがいけなかったのかもしれません。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6062.c

324 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:09:34 ]
あー

空白がつくのって
"a.out params > text.txt"
みたいなときに " text.txt"がredirectにはいるってこと?

VC++でコンパイルしたからGCCでは挙動違うのかな?

sscanfの処理を
sscanf( command, "%255[^>]%*[> \t]%19s", cmd, redirect );
って修正してもだめ?

325 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:13:47 ]
すみません>>322の通りにやると文字化けが生じてしまいます。
もしこれが解決出来れば、test_parseファンクションを使えると思うのですが…。
何か解決方法があったら教えてください。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6064.c

326 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:37:19 ]
無事に解決できました。
どうやら問題やはcmdの最後の部分に空白があったため、問題が起きていたようです。
なので、最後尾にNULLを追加したらリダイレクションが正常に完了しました。
>>318 >>320 >>322 >>324助言ありがとうございました。

327 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:39:06 ]
>>316
適当解釈。

#include <stdio.h>
#include <stdlib.h>
#define N 10

void suiho(int *x, int *y)
{
int r=rand()%4;
*x+=((r/2)*2-1)*(r%2);
*y+=((r/2)*2-1)*(!(r%2));
printf("(%d,%d)\n",*x,*y);
}

int main(void)
{
int i,x=0,y=0;
srand(time(NULL));
for(i=0;i<N;i++)suiho(&x,&y);
return 0;
}

328 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:29:30 ]
>>327
面白い解釈だ

神龍:どんな問題でも一つだけ聞き流してやろう
ってのが思い浮かんだ

329 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:26:31 ]
誰か終わってないリストチョーライ。

330 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:00:26 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):2問ありますkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6066.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 明日まで
[5] その他の制限: 問題文にそって作る

お手数おかけしますが、よろしくお願いします。

331 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:27:31 ]
因数因数って引数だろ、「ひきすう」で変換すればちゃんと出てくるのに・・・
ってもやもやしながら読んでたらばおで噴いたwwwwwww



332 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:37:55 ]
構造体変数名がlist_tっていうのが違和感あるんだが,これって変数が
list_tって名前なんだよな?

xxx_tって普通,型名につける方法じゃないっけ?

333 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:18:56 ]
ば、ばお・・・ごめんなさいorz

>>332
問題文を確認したら構造体変数名はlist_tとありました。
これが誤っているとすると

typedef struct list{

} list_t;

って感じですかね?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<299KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef