トップページ⇒tech
1001コメント361KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/03/31(木) 15:35:33.04
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 146代目
http://hibari.2ch.net/test/read.cgi/tech/1296387672/
0232デフォルトの名無しさん2011/04/17(日) 19:09:45.68
>>230
理解したくないね
独りよがりのパクリとかどこのナルシストだよ
分かりやすく言えないのかアホ

>>231
人の嫌がる事を進んでやります(・ω・)
人の嫌がる事を進んでやりまず<ヽ`∀´>←意味が違う

◆QZaw55 cn4c は在日チョンではないかと最近思い始めた
0233デフォルトの名無しさん2011/04/17(日) 22:20:08.26
>>212のような問題って、昔Cプログラマ適性検査として
入社後の配置決定試験の時に出された課題みたいな感じ
確か3時間で仕様通りのコードが書けなければ
3年以内退職を前提とした誓約書書かされたっけ
俺?見事失敗。その代わり3年間はオフィスに10時に
着いて、あとは喫煙室との往復だけで給料貰ったし
ボーナスも出たし結婚もしたし...
今は嫁のツテでIT関連学校の教師
この業界はよほどの素質かよほどのコネが無いと生きていくのは
無理なんじゃね?
0234 ◆QZaw55cn4c 2011/04/17(日) 23:41:25.49
>>212
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1301553333/397

>>233
3時間ですか?ちょっと無理ですねえ。
0235 ◆QZaw55cn4c 2011/04/17(日) 23:49:54.58
リンクミスがありました。
>>212
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/397

>>233
3時間ですか?ちょっと無理ですねえ。
0236デフォルトの名無しさん2011/04/17(日) 23:49:58.89
>234
お前仕事してんの?ニートだろ?
0237 ◆QZaw55cn4c 2011/04/18(月) 00:28:46.01
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の大小関係は不問として出力する。

もし国語と数学のクラスの平均点が 50 、英語が 70 のとき、

生徒A 国語 100 数学 0 英語 69
生徒B 国語 0 数学 100 英語 71
生徒C 国語 100 数学 0 英語 49
生徒D 国語 0 数学 100 英語 51

この四人のうちどれが出力対象になるのでしょうか?
問題文だけでは、二つの教科の平均点が一致したとき、残りの教科をどう扱うかがはっきりしません。
0238 ◆6W4srb4nmo 2011/04/18(月) 00:38:40.07
国語<英語 AND 数学<英語 の生徒。
0239デフォルトの名無しさん2011/04/18(月) 00:47:15.14
ま、このような時勢に4月末迄の期限のまだ余裕のある宿題を
日曜日がな一日潰して片付けてあげる人は偉大なのかそれとも...
ちなみに(1)と(2)はmainを共通にすべきじゃないかと...
02402122011/04/18(月) 04:45:54.88
>>235
取り敢えずはお礼を申し上げます。どうもお手数をおかけしました。
実はこの問題研修終了試験の過去問の5重コピーくらいの劣悪な
コピーから写したものです。もういちど調べてみるとやっぱり
グループ数じゃなくてクラス数でした。
ただCodePadは無償じゃないそうなので開くのには躊躇しております。
02412132011/04/18(月) 06:29:36.20
>>218,223,226
皆さんありがとうございました!
0242デフォルトの名無しさん2011/04/18(月) 07:33:57.76
>>239
自分の力を誇示したいだけだと思われます。そして>>235の

>3時間ですか?ちょっと無理ですねえ。

からも分かるように本当はプログラマ適性がないにも関わらず脅迫的にプログラムに
取り憑かれています。変ですね。
0243 ◆QZaw55cn4c 2011/04/18(月) 07:41:53.59
>>239
例のスレッドに誘導をはかるべく自分の力を誇示したいだけです。意図したとおりにはなっていませんが。

そして、>>235の
>3時間ですか?ちょっと無理ですねえ。
からも分かるように職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
やっぱり変ですね。
0244デフォルトの名無しさん2011/04/18(月) 08:20:49.62
>212
これってどのくらいのレベルが想定ですか?
最大1000万レコードというあたりが、初学者向けとは思え無いので確認したいのです。

ちょろっと1000万レコード生成と読み込み処理だけコーディングしてみたけど、
IOの時間だけでも結構かかります。前データをオンメモリに展開すると250メガくらい
になります。
最近のPCではこのくらいは屁でもないですが、そこは富豪的アプローチでOK?

これが最大1000レコードで各教科100点満点なら初学者向けだと思います。
1000万レコード、999点満点となると、オーバーフローを気にしなきゃならなくなるので、
かなり注意が必要です。

と思って面倒そうだから見てたけど、どうでしょ>212さん。
0245デフォルトの名無しさん2011/04/18(月) 08:57:38.37
>235

1000万レコードのデータ食わせてみたら、とりあえずちゃんと動いているっぽいです。

コードをちゃんと追ってませんが、レコードをノードに展開しながら、
2分木にソートしながら突っ込んでいる感じでしょうか?
でも使用メモリ量は1.5M位だったようなので違うかな。

各関数に何をする関数かを示すヘッダコメントを書くと、だいぶコードが読みやすく
なるので、心がけていただけないでしょうか。
0246デフォルトの名無しさん2011/04/18(月) 09:05:28.09
1000万レコード全部合計点同じデータ食わせたらちゃんとうごかねえんじゃね?
0247デフォルトの名無しさん2011/04/18(月) 09:58:04.20
100万レコード全部合計点違うデータ食わせたら動かねえんじゃね??
0248デフォルトの名無しさん2011/04/18(月) 10:52:00.93
>>243
例のスレッドに誘導をはかるな。スレの邪魔だ。宣伝はあのスレでだけやれ。
他の人の迷惑だ。

>職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。

だから変だと思いませんか?なぜそんな趣味レベルの力しかないのにそれで強引に
金儲けをしようとするのですか?自分の力を過大評価しているとは思いませんか?
金儲けとはそんな甘い物じゃありませんよ。

どちらにしろ職業にする力量が明らかに不足しているのにそれで金儲けしようなどとは
いかにも図々しい話です。ナルシスティックで自分に酔っているとしか思えませんね。
02492122011/04/18(月) 11:07:29.36
>>244
なんか凄い空気ですね...
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
ないかと...1000万行ってのは当時でもそれほど大きな
データじゃなかったようです。他の過去問にもそのような
数字が出ていますし。ちなみに現在うちの会社が扱っている
のは一案件10億とか100億とかのレコード数当たり前だそうで
す。
0250デフォルトの名無しさん2011/04/18(月) 11:09:15.47
>>212 (1) のみ
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_hoge_t{
long num;
unsigned long class_bits[(10000+32-1)/32];
}hoge_t;
int bit_count(const hoge_t *hoge){
int i, j, ret=0;
for(i=0;i<sizeof(hoge->class_bits)/sizeof(hoge->class_bits[0]);i++)
for(j=0;j<32;j++) if((hoge->class_bits[i]>>j)&1) ret++;
return ret;
}
int main(int argc, char *argv[]){
hoge_t *hoge=calloc(sizeof(hoge_t), 1000*3);
long i, student_id, class_id, japanese, math, english, score;
FILE *fp=NULL;
if(argc>1) fp=fopen(argv[1], "r");
if(hoge==NULL || fp==NULL) exit(1);
while(fscanf(fp, "%ld %ld %ld %ld %ld", &student_id, &class_id, &japanese, &math, &english)==5){
if(student_id<0 || 99999999<student_id) break;
if(class_id<0 || 9999<class_id) break;
if((japanese<0 || 999<japanese) || (math<0 || 999<math) || (english<0 || 999<english)) break;
score=japanese+math+english;
hoge[score].num++;
hoge[score].class_bits[class_id/32]|=1<<(class_id%32);
}
fclose(fp);
for(i=0;i<1000*3;i++)
if(hoge[i].num) printf("得点:%ld 人数:%ld人 クラス数:%d\n", i, hoge[i].num, bit_count(&hoge[i]));
return 0;
}
0251デフォルトの名無しさん2011/04/18(月) 11:36:03.44
>>244
富豪を仮定しないと面倒でない?

>>212 (1)だけ適当に。まともに動いてるのかよく分からん
http://codepad.org/hzssz9EV
0252デフォルトの名無しさん2011/04/18(月) 11:37:51.41
業務相手にお優しいこって
0253デフォルトの名無しさん2011/04/18(月) 12:38:04.43
>>212
http://codepad.org/Y5lMdhWZ

・(1)、(2)の両方。
・ただし、Windowsでの作成のためLinuxで動かすにはちょっと改変が必要(キャリッジリターンの部分)。
・科目の数が3つとなっているが、遊び心で勝手に3つ以外(5個とか100個とか)可能にした。
 そのため、入力するファイルが若干変わり、次のように入力してもらうようにした。
  例.
   国語\t数学\t英語\t・・・\t理科
   12345678\t9012\t345\t567\t・・・\t890
           以下略
 まぁ、科目増えた分の点数と、1行目に科目名入れるようにしたってだけ。
・テスト行うため、ファイル作成する関数導入(rand()使用、srand()は付けてない)。上記にしたがった書き込みを行う。
・malloc使い過ぎたときのエラー対策が不十分(freeがてけとー)。
・データは、例えばid(8桁)の場合、00011111のように0を省略せずに入力しないとプログラム終了させている。
・わかりやすくを心がけて作ったつもり(遊び心スイッチ入れた後はそんなこと気にしなかった。)。
・ということもあり、計算速度はすげぇ遅い。1000万行はやるな。
0254 ◆QZaw55cn4c 2011/04/18(月) 12:49:25.71
>>245
テストありがとうござます。

二分木に突っ込んでいるのは、レコードそのものではなく、0+0+0〜999+999+999 の点数を単位としたデータ構造で、
点数ごとに同点数の人数とクラス名の線形リストを持っています。同一点ごとのクラス数は、線形リストに追加された要素の数を最後に勘定することで調べています。
レコードそのものをメモリに全部乗せるのは無理と踏みました。

>>246
プログラムのつくりとしては問題ありません。二分木に一つの要素が追加されるだけになります。

>>247
それは問題ですが、題意に沿うかぎり、0〜999+999+999 の計 3000通り弱ですので、メモリは足りるだろうと踏みました。

>>248
>なぜそんな趣味レベルの力しかないのにそれで強引に金儲けをしようとするのですか?
金儲けじゃありません。モリタポ儲けです。
0255デフォルトの名無しさん2011/04/18(月) 12:55:41.24
>>254
0-999が3組ある場合の組み合わせが3000通り弱なの?
国語が0点、算数が0-999の1000人と
国語が1点、算数が0-999の1000人と
国語が2点、算数が0-999の1000人で3000通りになってしまったよ。
0256デフォルトの名無しさん2011/04/18(月) 12:59:10.20
>>254
>金儲けじゃありません。モリタポ儲けです。

また屁理屈かよ
聞き飽きた

http://auction.moritapo.jp/
これがある以上、金儲けと言われても文句は言えない
0257デフォルトの名無しさん2011/04/18(月) 14:10:25.18
てゆーか、何でそんなにプログラミングが好きなのか
よくわからない
仕事とか勉強とかに必要だからいうのは兎も角
0258デフォルトの名無しさん2011/04/18(月) 14:21:08.56
暇つぶしに宿題やるのは悪くないと思ってる職業マならここに。
関係ない人が、目的もなく宿題をやるのは不思議。けどなんかやろうとしてたんだっけか。
日曜大工的なもんだと思えばいいんでないかな。
0259デフォルトの名無しさん2011/04/18(月) 14:27:56.19
>>258
少しでも、C言語の周りを活性にしようとしているだけだろ。
肝心のソースコードを晒す場所があまりないからここでということ。
0260デフォルトの名無しさん2011/04/18(月) 14:38:03.12
てか何でソースを晒したいの?
0261デフォルトの名無しさん2011/04/18(月) 14:39:43.21
>>259
日曜大工が趣味の人が、日曜大工の輪を広げたいがために
ホームセンターで展覧会を開いていると思えばよい?
それも、何度も拒絶されているにもかかわらず、懲りずに展覧会を開く。
0262デフォルトの名無しさん2011/04/18(月) 14:42:27.49
>>260
ヌードになる心境でしょう。
0263デフォルトの名無しさん2011/04/18(月) 15:06:47.24
>212

続々コードが上がってきましたね。
ちょっと読んでみます。

私もまずは1だけです。
ttp://codepad.org/DDlp8Quq

>249
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
>>中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
であれば、今上がっているようなコードではダメでしょうね。
すべてのデータをオンメモリに展開するわけにはいかないでしょうから。
点数別に読み込みながら集計して、出力の繰り返しかな?

>ちなみに現在うちの会社が扱っている
>のは一案件10億とか100億とかのレコード数当たり前だそうです。
そういう場合はDB使っているでしょうね。
0264デフォルトの名無しさん2011/04/18(月) 15:20:00.37
>>263
読んでねーのにけなすとか馬鹿じゃね
0265デフォルトの名無しさん2011/04/18(月) 15:33:53.86
自分のは兎も角、人が書いたC文書読んで面白いの?
てか最近はソフト頒布はオプソで原則が浸透しつつあ
るんで、読まざるを得ないことも少なくないけど
0266デフォルトの名無しさん2011/04/18(月) 16:36:43.10
C文書w
0267デフォルトの名無しさん2011/04/18(月) 16:40:08.27
>>265
他人のレスを読むのが面白いかどうかというとなんともいえないのと同じで、
反応するためには普通に読むでしょう
0268デフォルトの名無しさん2011/04/18(月) 17:31:04.34
こういう言葉のやりとりが面白くないから、少しはソースコードでも
載らないものかと思ってる人にサービスするためのスレ。
宿題であるかなんて関係もない。
0269 ◆QZaw55cn4c 2011/04/18(月) 18:46:03.39
>>255
>>212
>各教科の得点の和が同じ生徒達のグループについて
国語・数学・英語の総和だけ考えればいいので、個別で0〜999 までなら、総和は 0〜2997 です。この2998通りについて、おのおの出現回数と出現したクラス名を記録しておけばいいわけです。
0270 ◆QZaw55cn4c 2011/04/18(月) 18:53:22.23
>>256
そういう換金可能性は、どのような「もの」に対しても当てはまることです。
どんな「もの」に対しても当てはまる性質を理由にあげても(それはオークションにかければ理論上どんなものでも換金できます。)それによr営利目的か営利目的でないかを判断することはできないのではないでしょうか。
0271デフォルトの名無しさん2011/04/18(月) 19:15:44.31
>>270
対価とることがおかしいんだよ
0272 ◆QZaw55cn4c 2011/04/18(月) 19:32:21.15
>>271
2ch で対価をとることを規制する規定はありますか?あるのなら URL を示してください。

以上、http://hibari.2ch.net/test/read.cgi/tech/1295273862/ での議論の要約でした。
0273デフォルトの名無しさん2011/04/18(月) 19:46:24.17
>>272
対価を取らずに宿題に答えるスレで、
対価を取るスレの宣伝行為はやめろ。
スレの進行の妨害だ
0274デフォルトの名無しさん2011/04/18(月) 19:49:56.37
マジレスするとこっちのスレで対価無しの回答してたらモリタポ儲け出来ないじゃん
出題者側もそれに気づいてるから専用スレに出題者が現れないんだろ
0275デフォルトの名無しさん2011/04/18(月) 19:55:09.77
>>274
有償スレへのリンクを貼り付ける行為がきわめて悪質。
0276 ◆QZaw55cn4c 2011/04/18(月) 20:10:55.13
>>273
出題者の望む最大限の行動(すなわち動く C プログラムソースを作成し公開すること)を「妨害」と判断した根拠を示してください。

そういえば、あなたは私を糾弾するばかりで、ひとつもソースを公開していませんね。それこそこのスレの進行を妨害しているのではないでしょうか。
一度くらい、ソースを公開したその同じレスの中で私を批判してみてください。
0277デフォルトの名無しさん2011/04/18(月) 20:19:17.31
誰と戦ってるんだw
0278デフォルトの名無しさん2011/04/18(月) 20:20:26.55
お前らこっちでやれ。どっちも邪魔
http://hibari.2ch.net/test/read.cgi/tech/1295273862/
0279デフォルトの名無しさん2011/04/18(月) 20:21:55.80
>>276
巣に帰れカス
0280デフォルトの名無しさん2011/04/18(月) 22:25:51.70
>263です。

>250
コード読みました。
比較した中では一番シンプルでいいと思います。
読み込んだデータよりも、集計データの方をオンメモリで持ったほうが
小さくていいですね。しかも読みながらビンソートになっているから
パフォーマンスも一番です。

自分のコードも始めに読み込みデータと集計データを、オンメモリに
もつようにしていたのですが、ソートは必要だと思い込んでいました。
そうか、集計時にビンソートになっているから、読み込んだデータのソートは
不要ですね。ソートが必要だと思ったので、メモリ上に読み込んでいたので、
そのことに気づけなかったのは、自分が残念です。

クラス数の集計でビットカウントが使われているのが、私と全く同じだったので
少し親近感があります。
それだけに自分のコードが残念だ。

0281デフォルトの名無しさん2011/04/18(月) 23:09:20.45
>250を踏まえて>263を書き直しました。

ttp://codepad.org/9Jdz1qC2

本質的には>250と同じです。
投稿に収めるために、かなりコンパクトに書かれていたと思われるので、
あえて投稿しました。
やはり処理時間がダントツに違います。
02822122011/04/19(火) 06:58:15.81
>>281,263さん
貴重な時間を割いて回答いただきありがとうございました。
02832532011/04/19(火) 10:51:11.25
需要ないが、主に自己満足のため(あと、他に課題も相談もないようなので)、
>>253の改善をあっぷ。
http://codepad.org/bqK0m1aY

・キャリッジリターンなんて関係なかった。たぶんlinuxでも動く。
・つーか、便利な関数もっと使えばよかったと今更思う。
・メモリの開放をも少ししっかりやった。
・他いろいろ細かい部分の修正。
・遊び部分はそのまま。
0284デフォルトの名無しさん2011/04/19(火) 13:23:09.15
>>183
クラス名を"0000"〜"0009"に決め打ちしてない?
出力結果が何かおかしいんだけど
0285デフォルトの名無しさん2011/04/19(火) 13:23:55.57
あ、間違った
>>284は>>283に対してです
0286�@2011/04/19(火) 17:47:07.29
[1] 授業単元: C
[2] 問題文(含コード&リンク):
エラトステネスの篩
第一引数にint型の変数m, 第二引数にint型の配列Pが与えられたとき、
配列Pにm以下のすべての素数を格納し、格納した素数の個数を返す関数
int eratosthenes(int m, intP[])
を作成せよ。
なお、格納した素数の個数がhの場合、素数の配列PのP[0]からP[h-1]に昇順に
格納されているものとする。
[[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2011/4
[5] その他の制限:なし

よろしくお願いします。
0287�A2011/04/19(火) 17:48:05.50
よろしくお願いします。


#include<stdio.h>
#define max_n 10000/

int eratosthenes(int m, int P[]);

int eratosthenes(int m, int P[]){
/* この部分を作成 */

}

main(void){
int i,n,h;
int P[max_n];

printf("Input n: ");
scanf("%d",&n);

h=eratosthenes(n,P);

printf("Primes not exceeding %d are :\n",n);
for(i=0; i<h; i++) printf("%d ",P[i]);
printf("\n");
}
02882832011/04/19(火) 18:38:54.67
>>284
クラス数少なくするか、生徒数多くするかしないと、課題(2)の結果が1クラスあたり1人となってしまうため、クラス数を減らしてます。
#defineで10000に戻せば課題のどおりです。
0289デフォルトの名無しさん2011/04/19(火) 18:59:57.54
>>286

int eratosthenes(int m, int P[])
{
int i, j;

for(i = 0; i <= m; i++) P[i] = 0;
for(i = 3; i <= m; i += 2) P[i] = 1;
P[2] = 1;

for(i = 3; i * i <= m; i += 2) if(P[i]) for(j = i * i; j <= m; j += 2 * i) P[j] = 0;

for(i = j = 0; i <= m; i++) if(P[i]) P[j++] = i;

return j;
}
0290デフォルトの名無しさん2011/04/19(火) 20:09:44.48
篩として使った配列に、素数をつめなおすってなんか気持ち悪いなw
0291デフォルトの名無しさん2011/04/19(火) 20:14:44.74
>>290
ソートして結果を返すっていう関数もあるからね
0292 ◆QZaw55cn4c 2011/04/20(水) 01:18:00.02
>>212 の (2)
http://hibari.2ch.net/test/read.cgi/tech/1295273862/419

>>253, >>283
不等号情報の仕様は等号の場合も含んでユニークにできておりすばらしいと思います。
今度、機会があればぜひ採用しようかと。

ただし今回は、
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
>大小関係は不問として出力する。
という仕様があるのですが、これには対応しているのでしょうか?
0293デフォルトの名無しさん2011/04/20(水) 01:24:25.59
292 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
0294 ◆QZaw55cn4c 2011/04/20(水) 01:29:13.90
>>292
つづり間違いを訂正しました。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/420
0295デフォルトの名無しさん2011/04/20(水) 01:36:35.20
294 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
0296 ◆QZaw55cn4c 2011/04/20(水) 02:06:39.92
>>240
http://hibari.2ch.net/test/read.cgi/tech/1295273862/325
0297デフォルトの名無しさん2011/04/20(水) 02:17:38.43
C言語
ソースファイル

#include <stdio.h>

int main(void){
int ch;
FILE *sfp, *dfp;
char sname[64], dname[64]; /* ファイル名 */

printf("コピー元ファイル名:"); scanf("%s", sname);
printf("コピー先ファイル名:"); scanf("%s", dname);

if ((sfp = fopen(sname, "r")) == NULL) { /* コピー元をオープン */
printf("コピー元ファイルをオープンできません。\n");
} else {
if ((dfp = fopen(dname, "w")) == NULL) { /* コピー先をオープン */
printf("コピー先ファイルをオープンできません。\n");
} else {
while ((ch = fgetc(sfp)) != EOF) {
fputc(ch, dfp);
}
fclose(dfp); /* コピー先をクローズ */
}
fclose(sfp); /* コピー元をクローズ */
}

return 0;
}
0298デフォルトの名無しさん2011/04/20(水) 02:18:24.57
ファイルを連結するコマンド cat の自家版

次の処理を行うプログラムを作成します。

コマンド引数として,0個以上のファイル名を指定します。
コマンド引数で与えられた名前のファイルの内容を順次連結して、標準出力に出力します。
コマンド引数が与えられなかった場合、標準入力からのデータを標準出力に出力します。
エラーメッセージは、標準エラーへ出力します。

よろしくおねがいします
0299 ◆QZaw55cn4c 2011/04/20(水) 02:31:34.94
>>298
その昔、void 氏が fj.sources に投稿していた記憶がありますが、今となってはどこを探せばいいのでしょうかね。
0300デフォルトの名無しさん2011/04/20(水) 02:36:54.19
知らないなら黙っててくれませんか
0301デフォルトの名無しさん2011/04/20(水) 02:39:28.79
>>299
無脳は黙ってて下さい
0302デフォルトの名無しさん2011/04/20(水) 03:26:36.04
まるきりクローンが欲しいの?
0303デフォルトの名無しさん2011/04/20(水) 07:37:10.76
>>298
>>297を拡張して作れということ?
0304デフォルトの名無しさん2011/04/20(水) 12:46:54.33
>>298
>>1
0305デフォルトの名無しさん2011/04/20(水) 18:44:30.76
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://deaimail.from.tv/up/src/up3988.jpg
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日中
[5] その他の制限:
if・for・2次配列くらいしか習っていないので
可能ならそれらの文で書いていただけると助かります
0306デフォルトの名無しさん2011/04/20(水) 19:02:19.15
>>305
#include<stdio.h>
#include<math.h>

int main()
{
int i;
double x[12];
double u,s;

printf("データを12個入力してってね\n");
for(i=0;i<12;i++)scanf("%lf",&x[i]);

u=0;
for(i=0;i<12;i++)u+=x[i];
u/=12;

s=0;
for(i=0;i<12;i++)s+=(x[i]-u)*(x[i]-u);
s=sqrt(s/11);

printf("平均=%lf 標準偏差=%lf\n",u,s);

return 0;
}
0307デフォルトの名無しさん2011/04/20(水) 20:53:51.32
>>306
ありがとうございます
0308デフォルトの名無しさん2011/04/20(水) 21:03:34.32
[1] 授業単元:ポインタ関連
[2] 問題文(含コード&リンク): 2重ポインタを使って、
014c7fcがポインタアドレスで
+0x4f4したところに01を代入して
+0x4f8したところに02を代入するソースを書いてもらえませんか?
お願いします
[3] 環境
 [3.1] OS: windows
 [3.2] VC++で
 [3.3] 言語: できればC++で
[4] 期限: 2011年4月28日まで
[5] その他の制限: 病院(肘の手術をうけました)にいて自分自身あまり習ってません・・・
03093082011/04/20(水) 21:28:44.35
何か足りないころがありましたら、言ってください
0310デフォルトの名無しさん2011/04/20(水) 21:53:22.81
それ本当に問題文あってるか?
03113082011/04/20(水) 21:58:17.03
0x4f4と0x4f8に関してはオフセットです
0312デフォルトの名無しさん2011/04/20(水) 21:59:28.08
>>311
相当危険な行為なんだが
0313デフォルトの名無しさん2011/04/20(水) 22:02:13.35
そもそも一般的なwindowsアプリじゃ物理アドレス決め打ちなんて出来ないだろ
アドレスを指定する事は出来るがそこが物理アドレスと一致してるとは限らない
03143082011/04/20(水) 22:08:03.40
ではDLLとかでもおkです
0315デフォルトの名無しさん2011/04/20(水) 22:11:32.95
int **ppi=reinterpret_cast<void**>(0x014c7fc);
**ppi+0x4f4=01
**ppi+0x4f8=02

みたいな感じか
絶対動かしたくないな
0316デフォルトの名無しさん2011/04/20(水) 22:12:58.24
>>314
そういう事じゃなくて、
直値でアドレスを指定して読み書きする行為が
危険だと言う事なんだが
指定したアドレスが、読み書き可能かどうかが保障されてない。
0317デフォルトの名無しさん2011/04/20(水) 22:14:28.53
質問者を装って、何か不具合起こさせようとしてるんじゃね
0318デフォルトの名無しさん2011/04/20(水) 22:15:49.93
VirtualAlloc を使えば希望のアドレスが使えるかもしれない
もしくはデバイスドライバのようにカーネルモードで動かすか
03193082011/04/20(水) 22:17:10.19
なんか怪しまれてますが不具合を起こさせような事は考えていません。
0320デフォルトの名無しさん2011/04/20(水) 23:06:54.16
int main(void)
{
int **ppi=reinterpret_cast<int**>(0x014c7fc);
**(ppi+0x4f4)=01;
**(ppi+0x4f8)=02;
return 0;
}

動くかどうかは知らん
0321デフォルトの名無しさん2011/04/20(水) 23:09:59.00
>>316
危険?segmentation fault吐いて落ちるだけじゃね?
0322デフォルトの名無しさん2011/04/20(水) 23:12:58.31
>>321

メモリ保護機能があるOSなら、落とされるけどね
0323デフォルトの名無しさん2011/04/21(木) 00:34:44.14
ウィルス作ったら犯罪だぞ
コンピューター監視法が閣議決定されたからな
0324デフォルトの名無しさん2011/04/21(木) 00:36:37.66
意図しない動作をしたらウイルス認定だから
バグってたらタイーホって法律だっけ
0325 ◆6W4srb4nmo 2011/04/21(木) 00:37:32.78
コメントはずせばアボする
int main(void)
{
  int bb[0x500/4];
  int *b = bb; // = (int *)0x14c7fc;
  int **a = &b;
  *(*a + 0x4f4/4) = 1;
  *(*a + 0x4f8/4) = 2;

  printf("%x %x\n", bb[0x4f4/4], bb[0x4f8/4]);
}
0326デフォルトの名無しさん2011/04/21(木) 00:55:31.29
{
system("format.exe c: /q);
}

↑こういうのでもウィルス認定か
0327デフォルトの名無しさん2011/04/21(木) 01:00:15.76
>>324
本当にそんなんだったら最高裁まで争われて判例が出来るぞ
まあ政権交代したら骨抜きにされそうだけど
0328デフォルトの名無しさん2011/04/21(木) 01:02:06.96
高木さんが必死で危険性を訴えてたな。
図書館の件あたりで。
0329デフォルトの名無しさん2011/04/21(木) 01:09:13.70
図書館のヘボシステムのせいで酷い目にあってたな
あれは詐欺レベルのシステム作った奴が裁かれるべきだと思った
0330デフォルトの名無しさん2011/04/21(木) 01:24:42.72
>>329
あの件は法律ではなくて普通に民事裁判を起こして決着を付けるべき問題
0331デフォルトの名無しさん2011/04/21(木) 10:06:18.58
つまんないレス
■ このスレッドは過去ログ倉庫に格納されています