- 1 名前:デフォルトの名無しさん [2008/10/01(水) 07:28:51 BE:151474728-PLT(18888)]
- あなたが解けない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++の宿題を片付けます 115代目 pc11.2ch.net/test/read.cgi/tech/1217741118/
- 585 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:00:08 ]
- >>554
>>556 ありがとうございました。うまくコンパイルすることができました。 本当に助かりました。m(__)m >>559 シンプルでわかりやすいプログラムありがとございます。 まだちゃんと解読してないんですけど、peak.txtの出力した最大値が 1024個中5個だけってことなんでしょうか? 一応、求めた平均値より突飛して高い値(最大値とする) をpeak.txtに出力したいんですけど・・・最大値の数は特に指定はないです。
- 586 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:11:17 ]
- >>584
main() 無効なアドレスをさしている変数 array たぶんやりたいのは、 #include <stdlib.h>を、#include <stdio.h>のしたあたりに追加。 n = 8;の後に、array = (int *)malloc(sizeof(int) * n); if ( array == NULL ) { fprintf(stderr, "Error : Bad alloc !\n"); exit(8); } その後、desc_array(n, array); で、arrayを使わなくなったら、free(array);
- 587 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:17:06 ]
- MCIでデータ1データ2データ3を同時に鳴らした時、
コールバックでどのデータが終了したか どうやって判断したらいいですか?
- 588 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:47:44 ]
- [1] 授業単元: 情報工学演習
[2] 問題文(含コード&リンク): 数独のような問題を解くプログラムと、ポーカーでの強さを判定するプログラム 詳細は下のテキストファイルに書いてあります kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7830.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 10月24日13時まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) main関数は必ずテキストファイルに書いてあるもののままにしてください。 それ以外の部分もなるべくそのままでお願いします。 また、なるべく理解したうえで少し自分なりに手直したいので、 どんな手順で判定を行っているのかなど、軽く説明していただけると助かります。 できれば今日中にお願いします。急なお願いで申し訳ありません。
- 589 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:49:54 ]
- >>584
int *array; を int array[8]; にしたらいい
- 590 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 11:37:57 ]
- >>584
そもそも i に値がはいってないな。
- 591 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 12:22:37 ]
- >>585
なんか5個だと思い込んでたw てか最大値って言葉わかりにくいー極大値とか外れ値とかそんな感じ?? 飛び抜けて大きな値って平均値の何倍かとかで調べたいんですか? よくわかんないので標準偏差の何倍かで調べるようにしてみました。 てかこのまえupした画像で考えると、グラフで飛び出した点を求めなきゃいけないとするといったん並べ替えるのはよくないのだろうか・・・?? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7831.txt
- 592 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 12:56:53 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): ユーザから2から100までのいずれかの整数を受け取り、1からその数までの総和を計算する プログラムをfor文を使って書け。利用者が範囲外の数値を入力した場合、「値が範囲内にありません」 などのエラー表示を行え。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名 gcc [3.3] 言語: C [4] 期限: 2008/10/25 [5] その他の制限:まだ初めて日が浅く、習ったのはif else文やforループくらいまでです。 よろしくお願いします。
- 593 名前:デフォルトの名無しさん [2008/10/23(木) 13:03:19 ]
- 1] 授業単元:c++ builder
[3] 環境 [3.1] OS:Widows XP [3.3] 言語:C++ [4] 期限:2008/10/24 [5] その他の制限:Cの基本言語程度 Memo1に60行の配列の乱数を出したのですが、そのMemo1にある60行の乱数の平均の数を Edit1に出すプログラムがどうしてもできません。 どなたか教えていただけないでしょうか。よろしくおねがいします。
- 594 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 13:19:31 ]
- [1] 授業単元:C言語
[2] 問題文(含コード&リンク):100 個の整数型配列を宣言して,各要素に2〜200 の偶数値を格納し,配列要素の 総和を求めて出力するプログラムをつくりなさい。ただし,配列への値の格納,総和の 計算ともポインタを用いて実行すること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:08年10月24日24:00まで どうかお願いします。
- 595 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 13:55:57 ]
- >>588 問2
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7832.txt これでいい? 問題文にあった3つの動作例でしかチェックしてない。
- 596 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:07:55 ]
- [1] 授業単元:プログラム・C言語
[2] 問題文(含コード&リンク): 以下のようなプログラムを作成しなさい まず標準入力から、姓と名をそれぞれ別のchar配列型変数で受取る。 次に別の空のchar配列型変数に名と姓の間にスペースを挿入して格納し、表示するプログラム。 ※ヒント 空のchar配列型変数に「名」を入れる時はstrcpy()、スペースと「姓」を追加する時はstrcat()を使う とよい。 実行例 ./a family name? sato first name? zin zin sato [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名 gcc [3.3] 言語: C [4] 期限: 2008/10/25 [5] その他の制限:まだ序の口レベルです。 #include <stdlib.h>のみでお願いします。 何卒よろしくお願いします。
- 597 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:19:28 ]
- >>592
#include <stdio.h> int main(void) { int n, i, sum=0; printf("値を入力してください\n"); scanf("%d", &n); if(n < 2 || n > 100) { printf("値が範囲内にありません\n"); } else { for(i=1; i<=n; i++) { sum += i; } printf("総和 = %d\n", sum); } return 0; }
- 598 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:22:11 ]
- >>596
#include <stdio.h> #include <string.h> int main() { char family_name[16], first_name[16], name[32]; printf("family name? "); gets(family_name); printf("first_name? "); gets(first_name); strcpy(name, first_name); strcat(name, " "); strcat(name, family_name); printf("%s", name); return 0; }
- 599 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:29:38 ]
- >>594
#include <stdio.h> void Set(int *buf) { int i; for(i = 0; i < 100; i++) buf[i] = (i+1)*2; } int Sum(int *buf) { int i, sum = 0; for(i = 0; i < 100; i++) sum += buf[i]; return sum; } int main() { int buf[100]; Set(buf); printf("%d", Sum(buf)); return 0; }
- 600 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:40:52 ]
- >>595
返答ありがとうございます。 無理でしたら構いませんが、なるべく関数poker_hand内で全ての動作を 記述している形がよいので、できればその形に組みなおしていただきたいのですが とりあえず参考にしつつ自分でも作ってみておきます。 問1に関してもできればnumber_place内で全て記述している形でお願いします。 無茶な要求をしてしまって申し訳ありません。
- 601 名前:デフォルトの名無しさん [2008/10/23(木) 14:59:44 ]
- [1] 授業単元:CG(C言語使用)
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7835.zip OpenGLによるCGを用いたプログラムを、自由に設計する課題を作成。 条件として、「アニメーションが行えること」、「キーボード入力によって何らかの 操作が行えること」、「シェーディングやテクスチャマッピングを適切に使用できること」 です。前者2つとシェーディングは何とか理解出来ますが、テクスチャマッピングが 思うように設計できません。どなたか専門知識をお持ちの方、私が添付したプログラムのどの 辺にどのような関数をセットすればよいかなど、いわゆる作成方法についてご指導 お願いします。なお、テクスチャマッピングは壁を設計する予定です。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Borland C++(bcc32) [3.3] 言語:C [4] 期限:2008年10月23日22時半 なお、期限については今日中としますが、今日中に良い意見が集まらなければ明日も 募集する予定です。宜しくお願いします。
- 602 名前:デフォルトの名無しさん [2008/10/23(木) 15:02:17 ]
- [1] 授業単元:C言語
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7833.lzh ↑↑の画像の一番明るい場所を、 画像の中心を(0,0)とした座標として表示するプログラムを つくりなさい。また、その明度の値も表示するようにしなさい。 例に示した画像はjpeg形式ですが、非圧縮bmp(白黒) の場合でも可能です。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:今月中 [5] その他の制限:なし よろしくお願いします。
- 603 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:08:51 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 文字列を入力し、その文字列が外部のテキストファイルに存在すれば、OK!と表示するプログラムを作れ 外部テキストは apple egg ・ ・ ・ のように10万個ほどの単語が書かれている。 効率的に探せるならば、C++のSTL等を用いてよい [3] 環境 [3.1] OS: Xp [3.2] VC 6.0 [3.3] 言語: C++ [4] 期限:明日 [5] その他の制限: お願いします
- 604 名前:592 mailto:sage [2008/10/23(木) 15:12:26 ]
- >>597
早いレスで助かります。 どうもありがとうございました。
- 605 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:22:15 ]
- >>600
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7836.txt もうやだ。こんなプログラム見たくねえorz
- 606 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:33:58 ]
- ただのストレートでも 10 → A いけるんだとしった
ロイヤルの時だけだと思ってたわ
- 607 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:36:11 ]
- >>582
ありがとうございます
- 608 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:38:37 ]
- >>588
問1 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7837.txt 合ってるといいなw
- 609 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:03:17 ]
- >>603
こんなでいい? #include<iostream> #include<fstream> #include<string> #include<set> using namespace std; typedef set<string> Dictionary; int main(){ string word; Dictionary dict; ifstream ifs("in.txt"); if(!ifs.is_open()) return 1; while(!ifs.eof()){ ifs >> word; dict.insert(word); } ifs.close(); while(1){ cout << "Search:"; cin >> word; if(dict.find(word) != dict.end()) cout << "OK!" << endl; else cout << "Not found." << endl; } }
- 610 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:09:27 ]
- >>599
丁寧な回答ありがとうです!
- 611 名前:デフォルトの名無しさん [2008/10/23(木) 17:50:21 ]
- [1] 授業単元:文字列の探索
[2] 問題文(含コード&リンク): (1)ファイルの先頭からテキストを1行ずつ(1行の文字数は999文字以下とする)読み込み、 何行目の何文字目に検索文字列の先頭が存在するか出力する。 (2)探索文字列中に同じ文字が複数含まれる場合について検索方法を改良する。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7838.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc (ver不明です) [3.3] 言語: C言語 [4] 期限: 2008年10月27日23:59まで [5] その他の制限:問題文中のプログラムの「//ここにボイヤームーア法」の場所を補ってプログラムを組む感じです。 どうかお願いします。。
- 612 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:16:59 ]
- >>602
libjpeg 使っていいんだったら kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7840.txt
- 613 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:37:45 ]
- >>598
あなたのお陰で非常に助かりました。 ありがとうございます。
- 614 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:41:20 ]
- [1] 授業単元: アルゴリズムとデータ構造
[2] 問題文:次の関数のゼロ点を求めるプログラミングをせよ。 f(x) = x^4-10x^3+ 35x^2-50^x+24 探索区間はx = 0から5(数学的表現では、x = [0; 5))であり 実数解が4個あることを留意せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 10月24日1300まで [5] その他の制限:2分法を使って組んでいただけませんか。
- 615 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 20:49:21 ]
- >>614
#include <stdio.h> #include <math.h> double f( double x ) { return pow(x,4) -10 * pow(x,3) + 35 * pow(x,2) - pow(50,x) + 24; } int main() { double x = 1.0; printf( "f(%lf) = %lf\n", x, f(x) ); return 0; }
- 616 名前:614 mailto:sage [2008/10/23(木) 20:54:54 ]
- >>615
おい ふざけんな
- 617 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:09:28 ]
- 【質問テンプレ】
[1] 授業単元:仕事 [2] 問題文(含コード&リンク): "00 00 01 bd 80 80 ...." とスペースや改行も含めた テキストファイルから 0x00 0x00 0x01 のバイト列に 変換するコードをください [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C/C++どちらでも可 [4] 期限: 2008/10/24 10:00 [5] その他の制限:特に無しです よろおね
- 618 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:11:04 ]
- >>614
実数解が1個しか無いんだが。。。 #include <stdio.h> #include <math.h> #define DELTA 1e-4 double f(double x) { return pow(x, 4) - 10*pow(x, 3) + 35*pow(x, 2) - pow(50, x) + 24; } int main(int argc, char *argv[]) { double left = 0.0, right = 5.0, mid = 2.5; if (f(left) * f(right) > 0) { return 1; } while (fabs(f(mid)) > DELTA) { mid = (left + right) / 2; if (f(left) * f(mid) < 0) right = mid; else left = mid; } printf("x = %f\n", mid); return 0; }
- 619 名前:614 mailto:sage [2008/10/23(木) 21:16:10 ]
- すいません関数が間違っていました
f(x)=x^4-10*x^3+35*x^2-50*x+24
- 620 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:27:33 ]
- [1] 授業単元:文字列
[2] 問題文(含コード&リンク): mozi1_mozi2_mozi3のように_で区切られた文字列を標準入力から入力し、stringに格納する。 char *list1[5] = {"test","test2","test3","test4","test5"} と *list2[3] = {"hoge",hoge2","hoge3"} の文字列へのポインタの配列 がある。 mozi1はlist1の文字列と比較し、一致するものがあればその添え字を表示し、 mozi2はlist2の文字列と比較して、同様の動作をするプログラムを作れ。 mozi1がtest2であれば1を表示 mozi2がhoge3であれば2を表示する。一致するものがなければその旨を表示すること [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC [3.3] 言語: C++ [4] 期限: 2008年10月25日 [5] その他の制限 お願いします。
- 621 名前:615 mailto:sage [2008/10/23(木) 21:43:09 ]
- >>619
>>616
- 622 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:55:07 ]
- >>611
質問が BM法ってリスト2つ使った奴じゃないと駄目? それとも簡略版でいいのかしら
- 623 名前:デフォルトの名無しさん [2008/10/23(木) 22:49:19 ]
- 1] 授業単元: C++
[2] 問題文: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7841.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:Visual stdio2005 [3.3] 言語:C++ [4] 期限:10月 24日(土)まで 期限が短いですがお願い致します。
- 624 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 22:53:58 ]
- ここってGUIも受け付けてもらえますか?
- 625 名前:デフォルトの名無しさん [2008/10/23(木) 22:56:54 ]
- 受け付けてもらえます
- 626 名前:611 [2008/10/23(木) 22:57:38 ]
- >>622
ありがとうございます。 講義内でも問題文に書かれた以上のことは言われなかったのですが、簡略版で大丈夫です。 とりあえず、「力まかせの探索」でなければ大丈夫とのことでした。
- 627 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 22:58:21 ]
- [1] 授業単元: 信号解析
[2] 問題文(含コード&リンク): 一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、 τdx/dt = -dV/dx + ξ(t) < ξ(t)ξ(t') > = A * б (t - t') < ξ(t) > = 0 …@ で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル V (x; t) は、時間と共に周期的にその形を変える: V(x,t) = Vo(x) - f(t)x = -1/2*ax^2 + 1/4*bx^4 - hxcos(wt) で与えられる。 a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。 t = 0 において、玉はx = 10 にあるとする。 τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。 @式を時間発展させて、玉の位置と周期的な外力f(t)に比例する量である10cos(ωt)をグラフに表せ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年10月24日23:59まで [5] その他の制限: 特になし よろしくお願いします
- 628 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 23:00:13 ]
- >>624
では書きます。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ファイルを開く・保存のコモンダイアログを使い、選択されたファイルをテキストに書き出すプログラムを作れ。 ファイルは複数選択される場合もある。 express版の場合、外部のリソースエディタは用いてかまわない。 出力されるファイル test.bmp data.wav data2.wav [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual studio 2008 [3.3] 言語: C or C++ [4] 期限: 2008年10月26日 [5] その他の制限
- 629 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 23:02:11 ]
- >>627 問題文修正しました
[1] 授業単元: 信号解析 [2] 問題文(含コード&リンク): 一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、 τdx/dt = -dV/dx + ξ(t) < ξ(t)ξ(t') > = Aб(t - t') < ξ(t) > = 0 …@ で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル V (x; t) は、時間と共に周期的にその形を変える: V(x,t) = Vo(x) - f(t)x = -1/2*ax^2 + 1/4*bx^4 - hxcos(wt) で与えられる。 a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。 t = 0 において、玉はx = 10 にあるとする。 τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。 @式を時間発展させて、玉の位置と周期的な外力 f(t) に比例する量である 10cos(ωt) をグラフに表せ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年10月24日23:59まで [5] その他の制限: 特になし よろしくお願いします
- 630 名前:デフォルトの名無しさん [2008/10/23(木) 23:03:31 ]
- この分野では、Sunday のアルゴリズムが究極では?
表 : 実行結果 : 時間 (秒) : 比較回数 ------------------------------- 力任せ : 0.133 : 149,938 BM 法 : 0.046 : 30,168 BMH 法 : 0.041 : 29,728 quick : 0.033 : 25,094 www.geocities.jp/m_hiroi/light/pyalgo11.html
- 631 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 00:41:06 ]
- 名前を変えるほど改良されてる訳でもない気がしないでもない
- 632 名前:デフォルトの名無しさん [2008/10/24(金) 01:09:30 ]
- Quick Search algorithm www-igm.univ-mlv.fr/%7Elecroq/string/node19.html
The C code void preQsBc(char *x, int m, int qsBc[]) { int i; for (i = 0; i < ASIZE; ++i) qsBc[i] = m + 1; for (i = 0; i < m; ++i) qsBc[x[i]] = m - i; } void QS(char *x, int m, char *y, int n) { int j, qsBc[ASIZE]; /* Preprocessing */ preQsBc(x, m, qsBc); /* Searching */ j = 0; while (j <= n - m) { if (memcmp(x, y + j, m) == 0) OUTPUT(j); j += qsBc[y[j + m]]; /* shift */ } }
- 633 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 01:11:48 ]
- [1] 授業単元:C
[2] 問題文: (1)1〜50までの整数の中から異なるいくつかをえらんび、 掛け合わせても一の位が0にならないようにする。選ぶことができる整数は40個。 上の文をプログラムで出力せよ。 (2)1〜50までの全てを掛け合わせると末尾の0を数えるプログラムを書け。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 10月24日8:00 [5] その他の制限:特になし (1)は2の倍数、5の倍数が少なくとも1個ずつ入ったときにだけ1の位が0になる ので2の倍数と5の倍数が同居しないように計算します。
- 634 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 02:25:39 ]
- >>633
(2) #include <stdio.h> int main(void) { int i, c1 = 0, c2 = 0; for(i=1; i<=50; i++) { int temp = i; for(; !(temp%2); c1++) temp /= 2; for(; !(temp%5); c2++) temp /= 5; } printf("%d", c1 < c2 ? c1 : c2); return 0; }
- 635 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 02:55:22 ]
- >>634
あたまいいなあ
- 636 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:09:59 ]
- (2)は50を5^nで割った商を足してけばいいと思う
int cnt=0,t; for(t=5;50/t;t*=5){ cnt+=50/t; } printf("%d\n",cnt);
- 637 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:12:31 ]
- 理由は素因数として2より5の方が少ないから。
数字を並べてみて1~50までに因数の5がいくつあるか数えるには?
- 638 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:36:40 ]
- 理由はもっともだが>>636にはハテナがたくさんだ
- 639 名前:デフォルトの名無しさん [2008/10/24(金) 04:41:46 ]
- >>623
期限は10月24日(金)の11:00でした。 書き間違えてすみません。 よろしくお願いします。
- 640 名前:639 mailto:sage [2008/10/24(金) 06:35:26 ]
- 期限はアメリカ東海岸時間(EST)の10月24日(金)の11:00です
日本時間だと10月25日の11:00になります。 再再度訂正すみません
- 641 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 06:43:17 ]
- すいません、C/C++以外の課題を聞けるスレってあります?
- 642 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 06:59:49 ]
- [1] 授業単元: C
[2] 問題文: 2つの固有値から2×2の行列を求めるプログラムを作りなさい。 固有値は整数のみとする。 [3] 環境 [3.1] OS:WindowsXP [3.2]コンパイラ名とバージョン:Visual studio [3.3] 言語:C [4] 期限:明日まで [5] その他の制限:特になし
- 643 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:03:10 ]
- 620をお願いします
- 644 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:44:17 ]
- [1] 授業単元:C言語 (ポインタ)
[2] 問題文(含コード&リンク):出力例のように キーボードから0〜9 の数字d と,正の整数n を読み込み,n 以下の整数x で, x とx の2 乗の10 進数表示の両方にd を含むものをすべて出力するプログラムをつくりなさい。 ただし,次のプロトタイプ宣言で示すように,整数x とd を仮引数として, x とx の2 乗の10 進数表示の両方にd を含む場合に1,そうでない場合に0 を返す 関数hit_digit を作成しなさい。 int hit_digit(int x, int d); ▼出力例 0〜9 の数字d を入力して下さい:7 正の整数n を入力して下さい:100 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:08年10月25日24:00まで [5] その他の制限:C言語の基本的な関数のみでお願いします。
- 645 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:04:13 ]
- >>639
和訳くらいしたらどうなの・・・
- 646 名前:602 [2008/10/24(金) 12:33:22 ]
- >>612
回答ありがとうございます! 助かりました。
- 647 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:41:56 ]
- >>644
#include <stdio.h> int hit_digit(int x,int d); int main(void) { int d,n,x; printf("0〜9 の数字d を入力して下さい:"); scanf("%d",&d); printf("正の整数n を入力して下さい:"); scanf("%d",&n); for(x=0;x<=n;x++) if(hit_digit(x,d)) printf("%d\n",x); return 0; } int hit_digit(int x,int d) { int y,z; y=x; z=x*x; for(;y;y/=10) if(y%10==d) for(;z;z/=10) if(z%10==d) return 1; return 0; }
- 648 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 13:34:34 ]
- >>591
レス返信遅くなりました。 最大値というよりは極大値という感じですね。 飛び抜けて大きな値ってのは (平均値+5*ρ) 以上の値のことを指し示すのですが ρってのが平均値の標準偏差です(たぶん)。 グラフで飛び出した点を求めたら、並べ替えなくていいそうです。 てかコンパイル通したら、peak.txtが出力されませんでした。今、プログラム解読中です(汗)
- 649 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 14:39:57 ]
- [1] 授業単元: C言語
[2] 問題文:縦軸「|」横軸「-」グラフ「*」 を使って±√xのグラフを書け [3] 環境 [3.1] OS:mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限: 10月26日 [5] その他の制限: 基本的な関数のみでお願いします
- 650 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:36:43 ]
- >>649
#include <stdio.h> int main() { int x, y; for (y = -4; y < 5; y++) { putchar('|'); for (x = 0; x < y * y; x++) { putchar(' '); } putchar('*'); putchar('\n'); } return 0; }
- 651 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:37:15 ]
- 横軸忘れた
- 652 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:05:49 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): トランプを切る方法の1つとして、トランプを2つにわけて両手でぱらぱらと切る方法がある。 今、トランプは、ジョーカーを除いた52枚とする。もし、切り方のうまい人がいて、トランプ を正しく半分(26枚)にして、かつ交互に1枚ずつ切れるとする。 この方法では、何回か行うと元に戻ることが知られている。さて、何回で元に戻るでしょうか。 これを計算するプログラムを作成してください。 与えられたヒント 52個の要素をもつ配列P,Qを用意します。最初は、Pi←i+1(i=0,2,3,…,51)とデータをセットします。 そして、Q2i←Pi(i=0,1,2,…,25)およびQ 2(i-26)+1←Pi(i=26,27,…,51)を行う。もし、Qの要素が 1,2,3,…,52になっていたら終了であるが、そうでなければ、P←Qを行い、同じ手順を繰り返す。 [3] 環境 [3.1] OS: Windows (cygwin使用) [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 10月27日18:00時まで [5] その他の制限: for文かwhile文でお願いします
- 653 名前:デフォルトの名無しさん [2008/10/24(金) 16:27:02 ]
- 株式会社損害保険ジャパン
qb5.2ch.net/test/read.cgi/saku2ch/1185507477/ 1 名前:新甚 博史 広報室 室長代理 [HShinjin@sompo-japan.co.jp] :2007/07/27(金) 12:38 HOST:ZP144243.ppp.dion.ne.jp<8080><3128><8000><1080> 対象区分:[法人/団体]管理人裁定待ち 削除対象アドレス: www2.2ch.net/2ch.html
- 654 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:29:57 ]
- >>652
8回で戻ったけどあってる?
- 655 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:35:11 ]
- >>649
縦軸と横軸ってxyグラフ?実数と複素数? ±√abs(x)、もしくはx>=0 でxyグラフならできる。 実数と複素数でもできるけど、グラフの意味合いが違ってくるからなー。 その場合 x>0 Im=0の軸だけにプロット、 x<0 Re=0の軸だけにプロットになっちゃう。
- 656 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:54:14 ]
- >>652
311,875,200
- 657 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:01:32 ]
- >>650
ありがとうございました 横軸は自分で入れてみます >>655 xyグラフです。 abs関数って絶対値を返すんでしたっけ・・・
- 658 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:02:19 ]
- >>652
#include <stdio.h> int main(void) { int P[52], Q[52]; int i, c, x; for(i=0; i<52; i++) P[i] = i+1; c=0; while(1) { for(i=0; i<26; i++) Q[2*i] = P[i]; for(i=26; i<52; i++) Q[2*(i-26)+1] = P[i]; c++; for(i=x=0; i<52; i++) if(Q[i] != i+1) x=1; if(x!=0) for(i=0; i<52; i++) P[i] = Q[i]; else break; } printf("%d times looped.\n", c); } 本当は終了条件判断後の代入と最初の代入だとかを一緒にすべきだよな。でもここでは文意どおりに…。
- 659 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:02:24 ]
- >>652
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7843.c
- 660 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:24:05 ]
- >>649
#include <stdio.h> #include <math.h> #define START_X -30 #define START_Y -10 #define WIDTH 60 #define HEIGHT 20 int main(void) { int x,y,p; int max_width = START_X + WIDTH; int max_height = START_Y + HEIGHT; for(y = max_height; y > START_Y; y--) { putchar(y?'|':'0'); for(x = START_X; x < max_width; x++) { p = (int) sqrt(fabs(x)); putchar((p == abs(y))?'*':' '); } putchar('\n'); } putchar('+'); for(x = START_X; x < max_width; x++) { putchar(x?'-':'0'); } putchar('\n'); return 0; } y=±sqrt(abs(x))のグラフを書きます。 START_X=0で使ってくれ。
- 661 名前:デフォルトの名無しさん [2008/10/24(金) 17:42:34 ]
- 1] 授業単元:情報処理V
[2] 問題文:JPEGファイルを読んでブロック(マーカ単位)で表示するプログラム(16進) [3] 環境 [3.1] OS:Windows(cygwin使用) [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 10月30日16:30まで [5] その他の制限:基本的な関数のみでお願いします。
- 662 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 18:53:17 ]
- >>647
丁寧な回答ありがとうございました!
- 663 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 20:49:17 ]
- >>551 のつづきです。
[1] 授業単元: 信号処理 [2] 問題文(含コード&リンク): @とAは>>551 B (平均値+5*ρ)以上の値を最大値(極大値)とするように変更させなさい。ρを標準偏差とする。 C @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。 Bで求めた各々の最大値(極大値)の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに 出力できるように変更させなさい。 例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・ [38]3.4255342 [72]3.214283 [98]2.434924390・・・・ ・ ・ ・ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年10月26日23:59まで [5] その他の制限: 特になし よろしくお願いします。
- 664 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 22:44:49 ]
- [1] 授業単元:if文
[2] 問題文:3つの整数を入力し,それらを比較して,大,中,小を判定しなさい. 3つの整数が同じ値の場合,あるいは2つの整数が同じ値の場合でも 正確に判定ができるように対応すること. 全ての条件を場合分けするプログラムは不可とする. できるだけ少ない条件分けで対応できるよう工夫すること。 例 9 5 2 → 大:9 中:5 小:2 例 6 6 6 → 大:6,6,6 3つの数は等しい 例 6 6 3 → 大:6,6 小:3 例 6 6 9 → 大:9 小:6,6 [3] 環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 10/30 13時 [5] その他の制限: 特になし よろしくお願いします
- 665 名前: ◆O2tO.pRmks mailto:sage [2008/10/25(土) 00:55:24 ]
- [1] 授業単元:配列
[2] 問題文:配列a[10] = {53,68,9,55,42,70,43,66,97,84}の要素の最大値・最小値・平均値を調べ、結果を表示するプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows XP [3.2] gcc [3.3] 言語:C [4] 期限:2008年10月25日まで [5] その他の制限:特になし
- 666 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:05:55 ]
- >>665
#include <stdio.h> int main(){ int a[10] = {53, 68, 9, 55, 42, 70, 43, 66, 97, 84}; int max, min, i; float ave = 0.0; max = a[0]; min = a[0]; for(i = 1; i < 10; i++){ if(max < a[i]) max = a[i]; if(min > a[i]) min = a[i]; ave += (float)a[i]; } ave /= 10.0; printf("最大値: %d\n", max); printf("最小値: %d\n", min); printf("平均値: %.1f\n", ave); }
- 667 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:24:51 ]
- >>664
#include<stdio.h> #include<stdlib.h> void main(void) { int num[3],w,cnt,i; for(cnt=0;cnt<3;cnt++) scanf("%d",&num[cnt]); for(cnt=0;cnt<2;cnt++) { for(i=cnt+1;i<3;i++) { if(num[cnt]<num[i]) { w=num[cnt]; num[cnt]=num[i]; num[i]=w; } } }
- 668 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:25:26 ]
- >>664
printf("大:%d",num[0]); if(num[0]==num[1]) printf(",%d",num[1]); else { if(num[1]==num[2]) { printf(" 小:%d,%d",num[1],num[2]); exit(0); } else printf(" 中:%d",num[1]); } if(num[0]==num[2]) printf(",%d 3つの数は等しい",num[2]); else printf(" 小:%d",num[2]); } gcc知らない…
- 669 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:37:48 ]
- >>664
#include <stdio.h> int main(){ int i, j, tmp; int count = 0; int a[3]; scanf("%d%d%d", &a[0], &a[1], &a[2]); /* 降順にソート */ for(i = 0; i < 3; i++){ for(j = i + 1; j < 3; j++){ if(a[i] < a[j]){ tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } }
- 670 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:38:17 ]
- >>664 続き
/* 1個目と2個目を比較して値が違ったら「大」が決定 */ if(a[0] != a[1]){ printf("大: %d ", a[0]); /* 2個目と3個目を比較して「中・小」を決定 */ if(a[1] != a[2]) printf("中: %d 小: %d\n", a[1], a[2]); else printf("小: %d, %d\n", a[1], a[2]); } /* 1個目と2個目が一緒なら2個目と3個目を比較して「大・小」を決定 */ else{ if(a[1] != a[2]) printf("大: %d, %d 小: %d\n", a[0], a[1], a[2]); else printf("大: %d, %d, %d 3つの数は等しい\n", a[0], a[1], a[2]); } return 0; }
- 671 名前:669-670 mailto:sage [2008/10/25(土) 01:40:07 ]
- >>667-668で既に回答出てたな・・
- 672 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:45:44 ]
- >>671
俺のは手抜きです^^;
- 673 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:52:31 ]
- >>672
結局同じようなことやってるからあまり変わらないっしょー
- 674 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 02:09:28 ]
- >>663
結局1番と2番は日本語の意味が理解できなかった。 2番は1番の意味がわかればできるけど1番は何回読んでもわからない・・・ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define isOuter(val,ave,sd) ((val)> (ave) + 5*(var)) int main(){ FILE *fp,*fout; char buf[1024],*cp; double data[1024],ave,sum=0,sum2=0,var,sd; int cnt=0,i,k=0; if((fp = fopen("data.txt", "r")) == NULL) return 1; if((fout = fopen("peak.txt", "w")) == NULL) return 1; while((cp = fgets(buf,sizeof(buf),fp)) != NULL){ while((cp = strtok(cp," \t\r\n")) != NULL){ data[cnt] = atof(cp); sum += data[cnt]; sum2 += data[cnt]*data[cnt]; if(++cnt == 1024){ ave = sum / 1024.0; var = sum2 / 1024.0 - ave*ave; sd = sqrt(var); for(i=0;i<1024;i++) if(isOuter(data[i] , ave, sd)) fprintf(fout,"[%d]%f ", i+1,data[i]); fprintf(fout,"\n"); cnt = sum = sum2 = 0; } cp = NULL; } } fclose(fp); fclose(fout); }
- 675 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 04:36:38 ]
- >>620
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7845.txt
- 676 名前:675 mailto:sage [2008/10/25(土) 04:44:02 ]
- >>620
>>675 ミスった、スマン 一つ前の古いのをUPしてしまった… ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7846.txt
- 677 名前:デフォルトの名無しさん [2008/10/25(土) 05:36:07 ]
- [1] 授業単元:趣味プログラム
[2] 問題文(含コード&リンク): sony.squares.net/dat.txt [3] 環境 [3.1] OS:WindowsVista [3.2] コンパイラ名とバージョン:最新版Cygwinのgcc [3.3] 言語:C [4] 期限: [無期限] [5] その他の制限:リンク先に記載。 重複を取り除きながらの挿入ソートでは10分経っても終わりませんでした。O(n^2) = O(366051^2) 重複を取り除きながらでも早いソートを実現したいです。お願いします。
- 678 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 06:28:59 ]
- >>677
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7847.c 条件Xってのがいまいち不明だったので手抜きで、最後に入ってる場所だけ分かる。
- 679 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 06:43:50 ]
- >>677
あれ、条件2ってどういうこと? 最大値が分かれば1から順に並べればいいってこと、、、なのか? ソートっていってるからそうじゃないような気がするんだが。
- 680 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 09:50:58 ]
- 値の範囲がわかってるなら、nが現れた行番号をその配列のn番目に入れればいいから、ソートする必要ない気がする
- 681 名前:デフォルトの名無しさん [2008/10/25(土) 13:10:37 ]
- >>678
ありがとうございます。参考にさせて貰います。 >>679-680 すいません、本来のプログラムでは未ソート時点では最大値や点の数が分かっていませんでした。
- 682 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 14:21:22 ]
- それが分かってないなら>>678
は使えないな、まさしく>>680 の手法だから 一旦二分木に移していく感じでならO(nlogn)でソートできるんじゃないかな c++のsetで試したからcのソース無いけど
- 683 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:00:23 ]
- Quickソートでいいんじゃない?
- 684 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:25:56 ]
- クイックソートしてから重複除いても>>677でやったのよりそっちのほうが速いよね
- 685 名前:初心者 [2008/10/25(土) 15:26:11 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): ★下記の仕様を満たすプログラムをC言語で作成しなさい 【仕様】 表計算ソフト簡易プログラム ▽ Excelのように2次元配列で10人分の3教科の素点表示する。なお、素点は100点満点でランダムに作るものとする。 ▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から順に)を表示する。なお平均は少数第1位までの表示とする。 ▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の行を作り、各行についてそれぞれ求めて表示する。 (表示例:空欄にはそれぞれ計算結果が入ることになる) 番号| 国語 数学 英語 |合計 |平均 |順位 1 | 75 35 40 | | | 2 | 69 75 82 | | | (中 略) 10 | 57 48 36 | | | --------------------------------------------------- 合計 | 平均 | 最高 | 最低 | [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: 分かりません [3.3] 言語: C言語 [4] 期限: 来週中ぐらい [5] その他の制限: 繰り返し、条件処理、配列を勉強しました。 これらを使ってお願いします。 初心者なので初心者でも分かるようなプログラムを お願いします。
|

|