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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2011/07/20(水) 00:33:39.96
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

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

08098072011/07/29(金) 17:59:49.20
for (num = 0; num < 100; num++)
でした
0810デフォルトの名無しさん2011/07/29(金) 18:23:00.14
C言語の部分はそれで完成でしょ
あとは出力をcsvファイルにしてExcelにつっこんだらおしまい
0811デフォルトの名無しさん2011/07/29(金) 18:35:22.19
>>810
ここまでは出来たんだが、
http://codepad.org/Fj0kd1oh
>各数値が何回乱数として発生したのか
のやり方がわからん

どうすればいいんだ?
0812デフォルトの名無しさん2011/07/29(金) 18:49:30.74
要は1から10000までの回数に合わせてその乱数も保存しろって事でしょ。あとからエクセルで処理しやすい様にする配慮かと

例えば

1 149
2 24
3 87
.
.
.
10000 134

的な
0813デフォルトの名無しさん2011/07/29(金) 18:54:27.00
>>811
あれ?808-809でできてたのになんで違うコードなの?別人?
csvを標準出力に出せてるから、リダイレクトとかでcsvファイルとして保存して
Excelで開いてグラフにすれば終わりだよ

無理にC上でファイルに出力することも無いと思うよ
08148072011/07/29(金) 19:06:35.43
現在は
http://codepad.org/BTOOm7o4
です。どうしましょう
0815デフォルトの名無しさん2011/07/29(金) 19:20:19.06
リダイレクトでいけるって
0816デフォルトの名無しさん2011/07/29(金) 19:23:00.94
csvで出せって言ってるんだからその辺は省略しちゃダメだろ
0817デフォルトの名無しさん2011/07/29(金) 19:36:38.45
>>814
どうしましょうも何も完成してるじゃん
Excelで開いてグラフ作ったらおしまい
08188072011/07/29(金) 19:50:52.71
>Excelで開いてグラフ作ったらおしまい
をプログラムからしたいんですが、難しいですか?
簡単ならプログラムしたいんです
今はsystem(fname);
でExcelが起動して、csvは出るんですが
0819デフォルトの名無しさん2011/07/29(金) 19:58:18.54
相当ハードルは高い
やめておくことを勧める

WindowsのCOMと言うものを勉強して、COMの操作方法を覚えて、Excelを開いたときの操作方法を覚えれば可能だろうね
そんなwindows限定の狭い知識は、必要になったときに覚えればいいと思うよ
0820デフォルトの名無しさん2011/07/29(金) 20:05:57.11
グラフがExcelで作るように指定されてるから駄目だけど
プログラムからグラフ作りたいならgnuplotとか使うとそれなりにはできるね
まあこれもgnuplotの使い方を覚えんといかんけど
0821デフォルトの名無しさん2011/07/29(金) 20:17:14.33
>>807を質問したものだが…
コテ付けている人は俺と同じ大学っぽいな

http://codepad.org/Fj0kd1ohで出来ていた
>>812の意見を参考にこのプログラムをデバックしてそのファイルをもとにExcelでグラフを作った

0822デフォルトの名無しさん2011/07/29(金) 20:36:48.06
>>819
今が必要なときだっつてんの
0823デフォルトの名無しさん2011/07/29(金) 20:41:32.60
何でもかんでも必要だと思って覚えようとすると確実に破綻する
すでにある知識やその他ちょっとした知識で解決方法を探すべき
本当に必要なものを見極めて必要ないものはその時点ではあきらめることも必要
0824デフォルトの名無しさん2011/07/29(金) 20:43:13.05
>>822
なら覚えればいいと思うよ
0825デフォルトの名無しさん2011/07/29(金) 21:05:38.10
>>822
そもそも宿題は復習だろ
習ってない問題なんか出るわけない
>>821の方法でいいだろ
0826デフォルトの名無しさん2011/07/29(金) 22:01:28.52
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
パーティクルを採用した、エフェクトプログラムデモを作成する。
・光の粒子が回転移動。
・爆発エフェクト(破片の物理移動)など。
例)花火
情報の洗い出し → 構造体
2.初期化 → 爆発時に初期データセット
3.実処理 → 移動、加減速、色調
4.後処理 → 情報の削除(メモリの解放)
[3] 環境
[3.1]OS:Windows7
[3.2]コンパイラ名とバージョン:VC6.0
[3.3]言語:Cのみ
[4] 期限:8月1日
[5] その他の制限:エフェクトは自由にとのことでしたが、炎や、爆発や雷で作っていただけるとありがたいです。よろしくお願いします。
DirectXは使用不可です。コンソールアプリでお願いします。3Dは使わず、"*"や、"+"などの記号で表現お願いします。お手数ですが、コメントよろしくお願いします。
0827デフォルトの名無しさん2011/07/29(金) 22:12:38.06
http://hibari.2ch.net/test/read.cgi/tech/1217741118/86
3年前に同じ問題のレスがあるな
そのときついた解答はinfoseekだからもう見れないが
0828デフォルトの名無しさん2011/07/29(金) 22:17:06.30
正直どんなプログラムなのかほとんどイメージできない
コンソール画面に記号を使って炎や爆発や雷やらを表現しろってこと?

cursesでもつかってがんばってアニメーションさせるのかなあ
0829デフォルトの名無しさん2011/07/29(金) 22:31:01.41
千夏タンの>>648
って難しいかな>>QZさん
0830デフォルトの名無しさん2011/07/29(金) 22:41:25.64
動くAAって感じ?
0831デフォルトの名無しさん2011/07/29(金) 22:44:50.49
>>808
がんばりたんわかゆす
0832デフォルトの名無しさん2011/07/29(金) 23:13:54.20
>>805-806の者ですが
期限が少し延び、8月1日の12:00までとなりました。
宜しくお願いします
0833デフォルトの名無しさん2011/07/29(金) 23:26:06.28
>>832
ねぇ、ねぇMacの機種・OSは何を使っているの?
0834デフォルトの名無しさん2011/07/29(金) 23:27:02.91
Macでプログラミングを教える学校ってFラン?
0835デフォルトの名無しさん2011/07/29(金) 23:30:41.25
>>834
違います。有名女子大ですよ
0836デフォルトの名無しさん2011/07/29(金) 23:38:23.65
有名女子大って1つしか無くね
0837デフォルトの名無しさん2011/07/29(金) 23:52:53.83
有名女子大ってMacでプログラミング教えるようなFランだったんだ
0838 ◆QZaw55cn4c 2011/07/30(土) 00:08:01.26
>>648
>>829
とりあえず、迷路を描くところまで。今のところは、入力は二つとも奇数じゃないといけません。あと、すごくみにくいんですけど。
http://ideone.com/AU2q3

昔やったことあるなあ。http://pc11.2ch.net/test/read.cgi/tech/1199515728/659
0839デフォルトの名無しさん2011/07/30(土) 00:10:39.53
>>805
>[5] その他の制限: 必ず構造体(new_nodeやpool等)を用いること
>「switch」を用いて任意の順番で出来るようにして下さい

これどういうこと?
new_nodeやpoolって構造体?関数?どんな仕様か書かないと回答できないよ
「switch」を用いて任意の順番で処理〜って主語はなに?
0840デフォルトの名無しさん2011/07/30(土) 00:12:28.52
ソース中にxmallocという文字列が見つかった場合、それはQ製かもしれません・・

という怪談
0841デフォルトの名無しさん2011/07/30(土) 00:17:36.89
>>838
>正解経路は一つに決まること
これを読む限り正解でない(袋小路となる)経路も存在させる前提が見えるね
はい、リテイクできるね。楽しいね!
0842デフォルトの名無しさん2011/07/30(土) 00:20:09.00
この形式の迷路は棒倒しじゃなくて壁を延ばすアルゴリズム使わないとあれじゃない?
0843 ◆QZaw55cn4c 2011/07/30(土) 00:21:26.08
>>840
それはごく最近の話。malloc()/free() のバグがなかなか取れなくて、とうとうラッパを作ってしまいました。
ごく最近、codegurad/borland を教えていただいた次第。プロはみんなこんなのを使うんですね。
0844 ◆QZaw55cn4c 2011/07/30(土) 00:23:41.83
>>841
それは曲解というもの。袋小路が存在しなければならない、とは指示されてはいません。
せいぜい「袋小路ができてもよい、解がひととおりであれば」くらいが限界でしょう。

>>842
棒倒しで十分ですよ。
0845デフォルトの名無しさん2011/07/30(土) 00:27:57.04
>>805
ttp://ideone.com/JDdaA
0846デフォルトの名無しさん2011/07/30(土) 01:49:48.69
>>827>>828>>830
検索したら3年前に似たような問題があったのですが回答が見れなくて書き込み
しました。*や+が画面にちらばり雷や*が広がって花火になるようなパーティクル
でエフェクトを作っていただきたいのです。説明下手ですいません。
どうかよろしくおねがいします。
0847 ◆QZaw55cn4c 2011/07/30(土) 01:59:19.75
>>648
>>829
>>669 にしたがって、迷路の解経路も表示するようにしました。
http://ideone.com/64tHG

>>842
思い直しました。おっしゃるとおり棒倒しはいまいちですね。
棒倒しだと 1)解が単純(ほぼ対角線上)、2)偶数サイズ指定に対応するのが面倒、だと思い至りました。
0848デフォルトの名無しさん2011/07/30(土) 07:17:14.87
>>846
パーティクルとエフェクトとは何か?
一般的な単語の理解でいいのかなんなのか
「パーティクルを採用した」ってのと
「エフェクトプログラムデモ」ってのが具体的に何をさしているのか
0849デフォルトの名無しさん2011/07/30(土) 08:21:08.73
Windows7だとコンソールAPIで制御しないとだめじゃないかめんどいな
0850デフォルトの名無しさん2011/07/30(土) 10:20:40.55
>>833
Mac OS Xです
>>839
自分自身この辺を理解してないので上手く説明出来ませんが
poolなどはstructで
ポインタなども使います
switchで閲覧、入力などを選ばして欲しいと言う意味です
0851デフォルトの名無しさん2011/07/30(土) 10:22:35.19
アフォな質問ですまんが
winMEでも使えるフリーのC言語統合開発環境を教えてください

0852デフォルトの名無しさん2011/07/30(土) 11:28:05.47
>> 839,850
エスパーしてみた。
typedef struct {
char n[6];
int suugaku;
int eigo;
struct pool*new_node;
} pool;
0853デフォルトの名無しさん2011/07/30(土) 13:03:47.54
>>805
ロード、セーブ、表示、追加、削除ができれば良いの?
セーブや全件表示の場合はソートが必要?
0854デフォルトの名無しさん2011/07/30(土) 14:53:15.40
誰か>>804無理ですか?
0855デフォルトの名無しさん2011/07/30(土) 14:56:56.57
変なこと言ってすいません
質問板で聞いてくる
0856デフォルトの名無しさん2011/07/30(土) 15:31:30.10
>>850
俺のエスパーだとその説明は間違ってて↓を要求されてるんじゃないかと疑ってる

・nodeという構造体を使用
・poolというnode型のポインタで未使用nodeのリストを持つ
・new_nodeという関数でpoolからnodeをひとつ取得して使う
・del_nodeという関数で使用済みnodeをひとつpoolの末尾に返却する
0857デフォルトの名無しさん2011/07/30(土) 16:41:03.38
>>848>>849
0858デフォルトの名無しさん2011/07/30(土) 16:45:06.55
>>848説明へたくそですいません。一般的な単語の理解でいいです。
パーティクルを使って炎などのエフェクトを作りなさいとのことでした。
>>849コンソールAPIでお願いします。お手数かけます。
08595482011/07/30(土) 18:14:48.98
何度も申し訳ありませんが、750の問題6-2のプログラムを
ファイルポインタを用いたものにしていただけませんか
0860デフォルトの名無しさん2011/07/30(土) 18:17:27.86
ならなぜC++とか抜かしたんだ
08615482011/07/30(土) 18:24:21.95
>>860
複素計算を行うためにはC++でなければいけないと習いましたもので
0862デフォルトの名無しさん2011/07/30(土) 18:40:15.97
ベターCの癖にC++とか指定するの死んだほうがいいのに
0863デフォルトの名無しさん2011/07/30(土) 18:42:22.92
>>861
C++じゃなくても複素計算できるよ
その先生おかしいから信じないほうがいいよ
0864805 8502011/07/30(土) 18:52:21.71
こんな感じになるらしいです、各処理の仕方が分からないんです
#include<stdio.h>
#include<string.h>
#defineN20
struct student{
int id;
double suugaku;
double eigo;
struct student *next;};
struct student node[N];
struct student *make_pool(int n);
struct student *new_node(struct student **p);
void back_node(struct student **p, struct student *n);
void print_list(struct student *p);
int main(){
08655482011/07/30(土) 18:56:58.72
CとC++についての理解力が足りずご迷惑をかけてしまったことについてはお詫びいたします
すみませんでした

ですが、そこをどうにかお願いできませんか
0866デフォルトの名無しさん2011/07/30(土) 19:10:17.04
>>859
ttp://codepad.org/g8xFtCOo
08675482011/07/30(土) 19:13:37.66
>>866
ありがとうございます
今後はCとC++についてよく考えるようにします
0868デフォルトの名無しさん2011/07/30(土) 19:41:41.02
>>864の
struct student node[N];
struct student *make_pool(int n);
は何をするんだ?
0869デフォルトの名無しさん2011/07/30(土) 20:22:40.99
void  back_node(struct student **p, struct student *n); 
も十分に謎だ
08708052011/07/30(土) 20:48:00.46
>>868
struct student node[N];
ノードプール用配列
struct student *make_pool(int n);
空ノードのプール作成。nは確保するノードの個数
ノードプールの先頭アドレス
>>869
void back_…
プールに返されたノードは最後尾にリンク
**pはプールの先頭へのポインタのアドレス
*n、返すノードへのポインタ
と、教員から頂いた資料に書いてあります
0871デフォルトの名無しさん2011/07/30(土) 21:27:46.09
>>870
とりあえず頂いた資料うpしろ
話はそれからだ
0872デフォルトの名無しさん2011/07/30(土) 21:52:03.98
先生から許可貰ってないのにうpしたら駄目だろ
0873デフォルトの名無しさん2011/07/30(土) 21:56:46.13
>先生から許可貰ってないのに

宿題を依頼するのに、許可がいるのか?
0874デフォルトの名無しさん2011/07/30(土) 22:16:39.80
入出力する番号は"N0003"形式なのにint?
しかもNは全角だったか・・・
08758052011/07/30(土) 22:17:02.46
http://ideone.com/OmSnQ
頂いた資料のコピーです
これを参考にするらしいのですが
自分にはさっぱりで
0876デフォルトの名無しさん2011/07/30(土) 22:21:50.60
これ最初から出しとかないと先生の指定したものと全然違うものが出来て0点だっただろwwwww
有名女子大生なにしとんwwwwwww
0877デフォルトの名無しさん2011/07/30(土) 22:22:03.06
これを公開せずしてやらせようとしてたとは・・・
0878デフォルトの名無しさん2011/07/30(土) 22:34:21.73
malloc() を使わないで線形リストを実現したいのかなぁ....
困った問題だ、ちゅか困った講師だ
0879デフォルトの名無しさん2011/07/30(土) 22:50:13.34
>>805
http://ideone.com/CdumA
0880 ◆QZaw55cn4c 2011/07/30(土) 23:07:28.39
>>878
malloc()/free() は鬼門ですからね‥‥‥。java/c# を教材にすればいいのにね。
0881デフォルトの名無しさん2011/07/30(土) 23:26:59.57
>>880
盗作防止に変な問題作ったって線は無い?

malloc()/free() が無かったらC言語じゃないと思うんだけどなぁ
0882デフォルトの名無しさん2011/07/30(土) 23:44:04.55
それはhello world!はC言語じゃないってディスってるの?
0883デフォルトの名無しさん2011/07/30(土) 23:49:23.88
>>881
組み込みはC言語じゃないと申すか
0884デフォルトの名無しさん2011/07/31(日) 00:14:23.81
>>883
組み込みだって動的確保くらいできるだろ、インターフェイスの違いは有るだろうけど
C言語の味わいって (void*) を返す大雑把な動的確保に有ると俺は信じてる(多分俺だけ?)
0885デフォルトの名無しさん2011/07/31(日) 00:19:20.77
>>884
リッチな組み込みとそうじゃない組み込みがある
後者は確保とか無くて用途ごとに使うアドレスが固定
0886デフォルトの名無しさん2011/07/31(日) 00:45:53.79
>>885
何を言ってるんだ?
malloc/freeが無い環境だろうがなんだろうが、
必要なら作るのがcプログラマだろ?
0887デフォルトの名無しさん2011/07/31(日) 00:52:53.11
以前より少なくなったが旧製品のメンテだと、たまにバイト単位の節約が必要な事があるな。
これ以上はスレ違いなので、必要なら組み込みスレで。
0888 ◆QZaw55cn4c 2011/07/31(日) 01:15:18.41
>>884
思いはわかるんです、とっても。つい先日も私も嵌って一日うんうんいってましたし。(これで何十回目でしょうかね。)
でも「C言語じゃない」といいきってしまうと、んー、C の適用範囲が広いだけに、いろいろと異論もでてこようものでして、あはは。
0889デフォルトの名無しさん2011/07/31(日) 01:25:37.53
>>875>>878>>886

こういう方式はフリーリストとか読んでいました。
実際に組み込みでこの方式を採用して開発の経験があります。

ノード1つの大きさが固定で、最大数が正確に見積もれるのならば、
有効な方法です。

malloc/freeの替りにnew_node/back_nodeを使うことになります。
mallocと違い、確保できるメモリ領域サイズは固定です。
0890 ◆QZaw55cn4c 2011/07/31(日) 01:29:44.97
>>889
なるほど。
lisp の実装の一つに特定の固定長の領域を先に大量にプールしておくというのがあったことを記憶しています。
6809 上の処理系でした。
0891デフォルトの名無しさん2011/07/31(日) 01:53:02.59
貴様らの意見をまとめると>>>805の講師は組み込み系のプログラマだったってこと?
0892デフォルトの名無しさん2011/07/31(日) 02:29:32.31
ゼビウスで使われたタスクシステムがこんな感じだね
0893デフォルトの名無しさん2011/07/31(日) 02:35:01.17
>>889
サイズ固定のメモリ確保/解放を高速におこなうためのメモリプールは良くやる手法だと思う。
Effective C++にもplacement newで出てるのと考えは同じ。

>>891
組み込みの人なのかね?
new_node()の対がback_node()なのが頂けないなw
0894デフォルトの名無しさん2011/07/31(日) 02:42:12.80
仮想メモリのページングを自分で実装したり、仮想マシンのメモリ管理に BIBOP を使ったり
する事を想定した授業なのかな
0895デフォルトの名無しさん2011/07/31(日) 07:15:31.50
uITRONにある固定長メモリプールはまさしくこんな機能だよ
08968052011/07/31(日) 12:03:13.46
>>879
ありがとうございます
0897デフォルトの名無しさん2011/07/31(日) 13:18:55.19
>>884
>C言語の味わいって (void*) を返す大雑把な動的確保に有ると俺は信じてる(多分俺だけ?)

いや、それはC言語と関係ないだろ。
0898デフォルトの名無しさん2011/07/31(日) 14:06:00.40
むしろI/O叩きだろ
0899 ◆QZaw55cn4c 2011/07/31(日) 14:11:44.71
>>897
そう?
それは malloc()/free() がライブラリ関数という形式で提供されているから、という理由でですか?
そういえば pascal にも new/dispose がありましたね。これは規格内だったか外だったか?
0900デフォルトの名無しさん2011/07/31(日) 16:33:33.83
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
C言語の乱数発生関数を使ってサイコロ関数  int dice( void ) を作成し、以下の統計的な性質を検証せよ。
(1) 10,100,1000,1万回、10万回、100万回、1000万回、1億回の試行での 期待値(平均値)の変化
(2)前記の試行回数での各数字の出目の確率
(3)2つのサイコロを投げた時の11、22のようなぞろ目の確率
レポートのグラフはExcelを用いる。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 2011年8月3日
[5] その他の制限: 特になし

お願いします
0901デフォルトの名無しさん2011/07/31(日) 16:50:35.37
>>900
結果の出力はコンソール画面でいいのかい?
csvファイルに出力するとかだったりしないか?
0902デフォルトの名無しさん2011/07/31(日) 17:18:38.69
宿題とは関係ないけど、8月になっても大学・高専・専門は
正規授業がいまやあるのか?
0903デフォルトの名無しさん2011/07/31(日) 18:24:47.69
今年の場合は例外もいろいろあるんでないの?
3.11の影響で開始を遅らせた所はいくつかあったようだし
0904デフォルトの名無しさん2011/07/31(日) 20:00:08.48
>901
コンソール画面でいいです。
0905デフォルトの名無しさん2011/07/31(日) 20:22:48.39
>>826
ttp://codepad.org/hKTQeKg8
0906デフォルトの名無しさん2011/07/31(日) 20:24:52.85
>>900
ttp://codepad.org/M40tJWkn
0907デフォルトの名無しさん2011/07/31(日) 20:30:46.83
ありがとうございます!
0908デフォルトの名無しさん2011/07/31(日) 20:38:23.18
一億回呼ぶ関数の中で初期化の分岐とかw
レス数が900を超えています。1000を超えると表示できなくなるよ。