C/C++の宿題片付けます 157代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/04/27(金) 18:10:16.77【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
0686デフォルトの名無しさん
2012/05/28(月) 08:53:47.51素数の定義間違ってますよ
0687デフォルトの名無しさん
2012/05/28(月) 12:13:45.22ありがとうございます。これをもとになんとか理解できるようにがんばってみます!
0688デフォルトの名無しさん
2012/05/28(月) 12:27:50.72すいません。これをアルゴリズムとしてすごくシンプルに実装したいんですが、どうしたらいいでしょうか?
http://uproda11.2ch-library.com/350647OFD/11350647.jpg
http://i.imgur.com/JxyMU.jpg
0689デフォルトの名無しさん
2012/05/28(月) 12:29:48.75板違いです
ここは小学生がくるようなところではありません
0690デフォルトの名無しさん
2012/05/28(月) 13:39:34.890691デフォルトの名無しさん
2012/05/28(月) 13:45:02.01[2] 問題文(含コード&リンク):水差し問題 4l,3lの容器を使って4l容器で2lをはかるプログラムをC言語でおねがいします
[3] 環境
[3.1] OS: Windows emacs LX terminal
[3.2]
[3.3] 言語: C
失礼しましたもう一度質問します
0692デフォルトの名無しさん
2012/05/28(月) 15:32:18.00ぐぐったらでてきた
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1039718875
0693デフォルトの名無しさん
2012/05/28(月) 15:56:41.900694デフォルトの名無しさん
2012/05/28(月) 16:31:32.31false→0
true→1
にすればおk
0695デフォルトの名無しさん
2012/05/28(月) 16:33:19.50それらを関数の頭に集める
0696デフォルトの名無しさん
2012/05/28(月) 16:40:38.79以上をCで書いてみた
http://ideone.com/bktlI
でもさ、これアルゴリズムがプログラムの中に書かれてしまっていて、バックトラックを使って
自分で探すのと違うよね
0697デフォルトの名無しさん
2012/05/28(月) 18:15:45.44http://ideone.com/hDIez
最後の配列t[16][16]が単位行列になりません
お願いします
0698デフォルトの名無しさん
2012/05/28(月) 18:21:46.492chなら容認されてもロダにあげたら
悪意があるとしか思えんよ
0699デフォルトの名無しさん
2012/05/28(月) 18:24:07.70うん、超限定してるねw
0700デフォルトの名無しさん
2012/05/28(月) 18:25:01.410701デフォルトの名無しさん
2012/05/28(月) 19:19:16.98「馬鹿は死なねば治らないのであり、だからこそアナトール・フランスは
『愚かな者は、邪悪な者よりも忌まわしい』と言ったのだ。
邪悪な者は休むときがあるが、愚かな者はけっして休まないからである。」
(ホセ・オルテガ・イ・ガセット 1883〜1955)
>>247
>ゲームは作らんから知らんが、
224 == 247 == 704 == 717
口癖はコンポジション
>>772
>ゲーム作らなくてもお前よりマトモ
タスクの実行順序を意識しないとゲームが作れない(笑)
>>767
敵機 → プレイヤー の順序でタスクを実行するとタスクがぶっ壊れる
OOを得意げに語っているつもりが、やっている事が20年前のC言語だったという事実
バイナリの書き換えがわからない
コンパイラ言語のことをコンパイル言語とか言っちゃう
タイプミスの数々
http://toro.2ch.net/test/read.cgi/tech/1336122899/190
http://toro.2ch.net/test/read.cgi/tech/1336122899/297
http://toro.2ch.net/test/read.cgi/tech/1325246820/837-839
http://toro.2ch.net/test/read.cgi/tech/1336122899/318-320
http://toro.2ch.net/test/read.cgi/tech/1336122899/332-334
http://toro.2ch.net/test/read.cgi/tech/1336122899/818
0702デフォルトの名無しさん
2012/05/28(月) 21:40:36.08>>698さん、すいませんでした。
以後、気をつけます。
0703デフォルトの名無しさん
2012/05/28(月) 22:41:12.50レポート課題
標準入力で与えた単語が,指定ファイル中に出現した回数を出力するプログラムを作成せよ.
単語データは以下の構造体を使用し,ハッシュを使用すること
ハッシュ関数は各自で定義してよい
単語は,スペースまたは改行で区切られる文字列とする
ハッシュのサイズはコマンド引数から指定し,作成したハッシュテーブルの偏り具合を表示すること
struct word {
char *str;
int count;
struct word *next;
};
実行例
$ ./wordcount 13 api.txt
[0]:147 [1]:133 [2]:170 [3]:137[4]:133[5]:132 [6]:160 [7]:167 [8]:136 [9]:154 [10]:142 [11]:149 [12]:125
Word => API
API: 10
Word => virtual
virtual: 33
Word => 0
$
お願いします。
0704デフォルトの名無しさん
2012/05/28(月) 23:21:41.790705デフォルトの名無しさん
2012/05/28(月) 23:27:16.09いいよ、インデントごときでわめくのはそれはそれで素人だから
0706デフォルトの名無しさん
2012/05/28(月) 23:43:06.32アホかオメーは
くっさいくっさいクソコードでもまき散らして自爆失業でもしろよwww
0707デフォルトの名無しさん
2012/05/28(月) 23:45:04.720708デフォルトの名無しさん
2012/05/28(月) 23:47:27.07コードを公開するのは恥さらし。その程度なんて軽々しく言う奴の意見なんて無視しろ。
身嗜みもいい加減で外に出ても、まともに相手にされないのと同じだよ。
他人の目に付かない場所でひっそりと自己満足で生きてろってことだ。
0709デフォルトの名無しさん
2012/05/28(月) 23:49:35.82かなりのレヴェルだぞ
低い方の
内容以前のksにつきあっても意味ないじゃん
0710デフォルトの名無しさん
2012/05/29(火) 00:04:57.58どのスタイルにすべきかをテンプレに書いたら?
インデントが整ってないと読むこともできない人しか得をしないけど。
0711デフォルトの名無しさん
2012/05/29(火) 00:18:08.700712デフォルトの名無しさん
2012/05/29(火) 00:39:50.65[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
入力した2進数の数値について、10進数表記に直す計算を行いたい。
以下に示すように、下の桁から順に2をかける回数を増やすように計算を行い、最終的な結果を表示せよ。
なお、再帰は用いなくてよい。
参考:ttp://kie.nu/bOw
ttp://kie.nu/bOx
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:Visual Studio2010
[3.3] 言語:どちらでも可
[4] 期限:5/30
[5] その他の制限:
インデントをつけてくれたり、括弧の対応を明示してくれたり、色づけしてくれたりするエディタを使うと、かなり楽になります。
私は寄る年波に勝てず昔から使っている xyzzy を手放せないかわいそうな状態ですが、visual studio とか、すごくよさそうです。キーバインドを換える方法がわかれば乗り換えたいのですけれども。
0717デフォルトの名無しさん
2012/05/29(火) 01:10:52.15どんな点をみて頭がおかしいと感じられたのか、もしよろしければ教えてください。
0719デフォルトの名無しさん
2012/05/29(火) 01:20:23.53もっと簡単な表記に出来ないでしょうか?130行ぐらいがいいんですが?
0720デフォルトの名無しさん
2012/05/29(火) 01:21:38.08自分で気付けない奴に何を言っても無駄
自分で気付けるようになるまでせいぜい言われてろ
0721デフォルトの名無しさん
2012/05/29(火) 01:27:15.780722デフォルトの名無しさん
2012/05/29(火) 01:29:00.08xmallocとか変な関数を使わないでもらえませんか?すぐバレてしまうんですけど
残念。他の方におまかせしましょう。
>>722
関数じゃありません、マクロです。
上のほうにマクロの定義がかいてありますから、それをみて手でなおしてくださいな。
>>720
こちらからは、記述できるけれどもしないのか、それとも記述能力がないのかを区別できないのですが、
なにかこれら二者を区別するヒントでもいただけませんか?
0724デフォルトの名無しさん
2012/05/29(火) 01:56:46.21区別しなくていいよ
そういう問題じゃないからさ
0725デフォルトの名無しさん
2012/05/29(火) 02:18:11.82少しは成長したようだな
用いてもいいとしますね。http://ideone.com/QvhJc
0727デフォルトの名無しさん
2012/05/29(火) 02:32:30.92成長したでしょう?
というか、一部(f())は先送り型じゃないとうまくかけないみたいです。
0729デフォルトの名無しさん
2012/05/29(火) 02:39:14.68多分一生そのままだな
0730デフォルトの名無しさん
2012/05/29(火) 04:50:21.80よこからだけど
struct word {
char *str;
int count;
struct word *next;
};
つかってないのはやっぱダメなんじゃないの。
あと、xyzzyってemacsライクだよね?標準でEmacsバインドは入ってるよ。試せばすぐ分かると思う。
うちはvimなんで相容れないけど。
0731デフォルトの名無しさん
2012/05/29(火) 04:54:08.15> インデントをつけてくれたり、括弧の対応を明示してくれたり、色づけしてくれたり
こんぐらいxyzzyでもできるだろ。できないわけがないとすら思える内容なんだけど。
あと、C C++ C++/CLIはコード補完も使えないと思ったほうがいいレベル。
そこらのエディタの単純補完で十分
>つかってないのはやっぱダメなんじゃないの。
そうですね。
>>703
仕様にあわせて修正します。
http://codepad.org/8MSFxWqS
>標準でEmacsバインドは入ってるよ。試せばすぐ分かると思う。
もういちど探してみます。epsilon だったはずとおもっていたんですが、当時よくわからなくて。
>コード補完も使えないと思ったほうがいいレベル。
そうなんですか。15年前の VB6 のabbrev は悪くなかったのですが、その程度ならば xyzzy/emacs でもできるのでしょうか?これも探してみます。
>性格は相変わらず糞だけどな
たしかに性格に順位がつくのならば下から数えたほうが早い、とは自認していますが、でも、どんなところが悪いかヒントをいただけないでしょうか?
0735デフォルトの名無しさん
2012/05/29(火) 11:52:39.220736デフォルトの名無しさん
2012/05/29(火) 12:14:11.08バカすぎる
0737デフォルトの名無しさん
2012/05/29(火) 12:16:44.86嫌だね
誰が見ても明らかに性格に難有りだけども自分で気付けないというのが
狂っている証拠なんだが、かと言ってそれを言っても激しく否定されるだけなんで
だから自分で気づくしか方法はないと何回も言ってるわけだ
人が言っても絶対に認めないからね
こう言うと「試しに言ってみてくれませんか」と言うだろうが、過去ログで他の人も
何回も指摘してるが難癖付けて認めてないだろう?ヒントは過去ログにある
0738デフォルトの名無しさん
2012/05/29(火) 12:17:20.63#include <stdio.h>
int main(void)
{
int i, b, d = 0;
printf("二進数の数値を入力してください。\n");
scanf("%d", &b);
printf("二進数を十進数に変換します・・・\n");
for(i = 1; b; i <<= 1, b /= 10) {
printf("%d*%d\n", b & 1, i);
if(b & 1) d += i;
}
printf("十進数表記は%dです。\n", d);
return 0;
}
0739デフォルトの名無しさん
2012/05/29(火) 12:51:30.70>たしかに性格に順位がつくのならば下から数えたほうが早い、とは自認していますが、
>でも、どんなところが悪いかヒントをいただけないでしょうか?
自分で性格が悪いと自認してるならわざわざ人に聞くまでもないじゃないか
アホかお前
0740デフォルトの名無しさん
2012/05/29(火) 12:53:17.860741デフォルトの名無しさん
2012/05/29(火) 13:34:37.24小数に対応していないんですがなんとかなりません?
0742デフォルトの名無しさん
2012/05/29(火) 15:39:29.97マイナスは対応しなくてもいいの?
0743デフォルトの名無しさん
2012/05/29(火) 16:50:40.11負数は負号つけるだけじゃん
0744デフォルトの名無しさん
2012/05/29(火) 16:50:46.10[2] 問題文:
ボックス-ミュラー法を用いて平均 = 1:5,標準偏差 = 0:5
の正規乱数を10000 個生成する。
[3] 環境
[3.1] OS: Windowsvista
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: どちらでも可
[4] 期限: 5/30 13時
[5] その他の制限:
お願いします
0745デフォルトの名無しさん
2012/05/29(火) 17:04:36.14ggってコピペした方が早いんじゃね?
カンタンに大量のソースが出てくるぞ
0746デフォルトの名無しさん
2012/05/29(火) 17:22:53.31コピペしちゃ遺憾だろ
あと大量にあるからこそフィルタリングしないと
0747デフォルトの名無しさん
2012/05/29(火) 17:33:38.52http://ideone.com/Ry2nq
0748デフォルトの名無しさん
2012/05/29(火) 17:53:54.52え?
趣向を理解いただけなかったようで残念です。
0750デフォルトの名無しさん
2012/05/29(火) 19:15:31.150751デフォルトの名無しさん
2012/05/29(火) 19:18:43.27for(i = 1; b; i <<= 1, b /= 10) {
printf("%d*%d\n", b & 1, i);
if(b & 1) d += i;
}
この部分の&と<<=の意味を教えていただけませんか?
0752デフォルトの名無しさん
2012/05/29(火) 19:30:10.94[2] 問題文(含コード&リンク):
安定結婚問題をGale-Shapley アルゴリズムを用いて実装するためにプログラミングしてください。
[3] 環境
[3.1] OS:Windows7
[3.2] Visual Studio2010
[3.3] 言語:どちらでも
[4] 期限:2012年6月1日
[5] その他の制限:なし
お願いします
そっかー、再帰を使えば使うほどボーナス点倍増さらに倍!、かと思っていました。
0754デフォルトの名無しさん
2012/05/29(火) 20:04:00.86ありがとうございます!
0755デフォルトの名無しさん
2012/05/29(火) 20:14:12.60[1] 授業単元:c言語
[2] 問題文(含コード&リンク):http://uproda.2ch-library.com/533330Hsq/lib533330.png
[3] 環境
[3.1] OS: XPのXDMI接続
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語:c言語
[4] 期限:5/30 20:00まで
[5] その他の制限:scanf printf for while くらいの初期段階です
自分で一週間悩んで組みましたがsinのテイラー展開の式の構成がうまくいかず
出力で値を入力してもテイラー展開のところだけ-1という結果になります
自分が組んだのはhttp://codepad.org/6p6zTuSk
です
期限が早すぎるため厳しいかもしれないですがお願いします
0756デフォルトの名無しさん
2012/05/29(火) 20:53:00.92>>はシフト演算
&もビットの処理、AND
ttp://www.cppdrive.jp/cstart/ope/index7.html
0757デフォルトの名無しさん
2012/05/29(火) 20:56:08.53数学記号「!」の意味はわかってる?
0758デフォルトの名無しさん
2012/05/29(火) 21:04:55.18論理否定ですよね?
授業のPDFファイル遡ったらあったので使ってもいいと思います
0759デフォルトの名無しさん
2012/05/29(火) 21:13:56.63君に大学はまだ早いようだ
小学校の国語と高校の数学をまず学びなさい
0760デフォルトの名無しさん
2012/05/29(火) 21:20:34.73ああすいませんw
階乗ですよね?
プログラミングの方聞かれてるのかと思って
0761デフォルトの名無しさん
2012/05/29(火) 21:20:36.10なんも見てないけど数学では階乗だよ
0762デフォルトの名無しさん
2012/05/29(火) 21:26:51.34ありがとうございます。
こんなのあるんですね…!
0763デフォルトの名無しさん
2012/05/29(火) 21:31:39.45じゃあ自分が組んだプログラムのどこに階乗がありますか?
0764755
2012/05/29(火) 21:33:09.65今考えていますが自分では見つけられないです
だいたいnanか -1が出てきてしまいます
0765デフォルトの名無しさん
2012/05/29(火) 21:35:27.31for (n = 1; n < 500 && fabs(ckrad) >= EPSILON * sinrad; n++) {
if (n % 2 == 0) {
sinrad += ckrad;
}
else {
sinrad -= ckrad;
}
k = 2 * n - 1;
l *= radrad;
ckrad = l / k;
}
ここでテイラー展開の数式をかいたつもりです
0766デフォルトの名無しさん
2012/05/29(火) 21:43:39.31http://ideone.com/GvFqB
いろいろ間違いがあるので直した
初期化の位置が間違っていたり階乗の求め方が間違っていたり
それとこれは値が大きい方から足していくのでradが大きくなるほど「積み残し誤差」が
無視できない大きさになり値がずれてくる
後ろから足すとよい
0767デフォルトの名無しさん
2012/05/29(火) 21:45:01.32× for (n = 0; n < 5 && fabs(ckrad) >= EPSILON * sinrad; n++) {
○ for (n = 0; n < 500 && fabs(ckrad) >= EPSILON * sinrad; n++) {
これでもradが大きくなるとずれてくるのがわかるはず
0768デフォルトの名無しさん
2012/05/29(火) 21:47:01.15>>755
これでどうよ
0769デフォルトの名無しさん
2012/05/29(火) 21:50:36.79よろしければ、二進を十進に変えるプログラムも書いてもらってもいいですか?
0770デフォルトの名無しさん
2012/05/29(火) 21:54:21.96[2] 問題文:
x y 0 0 0
y x y 0 0
0 y x y 0
0 0 y x y
0 0 0 y x
のような行列を微次元配列に格納する。x,yは任意の整数
[3] 環境
[3.1] OS:Linux
[3.3] 言語: C言語
[4] 期限:とくには
[5]
よろしくお願いします
0771デフォルトの名無しさん
2012/05/29(火) 21:56:58.310772デフォルトの名無しさん
2012/05/29(火) 21:58:53.22二次元です。タイプミスです
よろしくお願いします
0773デフォルトの名無しさん
2012/05/29(火) 22:03:31.52大幅な訂正ありがとうございます
ここまで丁寧に説明もしてもらって感謝の言葉もありません
taylor sin(rad) = 1,490378464981583
早速出力してみたのですが
おそらく出るべき数値の2倍の数値がでたと思われます
自分でも原因の解明に努めているところですが手伝ってもらえたらとおもいます
0774デフォルトの名無しさん
2012/05/29(火) 22:06:42.93int main(void)
{
int i, j;
int x = 1;
int y = 2;
int m[5][5];
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
{
m[i][j] = (i == j ? x : ((i == j - 1) || (i == j + 1)) ? y : 0);
}
}
return 0;
}
0775デフォルトの名無しさん
2012/05/29(火) 22:06:47.23>>767の修正してくれた?
0776デフォルトの名無しさん
2012/05/29(火) 22:08:59.68それからradは2πの周期で元に戻るのだから大きなradを入れたら
0<rad≦2πの間になるように正規化してくれ
少しでも誤差を小さくするためだ
さっきも言ったようにforのループを逆にするんだ
0777デフォルトの名無しさん
2012/05/29(火) 22:09:30.850778デフォルトの名無しさん
2012/05/29(火) 22:09:47.13一気にsinの値を求めるんじゃなくて
まずはテイラー展開の各次数の項がちゃんと計算されているか確認しなよ
5次くらいまでなら電卓と手計算ですぐだせるだろ
0779デフォルトの名無しさん
2012/05/29(火) 22:10:31.62こちらの方もありがとうございます
ちゃんと出力結果も一致いたしました
自分の学習範囲ではまだ理解できない関数がありましたが
>>766さんとあわせて利用させてもらいたいと思います
0780デフォルトの名無しさん
2012/05/29(火) 22:14:30.01はい、500に訂正しました
>>776
>>777
radは小数点以下の小さい値になるので2PIEを超えることはないと思います
>>778
ただいまやります
0781デフォルトの名無しさん
2012/05/29(火) 22:15:16.00while (rad > 2.0 * M_PI)
rad -= 2.0 * M_PI;
else if (rad < 0.0)
while (rad < 0.0)
rad += 2.0 * M_PI;
これで>>776は実現出来ると思う
後は階乗の項が後に行くとすごく小さくなり足してもほとんど意味をなさなくなる
積み残し誤差は先程説明したのでそこだけだな
0782デフォルトの名無しさん
2012/05/29(火) 22:30:30.50正規化はこうしておけ
rad は double
if (rad > 2 * M_PI)
{
rad -= 2 * M_PI * (int)(rad / (2 * M_PI));
}
0783デフォルトの名無しさん
2012/05/29(火) 22:31:43.78試行錯誤の結果納得の行く結果が出ました
プログラムそのものも簡易なもので出力できたのでありがたいです
>>768さんの結果を含め利用させて頂きます
期限が迫ってる中助けて下さって本当にありがとうございました
自分も最終的には教えれるほどの力をつけたいですね
0784デフォルトの名無しさん
2012/05/29(火) 22:35:37.38スマソ
負数が抜けてた
if (rad > 2 * M_PI)
{
rad -= 2 * M_PI * (int)(rad / (2 * M_PI));
}
else if (rad < 0.0)
{
rad += 2 * M_PI * (int)(fabs(rad) / (2 * M_PI) + 1);
}
■ このスレッドは過去ログ倉庫に格納されています