1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ] あなたが解けない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++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1193150915/
175 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:23:30 ] [1] 授業単元: 確率論 [2] 問題文: www.uploda.org/uporg1104561.txt ここに書きました。 図はこんな感じです。 www.uploda.org/uporg1104531.jpg [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月10日 [5] その他の制限: 特にありません わかりにくいかもしれませんがお願いします。
176 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:31:02 ] >>168 それはもちろん知っているが、問題の一行目には最小化すると書かれている
177 名前:153 mailto:sage [2007/11/10(土) 03:10:07 ] >>176 このアルゴリズムでは最小化できないらしいので、アルゴリズムのほうを優先するみたいです。 よくみたら『この近似解法で作成せよ』と書いてありました。申し訳ございません。
178 名前:デフォルトの名無しさん [2007/11/10(土) 06:18:17 ] 誰かいますか?
179 名前:デフォルトの名無しさん [2007/11/10(土) 06:25:27 ] います
180 名前:デフォルトの名無しさん [2007/11/10(土) 06:26:41 ] イター!!! お願いします俺の宿題やってくださいませ
181 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 06:28:07 ] どれどれ。
182 名前:デフォルトの名無しさん [2007/11/10(土) 06:32:14 ] ありがとうございます!!!! えーと 数独の問題をグラフ彩色問題に変換せよ ってもんだいなんですけど どうやらこれをアルゴリズムで説明させる問題らしいんです
183 名前:デフォルトの名無しさん [2007/11/10(土) 06:38:08 ] 縦横と正方形に同じ数字が入ってはいけないっていうことだろう 数字をいろと言い換えればいいだけだろう
184 名前:デフォルトの名無しさん [2007/11/10(土) 06:40:27 ] やっぱそれでいいんですよね! 俺もそれ以外に思い浮かばなくて・・・ 数独アルゴリズムの数字を色って書き換えるだけでいいですよね?
185 名前:デフォルトの名無しさん [2007/11/10(土) 06:58:06 ] 解くアルゴリズムは作らないと行けないのか?
186 名前:デフォルトの名無しさん [2007/11/10(土) 07:01:30 ] 16個のヒントの物は作れるか? 最初にヒントとして配置する数字の数は、24〜32個程度が多く、これ以上だと解くのが簡単になる。 逆にそれ以下にするのは作者の技量も必要になってくる。 問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、 対称形の問題では18個(初出・パズル通信ニコリ31号 1990年)、 非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。 ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC
187 名前:デフォルトの名無しさん [2007/11/10(土) 07:05:40 ] 解くアルゴリズムはググッてわかりました ただ、彩色問題とからめた記述がなかったのでどうしようかとおもいまして・・
188 名前:デフォルトの名無しさん [2007/11/10(土) 07:06:38 ] 方針としては、縦か横か、正方形で可能な形を全て埋めてみるといいとおもう 例えば正方形の可能数は9! 通りある 9カ所埋めてみて縦が平気か調べていく
189 名前:デフォルトの名無しさん [2007/11/10(土) 07:14:21 ] 参考になりました! こんな朝早くにありがとうございました
190 名前:デフォルトの名無しさん [2007/11/10(土) 07:24:27 ] 最大でも、9*9! とおりしかないから、全配置を決定しておいてから、初期配置を満たすものをサーチすればいいと思う 9 * (9 !) = 3265920だから解けているからどうかを記録するには3MBくらいだ
191 名前:デフォルトの名無しさん [2007/11/10(土) 07:26:18 ] 1行目が 123456789 だとすると、2行目には上の数字はこないから減らせる
192 名前:デフォルトの名無しさん [2007/11/10(土) 07:50:49 ] 1から9の順列を昇順に求めるプログラム #include <iostream> using namespace std; main(){ int a,b,c,d,e,f,g,h,i,chk[9]={1,1,1,1,1,1,1,1,1},N=0; char **jretu=new char* [9]; for(a=0;a<9;a++) jretu[a]=new char [362880]; for(a=0;a<9;a++){ chk[a]=0; for(b=0;b<9;b++){ if(chk[b]==0)continue; chk[b]=0; for(c=0;c<9;c++){ if(chk[c]==0)continue; chk[c]=0; for(d=0;d<9;d++){ if(chk[d]==0)continue; chk[d]=0; for(e=0;e<9;e++){ if(chk[e]==0)continue; chk[e]=0; for(f=0;f<9;f++){ if(chk[f]==0)continue; chk[f]=0; for(g=0;g<9;g++){ if(chk[g]==0)continue; chk[g]=0; for(h=0;h<9;h++){ if(chk[h]==0)continue; chk[h]=0; for(i=0;i<9;i++){ if(chk[i]==0)continue; jretu[0][N]=a;jretu[1][N]=b;jretu[2][N]=c;jretu[3][N]=d; jretu[4][N]=e;jretu[5][N]=f;jretu[6][N]=g;jretu[7][N]=h;jretu[8][N]=i; N++; }chk[h]=1; }chk[g]=1; }chk[f]=1; }chk[e]=1; }chk[d]=1; }chk[c]=1; }chk[b]=1; }chk[a]=1; }cout<<N;}
193 名前:デフォルトの名無しさん [2007/11/10(土) 08:03:31 ] 32bit変数に、3bitずつデータ入れていけば列に同じ数字があるかどうかはXOR演算で出来るな
194 名前:デフォルトの名無しさん [2007/11/10(土) 08:05:36 ] やっぱり駄目だ 結局9回のループか演算(ifなど)がいるな
195 名前:デフォルトの名無しさん [2007/11/10(土) 08:09:10 ] 123456789 251498736 987654321 に縦方向に同一文字があるかどうかはどう判定する?
196 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 08:58:30 ] >>182 演習問題1は、 >数独(ナンバープレイス) をグラフ彩色問題に変換せよ だからアルゴリズムで説明させるってどういう意味? >(a) あいているマスに1〜9 までのどれかの数字を入れる >(b) 縦・横の各列および太線で囲まれた3 × 3 のブロックに同じ数字が入ってはいけない (b)の定義を以下のように読み替える。 (1)3×3の小ブロック内のマスは全て異なる数字であること (2)あるマスに対して、同じx、yを持つマスは全て異なる数字であること 特定のマス集合に所属するマスが全て異なる数字である事は、 任意のマスを一つ取り出した場合に、そのマス以外の他のマス集合に所属するマスと数字が異なるということと同じである。 これをグラフで表せば、それぞれのマスをグラフの頂点とした完全グラフにおいて、 任意の辺においてその両端の数値が異なることと同義である。 これはグラフ彩色問題の定義である。 というか、お前>>166 だろ?演習問題2ぐらい自分でやれよ。
197 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:06:46 ] ついでに、SEQまではとりあえずやってみて秋田。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5238.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5239.txt DSATURは誰か頼む。
198 名前:デフォルトの名無しさん [2007/11/10(土) 09:11:44 ] 数独で16個の初期配置で解けるか調べるプログラム
199 名前:デフォルトの名無しさん [2007/11/10(土) 09:12:24 ] 問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。 ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC
200 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:21:51 ] >>198 「問題として成立する」と「解けるか」は意味が違うだろ、常識的に考えて。 なんなら初期配置0個でも解けるぞ。
201 名前:198 [2007/11/10(土) 09:51:13 ] >>200 解ける = 配置が一意的に求まる 解けている全配置を求めるプログラム書いたが 二つ目が出てこない 時間がかかりすぎる #include <iostream> using namespace std; main(){ int G[9][9],R[9][9],S[9][9]; int x,y[81],m,n,l,d,cnt; for(n=0;n<81;n++)y[n]=0; for(m=0;m<9;m++)for(n=0;n<9;n++)G[m][n]=R[m][n]=S[m][n]=1; d=cnt=0; for(;;){ x=y[d]; m=d/9; n=d%9; l= 3*(m/3) + n/3; if( G[m][x]+R[n][x]+S[l][x]==3 ){ if(d<80){G[m][x]=R[n][x]=S[l][x]=0; d++; y[d]=0;continue;} cnt++;for(int k=0;k<81;k++){if(k%9==0)cout<<endl;cout<<y[k]<<" ";};d--;} ST: if(y[d]<8)y[d]++; else{ if(d==0){cout<<cnt;return 0;} d--; x=y[d]; m=d/9; n=d%9; l= 3*(m/3) + n/3; G[m][x]=R[n][x]=S[l][x]=1; goto ST;} }}
202 名前:198 [2007/11/10(土) 10:08:16 ] 回転や反転の同一視、数字の同一視などを考慮しても全解答を求めるのは困難そうだ もし全配置が決定できれば、初期配置に対してそれを含む解答がただ一つがどうか調べるだけだ
203 名前:デフォルトの名無しさん [2007/11/10(土) 11:03:59 ] ***** **** *** ** *
204 名前:203 [2007/11/10(土) 11:04:43 ] 投稿ミスですorz
205 名前:203 [2007/11/10(土) 11:14:23 ] 下の図形をfor文で作るのですが・・ よくわかりませんorz ***** **** *** ** * 他スレでヒント貰ったのですが・・ 俺の頭じゃ無理だったみたいです・・
206 名前:203 [2007/11/10(土) 11:15:26 ] なんだか一個づれてますが ピラミッド型です。。本当にすみません
207 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:24:40 ] >>203 ピラミッドを作るなら各段'*'の数は奇数のような気が 偶数の段があると上手くいかないような ******* ***** *** *
208 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:30:24 ] >>205 #include <stdio.h> int main() { int i,j; for(i=5;i>0;i--){ for(j=0;j<5-i;j++) printf(" "); for(j=0;j<i;j++) printf("*"); printf("\n"); } return 0; }
209 名前:203 [2007/11/10(土) 11:30:59 ] 宿題見る限りでは偶数も入ってるんですょね・・ 多少いびつな形かもしれません
210 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:36:05 ] >>209 すると、問題が不明瞭だな。「ピラミッド型」が未定義だ。 これまでの回答で満足できないなら問題をきちんと確認してこい。
211 名前:203 [2007/11/10(土) 11:37:17 ] >208 ぉぉーー どうもです;;
212 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:00:34 ] >>175 ですけどこれじゃあちょっとわかりにくいので 50回移動すると考えれば、考えやすいのかなと。 無制限にこの確率で移動してendにたどり着くことなんて無限にあるんじゃないかと おもってしまった。
213 名前:デフォルトの名無しさん [2007/11/10(土) 12:55:04 ] 0は空マス これ何秒で解ける? 000 000 061 000 200 007 000 940 000 087 000 000 006 000 400 000 000 230 000 078 000 200 006 000 490 000 000
214 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:40:53 ] 542 783 961 839 261 547 761 945 823 387 524 619 126 839 475 954 617 238 615 478 392 278 396 154 493 152 786 1秒もかからんわ
215 名前:デフォルトの名無しさん [2007/11/10(土) 18:09:05 ] [1] 授業単元:C言語 [2] 元のファイルslist.c: www.uploda.org/uporg1105430.txt.html 自分で途中まで作ったやつ:www.uploda.org/uporg1105431.txt.html [3] 環境 [3.1] OS:Linux (家ではWindowsでMinGW+MSYS+XEmacs) [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11月14日 [5] その他の制限:特にないです [問題文] 課題:slist.c の改良 1.print_person関数を単方向リストを辿るように変更せよ。(自分なりに解決済み) 2.次の機能を実装せよ。 ・標準入力から一行ずつ名前と年齢を読み込む ・名前と年齢はカンマ(,)で区切る ・"foo,19"など ・単方向リストに格納して出力 3.その他(授業でヒント「単方向リストの反転」が与えられ、自分なりに解決済み) [問題文終わり] 自分で作った方はperson_input()の中が全然できてません。 次に続きます。
216 名前:215 [2007/11/10(土) 18:11:48 ] 構造体に名前と年齢を標準入力して、単方向リストで出力をするプログラムを考えています。 標準入力の際に名前と年齢は「tanaka,20」のように一行にするよう指示されています。 ヒントとして以下が与えられました。 char buf[256] ; char *name; int age; while (fgets (buf, sizeof(buf), stdin)) { char *sep = rindex (buf, '\n'); if (!sep) continue; *sep = '\0'; sep = rindex (sep, ','); if (!sep) continue; *sep = '\0'; name = buf; age = atoi (++sep); } また使用している構造体pは struct person { char *name; int age; struct person *next; }; です。このヒントを用いて一行の標準入力から適切に構造体に入れ、 単方向リストに格納するにはどうしたらいいでしょうか。 while文の中がややこしくて終了の仕方も分からないのでよろしくお願いします。
217 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:49:41 ] >>212 無理
218 名前:163 mailto:sage [2007/11/10(土) 18:53:17 ] >>197 ありがとうございます。 あと(2)のほうを、どなたかお願いします。
219 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:04:07 ] 誰かいますか?
220 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:14:21 ] 公にはいないことになっている
221 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:25:26 ] 数独ソルバー www.ffconsultancy.com/dotnet/fsharp/sudoku/index.html
222 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:41:35 ] >>192 char **jretu=new char* [9]; for(a=0;a<9;a++) jretu[a]=new char [362880]; となっているが char jretu[9][362880]; とすればいいだけじゃないか? というかこれは一体何をするプログラムなんだ。
223 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:07:51 ] >char jretu[9][362880]; >とすればいいだけじゃないか? やってみろw
224 名前:デフォルトの名無しさん [2007/11/10(土) 21:24:19 ] 等比数列の和を求めるソースを教えてください 初項a,公比r、項数nとする
225 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:26:13 ] >>224 無能でも無能なりにテンプレを埋めてください
226 名前:デフォルトの名無しさん [2007/11/10(土) 21:32:28 ] 224です 教えてください(涙)
227 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:32:58 ] >>225 折角このオレでも答えられそうな問題なのに、そうつれなくするなよ >>224 >>1 に質問(しつもん)テンプレっていうのが書(か)いてあるから、よく読(よ)むんだよ 読(よ)めない漢字(かんじ)は辞書(じしょ)を引(ひ)くといいよ
228 名前:aho mailto:sage [2007/11/10(土) 21:34:14 ] >>215 struct person{ char name[20]; //char*では'q'の影響を受けるため int age; struct person* next; }; struct person* addList(char* name, int age, struct person* head){ struct person* list; /* メモリ確保 */ if((list = (struct person*)malloc(sizeof(struct person))) == NULL){ printf("malloc error!\n"); return NULL; } strcpy(list->name, name); list->age = age; list->next = head; head = list; return head; }
229 名前:aho mailto:sage [2007/11/10(土) 21:35:14 ] >>228 printf("type 'q' to exit\n"); while(fgets(buf, sizeof(buf), stdin)){ /* 改行コードを取り除く */ char* sep = rindex(buf,'\n'); if(!sep) continue; *sep = '\0'; if(!strcmp(buf, "q")) break; /* カンマまでをbufに格納 */ sep = rindex(buf, ','); if(!sep) continue; *sep = '\0'; name = buf; age = atoi(++sep); head = addList(name, age, head); } 何かあれば言ってちゃぶだい!
230 名前:デフォルトの名無しさん [2007/11/10(土) 21:36:29 ] 数独で16個の初期配置で解けるか調べるプログラム 問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。 ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC
231 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:43:01 ] >>226 #!/usr/local/perl $a = <STDIN>;$r = <STDIN>;$n = <STDIN>; print $a*$n if($r == 1);print $a*(1-$r**$n)/(1-$r) if($r != 1);
232 名前:デフォルトの名無しさん [2007/11/10(土) 21:46:45 ] 質問テンプレってどこにあるんですか? 直接とべるようにしてくれたらうれしいです
233 名前:デフォルトの名無しさん [2007/11/10(土) 21:52:50 ] 等比数列の初項aと公比rと項数nをキーボードから入力して、それらを画面に表示して最後にそれらの総和を表示する。 ただし、a,rは実数とする
234 名前:215 [2007/11/10(土) 21:55:25 ] >>228 struct person{ char name[20]; //char*では'q'の影響を受けるため int age; struct person* next; }; これはプログラム最初の6行目を書き直せということでしょうか? addList()が何をしててmain内でどうすればいいのか分かりません。
235 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:09:21 ] 宿題を書き込んだ人がこのスレの流れをみてるんだけど 難易度高いやつからくそ低い宿題まで書き込まれるんですね。。。
236 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:14:57 ] >>232 俺が適当にテンプレを埋めて置く、間違ってる所は指摘しろ 【質問テンプレ】 [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 等比数列の初項aと公比rと項数nをキーボードから入力して、それらを画面に表示して最後にそれらの総和を表示する。 ただし、a,rは実数とする [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C [4] 期限: 2007年11月11日零時零分零秒 [5] その他の制限: 普通に作ってってね。簡単すぎるからって ふざけて物凄いコード書かないでね。
237 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:18:05 ] >>236 #include<stdio.h> int main(void){ double a, r, an, sum; int i, n; printf("等比数列の初項 a (実数) を入力して下さい : "); scanf("%lf", &a); printf("等比数列の公比 r (実数) を入力して下さい : "); scanf("%lf", &r); printf("等比数列の項数 n (整数) を入力して下さい : "); scanf("%d", &n); printf("a=%g r=%g n=%d\n", a, r, n); an=a;sum=0.0; for(i=0;i<n;i++){ sum+=an; an*=r; } printf("sum=%g\n", sum); return 0; }
238 名前:aho mailto:sage [2007/11/10(土) 22:20:42 ] >>234 addList()については以下のページを参照。わかりやすくかいてある。 www9.plala.or.jp/sgwr-t/c/sec15-5.html --構造体のメンバnameの型変更について-- while()内にif(!strcmp(buf, "q")) ていう部分があるでしょ? そこはbufが"q"だったらループを抜けるってこと。 ここまではOKっすよね? この後の文の name = buf; が厄介なのである。 nameの先頭ポインタにbufの先頭ポインタを代入している。 これをaddList()内でstrcpyの代わりにやることが出来ない。 nameはbufのポインタを参照しているから、bufが変わればnameも一緒に変わってしまう。 説明下手でごめんちゃい。
239 名前:デフォルトの名無しさん [2007/11/10(土) 22:20:43 ] 巡回セールス問題を解くプログラムを順列を用いて書きたいのですけど for(i = 0; i < n; i++) used[i]=NO; perm(0); return(0); } void perm(int d) { int i,j; int b[MAXN]; int s = adj[a[0]][a[n-1]]; if(d == n){ for(i = 0; i < n-1; i++){ s+=adj[a[i]][a[i+1]]; } } else { for (i = 0; i < n; i++) { if (used[i] == NO) { a[d] = i; used[i] = YES; perm(d + 1); used[i] = NO; } } } } これだけだとただの列挙になってしまいます 最小値だけをだすにはどうしたらいいでしょうか?
240 名前:aho mailto:sage [2007/11/10(土) 22:22:15 ] >>235 その通り。 その中から暇人達がやりたい問題を選んでやるわけなのだよ、明智君。
241 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:26:14 ] 協力お願いします。 wwwww.2ch.net/test/read.cgi/news4vip/1194617474/
242 名前:215 mailto:sage [2007/11/10(土) 22:29:06 ] >>238 さん感謝です。 まだよく分かっていませんが考えてみます。 分からなかったらまた質問したいので215のリンクを貼りなおしました。 先生の元データ: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5240.txt 自分の途中データ: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5241.txt たぶんまた来ますがよろしくお願いします。
243 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:29:53 ] やりたい問題だけなのか。。。 175なんて理解不能な問題だしたおれってアホだな。。。 上の部分だけならなんとか計算できるレベルなのに 下にもあってしかも上と移動するなんてありえないな。。。 どう書いていけばいいのかわからないんだよね。。。
244 名前:aho mailto:sage [2007/11/10(土) 22:32:52 ] >>175 >>243 もう一度upしてくれ! ファイルが見つからん!
245 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:33:01 ] >>175 なんて問題すら見えないんだが… 余程のエスパーでないと解きようも無い
246 名前:175 mailto:sage [2007/11/10(土) 22:52:39 ] [1] 授業単元: 確率論 [2] 問題文: toku.xdisc.net/cgi/up/vcc/nm12581.txt ここに書きました。 移動50回するものとします。 図はこんな感じです。 toku.xdisc.net/cgi/up/vcc/nm12580.jpg [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月11日 [5] その他の制限: 図の上の1,2,3を構造体配列struct gstate upnum[3] 図の下の10,11を構造体配列struct gstate downum[2]として。 構造体メンバnumに1,2,3,10,11をいれるように。 お願いします。
247 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:05:10 ] >>246 gstateの定義は自由?
248 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:22:28 ] >>246 なんだ 簡単じゃん
249 名前:175 mailto:sage [2007/11/10(土) 23:26:17 ] 自由でいいです。 まー図の状態数をもっと多くしたかったんですけど。 toku.xdisc.net/cgi/up/vcc/nm12583.jpg こういう感じが本番なんですけどね。
250 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:27:36 ] 増えただけで考え方は全く同じ
251 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:34:24 ] 何かこれ有効グラフの最大流と最小カット問題みたいだな
252 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:40:15 ] >>246 行列につっこめれば、ただの積ですむのに……
253 名前:175 mailto:sage [2007/11/10(土) 23:42:31 ] 上だけなら行列につっこめばいんだけど 下が邪魔なんですよ。
254 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:48:54 ] >>253 いや、かわんないだろ?
255 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:50:15 ] >>253 なぜ分けて考える
256 名前: ◆54R0MOHTQo mailto:sage [2007/11/10(土) 23:58:08 ] [1] 授業単元:データ構造論 [2] 問題文(含コード&リンク): フリーリストを用いた任意精度整数の実現 かなり長くなるのでアップロードしました kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5242.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc 3.3 [3.3] 言語: C [4] 期限: 11/11 24:00 [5] その他の制限: 特になし 自分の頭では1日かかっても全く分かりませんでした・・・ よろしくお願いします
257 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:11:22 ] >>246 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5243.txt 上でも書いたけど、行列で組んだ方がシンプル。ま、いっかってことで。
258 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:13:05 ] >>246 構造体の名前は変更しておいて 使い方は data.txt をリダイレクトするだけ ans246 < data.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5244.lzh
259 名前:175 mailto:sage [2007/11/11(日) 00:21:33 ] >>257 >>258 ありがとうgございます
260 名前:215 [2007/11/11(日) 00:33:21 ] >>215-216 で質問した者です。 >>228 と>>238 のahoさんによるヒントで書き直してみましたがうまくいきません。 うちのコンパイラに問題があるのかもしれません。 というのも>>238 に紹介されたサイトの長いプログラムをコンパイルしてもうまく 実行されないからです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5245.txt 作ったプログラムがうまくできているか確認お願いします。 でもたぶん間違っているので訂正もお願いします。 (もしahoさんがいれば話が早いかもしれません。)
261 名前:215 mailto:sage [2007/11/11(日) 00:36:10 ] ちなみに>>215 はリンク切れで>>242 にもう一度あげています。
262 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:57:13 ] 246ですけどもうひとつ付け足しでいいですかね?
263 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:00:52 ] >>262 では断る
264 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:16:00 ] グラフって楽しいね
265 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:17:11 ] >>260 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5246.txt あ、めんどくさくてfreeの方直してなかった。ま、いっか。
266 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:20:31 ] >>256 でんつーだーい BigNumberとBigNumberNodeの両方でフリーリスト使うようにするとか書かなきゃ これじゃどっちかだけフリーリストを使って書くかもよ? なんにせよ全部の問題やるとかなり長いので明日までにはやってられないと思うけど つかフリーリストの構造がわからないんじゃあフリーリスト使わないで書いてみればいいのに
267 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:21:24 ] >>266 ちょwww またでんつーだーいかよwwww
268 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:22:22 ] [1] 授業単元: 確率論 [2] 問題文: ここに書きました。 toku.xdisc.net/cgi/up/vcc/nm12605.jpg.html 図はこうです。 toku.xdisc.net/cgi/up/vcc/nm12604.txt.html [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月12日 [5] その他の制限: A,B,C,Dはそれぞれファイルとして扱う 例えばAには 0.6 0.4の2つの数値だけ書かれてあり、その数値を読み取るようにする。 1と1、0と0が一致したらその状態同士、3つ選択肢ができることになるので 右の確率を半分にわけて0.6 0.2 0.2として とどまる確率0.6 上の次の状態に移動する確率0.2 下のつながった状態に移動 する確率が0.2となります。 下も同様に。
269 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:25:55 ] >>267 今回は5%3年生のま科だな ちょっと上は7%4粘性のか科だったはず 正直お前らもうちょっと頑張れと
270 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:25:58 ] >>268 つーか、もとの問題文でも上と下は別要素で扱えってなってるの? 激しくクソなんだが。
271 名前:215 [2007/11/11(日) 01:30:41 ] >>265 ありがとうございます! うちのコンパイラ(msys)では実行されませんでしたが学校でコンパイルしてみます。 person_free()微妙に変わってましたがさらに手を加えたほうがいいですか?
272 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:32:49 ] >>271 ^Zって書いてるけど、ctrl+Dで代用。 Windows用の豆知識な。
273 名前: ◆wFVK8h9bmM [2007/11/11(日) 01:33:11 ] [1] 授業単元: 関数、ポインタ変数 [2] 問題文(含コード&リンク): −− 断熱圧縮過程における温度・圧力の計算 −− 初期温度 T0、初期体積 V0、初期圧力 P0 の空気を、 シンリダー中で圧縮比 E (= V0/V) にまで断熱圧縮するときの体積 V、温度 T、圧力 P を計算する関数をつくる。 1) 関数では、初期温度、初期体積、初期圧力と圧縮比を与え、この条件における温度、圧力、体積を求める。 体積は戻り値とせよ(したがって、温度と圧力はポインター変数となる)。 2) 上記関数を用いて、初期値 T0 = 273.15 °K、V0 = 1.0 m^3、P0= 9.80×10^4 P に対する、E=1,2,3,4,5 における値を出力せよ。 3) 計算結果を次のように表示する。 HomeWork5 19.11.24 K3B55 山田太郎 ----- 計算条件 ----- 初期体積 V0 = 1.00 (m^3) 初期温度 T0 = 273.15 (K) 初期圧力 P0 = 9.80×10^4 (P) ----- 状態変化(計算結果) ----- 圧縮比 E 体積 V 温度 T 圧力 P 1. 1000.00 273.15 98000. 2. 500.00 360.42 258623. 3. 333.33 423.89 456242. 4. 250.00 475.58 682511. 5. 200.00 519.98 932790. ↓続く
274 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:33:25 ] 上と下で区別しないといけないので。 たとえば 上がABBAC と 下がDABCの計算とか 上がBA と 下がADACADBCの計算をできるようにしたいんで。
275 名前: ◆wFVK8h9bmM [2007/11/11(日) 01:33:41 ] 参考: 空気を断熱圧縮するときの体積 V、圧力 P と絶対温度 T の間には、PVκ=一定、PV=RT (R:気体定数) の関係がある。 これより、V=V0/E、T=T0Eκ-1、P=P0Eκ の関係が得られる。ただし、κは比熱比 (= cp/cv) であり、その値は 1.4 である [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:不明 [3.3] 言語:C [4] 期限:H19年11月5日 [5] その他の制限:関数、ポインタ変数を使って作るそうです。 よろしくお願いします。
276 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:35:17 ] >>274 それって計算するとき関係ねーじゃんw
277 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:39:39 ] >>276 自分の力量からして区別しないといけないかとおもってました。すみません。 別要素で扱わなくてもいいです。 上がABBAC と 下がDABCの計算とか 上がBA と 下がADACADBCの計算をできるようにできれば。
278 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:54:26 ] de.eurosport.yahoo.com/fussball/bundesliga/
279 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 10:13:27 ] >>275 公式をもう一度確かめてもらえませんか?おかしな結果になります。
280 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 10:22:59 ] >>279 具体的になんの気体かを書いたほうが良いのでは? 気体→液体のときにかかるエネルギーとか、 なぜか温度が-273度を下回るとか、 そういう計算が出てきちゃうから
281 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 10:34:31 ] >>273 公式が違うような気が T=T0*E^(κ-1) P=P0*E^κ 計算結果も変な気が 何で圧縮比1つまり体積が変化いてないはずなのに V0=1.0m^3の空気が1000.00m^3になってるの?
282 名前:デフォルトの名無しさん [2007/11/11(日) 11:27:07 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 80〜120の数値を正規乱数で発生させるプログラムを作成しなさい。 平均100・標準偏差0.1とする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5 [3.3] 言語: C++ [4] 期限: 11/12 12時 [5] その他の制限: よろしくお願いします
283 名前: ◆wFVK8h9bmM [2007/11/11(日) 11:28:34 ] >>279-281 問題文はそのままコピペなのでこれ以上の情報が無いんです。
284 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 12:22:40 ] >>283 講師に間違ってると指摘するとボーナス点が貰えるかもよ。 取り合えず、V0=1.00m^3、E=1の時V=V0/E=1000.00ってどう言う事ですか?と質問してみな。 1.00m^3=1000Lだけど単位変えないよな普通 良いのが見つからないんだけどこの辺見れば式が間違ってる事に気付く筈 ttp://www.photon.t.u-tokyo.ac.jp/~maruyama/talks/thermo/sld028.htm
285 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 12:45:04 ] 機嫌損ねて減点とかもありえそうだから困る。
286 名前: ◆wFVK8h9bmM [2007/11/11(日) 12:45:40 ] >>284 はい。まず質問してみます。 返事が返ってきたらまた書き込ませてもらおうと思います。
287 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 13:45:19 ] 病苦 借金苦 精神疾患 絶望 鬱+借金苦 死にたいだけ 自分が要らないから。 いても仕方が無い。他の人が必要としても、私は必要ではない 消滅したいから 今持っているものを失うのが怖い 生きる希望がなぃ 生きてる意味を見出せないから 生きていて三'::::::............... .....::::::`y,. 皆にキモがられる・将来に対する漠然 とした不安ナ:::::::::::::::::::::::::::::::::::::::::::::ヾ 鬱 僕の存在はみんなに不快感を与えるだけだ から「死ねV::::::::::::::::_{{ ({∫∬ノノjヾ:::::{ に耐えられない 恋 誰にも必要とされていない 脳の 片隅から ナ::::::::::::::i`__,,,,,,,ァ_ _,,,,,_ t;;:ヌ しするとしたら、支払い苦 過食症 親 配偶者の死 疲れた イヘ::::::(ヾ~!,ャt、 !'''i ィtン )=f }fが嫌だから。 解離性同一障害で、別の人格に 体を乗っi {t)テ" ヘ' '___,イ ヽ_/ 介' じゃないから ここに載っている物から一つだけは ムリだけrヘ_,j|!' /ー--''! |'不明でごめんなさい) 人間が嫌い。人間はどこ まででも/| | /二ク !から。そんな生き物と上っ面だけとはいえ、 付き合/ { ! 、 ヾニン ノ。 かゆいから 幸せなときに死にたい 毎日毎日 疑問が| | ! \ _,,./だしても疑問はなくならない、それならばある日生きる ことをやめるか丶\ `__>-ー´ると告げられても、そうかと思うだけだから 今の日本 は腐ってるから 辛い かゆい 人生つかれたから 自分が世界一かわいいから 金がな いから 一度死に際を経験して生きる意味を見出したい 野球部だから 知らない 生き る事自体が矛盾の繰り返しだから(自分の意思で生まれて来ないのに自分の意思で 生きて行く) 帰りたいから 身内が殺人を犯したから、その罪滅ぼしに 変わりはてた顔 自殺が自分にできる唯一の復讐だから そもそも生きている感覚が無かったし、今も無 いので、不問。 差別に耐えられない 今後受ける肉体的苦痛を回避するため 暇つぶし (生きるのに退屈しか感じなくなった 別に死にたくない 体の障害のため 鬱&スロット依 存症 生きてても金食いつぶすだけ 死んだらどうなるんかなぁと 離婚 母親の裏切り、 恐怖 家にいるのが苦痛。受験のことを考えたり…将来に希望がない。親が勉強の事
288 名前:デフォルトの名無しさん [2007/11/11(日) 14:14:07 ] [1] 授業単元:C++ [2] 問題文:シーザー暗号(文字をA-Zの順に、一定数シフトすることで暗号化する。例えば、Return to Romeは、3文字シフトでUhwxuq wr Urphとなる。) で書かれたファイルを解読し、解読文を表示するプログラムをつくれ。 条件: 1.ファイルの中で暗号化されているのは、アルファベットのA-Z(大文字)とa-z(小文字)のみである。 2.空白、ピリオド、コンマ、セミコロン、コロンは、暗号化はされていないが、解読文のアウトプットを表示するとき、正しく表示すること。 3.ファイルの中で最も頻繁に現れるアルファベットが、“e”であるという事実に頼り、シフト数を計算せよ。 [3] 環境 [3.1] OS: Win [3.2] コンパイラ名とバージョン:DevC++ [3.3] 言語: C++ [4] 期限: 2007年11月16日まで。 [5] その他の制限: 標準ライブラリのみ使用可能。Cのクラスは使用不可。 よろしくお願いします。
289 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 14:55:32 ] >>273 #include <stdio.h> #include <math.h> int main(void) { double p, v, r, t, kappa; double p0, v0, t0; int e; p0 = 9.80e4, v0 = 1.0, t0 = 273.15; r = p0*v0/t0; kappa = 1.4; printf("----- 状態変化(計算結果) -----\n"); printf("圧縮比 E 体積 V 温度 T 圧力 P\n"); for(e = 1; e <= 5; e++){ v = v0/e; p = p0*pow(v0, kappa)/pow(v, kappa); t = p*v/r; printf("%d %.2f %.2f %f\n", e, v*1000, t, p); } return 0; }
290 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:29:22 ] 元気ですかー?
291 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:32:26 ] ちょとsYレならんしょこれは・・?
292 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:54:11 ] ここって何人くらいで作業してるの?
293 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:55:29 ] >>292 確か前集計したとき、20人だったような……
294 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:40:09 ] >>166 で [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5237.txt をお願いしたのですが >>169 >>170 の方のを実行させてもらった所、0.05では正しいのですが 今度は0.1で1回少ないようです。どなたかお願いします
295 名前: ◆QipEoOUdX2 mailto:sage [2007/11/11(日) 17:41:55 ] [1] 授業単元:プログラム演習 [2] 問題文:等比数列の初項aと公比rと項数nを入力して、それらの総和を表示する。ただしa、rは実数値とする [3] 環境 [3.1] OS:Windows [3.2] gcc [3.3] 言語: C [4] 期限: 11月12日 03:00 [5] その他の制限 よろしくお願いします
296 名前: ◆EcwVYA3Joo [2007/11/11(日) 17:43:12 ] [1] 授業単元:プログラミング1 [2] 問題文(含コード&リンク): キーボードから1〜20までの任意の整数を10個入力する。 さらにもう一つ入力し、最後に入力した値が、始めに入力した10個の整数の中に存在するか存在しないかを調べて、その結果を表示するプログラムを作成せよ。 ※例 1〜20までの整数を10個入力してください。 1 9 11 19 2 3 7 6 15 10 入力した値は 1 9 11 19 2 3 7 6 15 10 です。 探す値(1〜20)を入力してください。:11 11は入力値にあります。 探す値(1〜20)を入力してください。:18 18は入力値にありません。 [3] 環境 [3.1] OS: Windows [3.3] 言語:C言語 [4] 期限:2007年11月11日19:10まで [5] その他の制限: よろしくお願いします。
297 名前:デフォルトの名無しさん [2007/11/11(日) 17:45:24 ] [1] 授業 C言語上級 [2] 結果を出力できるようにプログラムを準備してください. 入力ファイルフォーマット: source-node destination-node packet-loss-rate a b 0.3 a c 0.1 . . z w 0.9 Step1: 二行目からデータを読み込みます.例えば,node a から node bまで のパケット損失率0.3から最後までに読むこと.ノードペア毎のパケット損失率 を記録する. ※ 下記変数が必要 char *node_pair_name[1000]; //ノードペア名を記録する,行ごとは一記録と します.何行があるならば,何個の記録がある.後で使う. double packet_loss_rate[1000];//ノードペア毎に記録する, Step2: 読み込んだデータpacket_loss_rateをJI関数f(double *x, int n)に 渡して,JIを計算します. Step3: JI出力 以上のプログラムを組み込んでください. [3] C言語 [4] 11月13日まで JI関数はすでにできているので気にしなくて大丈夫です。 よろしくお願いします。
298 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:50:33 ] >>294 自己解決..? for(x=0;x<1-h;x+=2*h){ sum+=(f(x) + 4*f(x+h) + f(x+2*h)) * h/3; printf("%f %f\n",sum,x); }
299 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 19:03:18 ] >>295 >>236
300 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 19:12:44 ] >>296 #include <stdio.h> #define N 10 int main( int argc, char ** args ){ int a[N]={0}, i, o; printf( "1〜20までの整数を10個入力してください。\n"); for ( i = 0; i < N; ++i ) scanf( "%d", &a[i]); printf( "入力した値は " ); for ( i = 0; i < N; ++i ) printf( "%d ", a[i]); printf( "でし。\n" ); for (;;) { printf( "探す値(1〜20)を入力してください。:" ); scanf( "%d", &o ); for(i=0;i<N;++i) if ( a[ i ] == o ) break; if ( i != N ) printf( "%d は入力値にあります。\n", o ); else printf( "%d は入力値にありません。\n", o ); } return 0; }
301 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 19:23:13 ] たまってるキューはどれくらい?
302 名前: ◆EcwVYA3Joo mailto:sage [2007/11/11(日) 19:40:44 ] >>300 ありがとうございます。 起動出来ませんでしたが…
303 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:00:25 ] >>295 #include<stdio.h> double geoSeries(double init, double ratio, unsigned int nth) { size_t ix = 1; double res = init; while( ix != nth ) { res *= ratio, res += init; ++ix; } return res; } int main(void) { printf("%lf\n",geoSeries(1.0,2.0,1)); return 0; }
304 名前: ◆DGgnWkEBkw mailto:sage [2007/11/11(日) 20:11:20 ] [1] 授業単元: アドバンスドプログラミング [2] 問題文(含コード&リンク): (1) 最大で10 行10 列の要素取り扱える行列A に対して下記機能を満足するプログラムを作成せよ。 @ main 関数内で3行4列の行列A にキーボードから、要素データを入力する。 A @の後、行列の形式としてA を表示する。 B Aの後、行列A の各要素の先頭アドレスを行列形式で表示する。 注意:入力データは、double 型とする。 (2) 最大で10 行10 列の要素取り扱える行列A,B,C,D に対して下記機能を満足するプログラムを作成せよ。 @ 3 行3列の行列A にデータを入力する。 A 行列A の各要素2倍した行列B を生成する。 B 行列A の転置行列を行列Cとして生成する。 C 行列Aと行列Cの積を行列D に生成する(行列Dは、どんな性質を持った行列か?)。 (3) 最大で10 行10 列の要素取り扱える行列A に対して下記機能を満足するプログラムを作成せよ。 @ 3 行3列の行列A にデータを入力する。 A 行列A を表示する。 B 行列A の3行目を行列A の2行目に加え合わせる。(例えば、21 31 a + a を21 a に代入することを意味 する) C 行列A を表示する。 (4) (1),(2),(3)に対して、各機能の関数を作成して、プログラムのモジュール化を図りなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ2005のコマンドプロンプト [3.3] 言語: C [4] 期限: 2007年 11月12日 午前9時 [5] その他の制限: 特にその他の制限は無いですが出来るだけわかりやすくしてもらえるとうれしいです このスレに書き込むのは初めてなので、何か至らないところがあれば指摘してもらえると助かります
305 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:23:39 ] >>303 double geoSeries(double init, double ratio, unsigned int nth) { double res = init; while( --nth != 0 ) res = res * ratio + init; return res; }
306 名前: ◆EcwVYA3Joo [2007/11/11(日) 21:25:25 ] >>300 起動出来ました。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):1〜100の範囲の整数の乱数値を持つ要素数100の配列から、 キーボードで入力した1〜100の範囲ま整数地を探索し、入力値と同じ値が配列に含まれるか調べて、 その探索結果を表示するプログラムを作成する。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C [4] 期限:2007年11月11日22:40まで [5] その他の制限: すみませんが宜しくお願いします。
307 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:52:46 ] しかしプログラミングって授業多いな
308 名前:デフォルトの名無しさん [2007/11/11(日) 21:56:46 ] >>307 そりゃあ、授業内容がプログラミングを習ってるんだから、授業名「プログラミング」が多いのは当然かと。
309 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:11:56 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): =======datalist.txt========= 1st:yamada 2st:okamoto 3st:uchida 4st:kondou =========================== のファイルを1st:、2st:などを取り除いて 名前だけをchar型配列にいれて表示せよ。 [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] C [4] 期限:11月12日くらい よろしくお願いします
310 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:17:03 ] >>306 #include <stdio.h> #include <stdlib.h> #define NOTFOUND (-1) int find( int ar[], size_t l, int t ){ size_t i; for (i=0;i<l;i++) if ( ar[ i ] == t ) break; return (i!=l)?(int)i:NOTFOUND; } int main( void ){ int ar[100],i,t; srand(time(NULL)); for (i=0;i<100;i++) ar[i]=rand()%100 + 1; /*for (i=0;i<100;i++) printf("%d ",ar[ i ]); puts("");*/ while(1){ do{scanf("%d",&t);}while(!( t>0 && t<101 )); puts( find ( ar, 100, t )==NOTFOUND ? "Not Found.":"Found"); } return 0; }
311 名前:309 mailto:sage [2007/11/11(日) 22:17:28 ] :とその左の部分を取り除くって形でいいです
312 名前:デフォルトの名無しさん [2007/11/11(日) 22:41:17 ] 宿題なんですが [1] 授業単元: プログラミング演習 [2] 問題文: 整数型のデータ(サイズは200*200)を読み込み、輝度値を線型に変換(y=ax+b)した上でのプログラム。 ただしa,bはargv,argcを利用する。 さらに、上のプログラムを読み込み、指定の範囲を切り出して出力するプログラムを書け。 暇な人、お願いします。ついでにargcとargvについて教えて頂けるとうれしいです。 [3] 環境 [3.1] OS:WINDOWS [3.3]言語:C言語 [4] 期限:11月13日
313 名前:デフォルトの名無しさん [2007/11/11(日) 22:52:36 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5248.txt [3] 環境 [3.1] OS:Windows [3.3] 言語: C言語 [4] 期限:11月12日午前0時30分まで よろしくおねがいします
314 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:09:51 ] >>309 #include<stdio.h> main() { int i=0,j,k; char line[1000],name[4][20]; FILE *fp; if((fp=fopen("datalist.txt","r"))==NULL){ printf("file can't open.\n"); return; } while(fgets(line,1000,fp)!=NULL){ for(j=0;line[j]!=':';j++); for(j++,k=0;line[j]!='\n';j++,k++) name[i][k]=line[j]; name[i][k]='\0'; i++; } for(i=0;i<4;i++) printf("%s\n",name[i]); fclose(fp); return; }
315 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:17:02 ] >>313 (3) #include<stdio.h> #include<string.h> void put_rstring(const char str[const]) { size_t len = strlen( str ) + 1; while( len != 0 ) putchar(str[--len]); return; }
316 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:23:56 ] >>313 (1) int str_char(const char str[const], const char c) { char *p = strchr( str, c ); return p != NULL ? p - str : -1; }
317 名前:163 mailto:sage [2007/11/11(日) 23:27:14 ] >>163 の(2)誰かお願いします
318 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:28:44 ] >>313 (2) void put_string(const char str[const]) { if(str[0] != '\0') { printf("%c\n",str[0]); put_string(&str[1]); } return; }
319 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:34:33 ] 再帰よりループのほうがいいか void put_string(const char str[const]) { size_t idx = 0; while( str[idx] != '\0' ) printf("%c\n",str[idx++]); return; }
320 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:37:35 ] >>312 >[2] 問題文: 整数型のデータ(サイズは200*200)を読み込み、輝度値を線型に変換(y=ax+b)した上でのプログラム。 輝度値ってなに? というかどういう宿題なのかもう少し詳しく。
321 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:49:27 ] >>320 たぶん画像処理関係
322 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:01:27 ] >>309 これじゃだめ? #include<stdio.h> #include<stdlib.h> #include<string.h> char *getFileName(char str[]) { char *p = strstr(str, "st:"); return p != NULL ? p+3 : str; } int main(int argc, char *argv[]) { FILE *fp; char buffer[BUFSIZ]; if( argc != 2 || (fp = fopen(argv[1], "r")) == NULL ) return EXIT_FAILURE; while( fgets(buffer, sizeof(buffer)/sizeof(char), fp) != NULL ) printf("%s",getFileName(buffer) ); return EXIT_SUCCESS; }
323 名前:312 [2007/11/12(月) 00:04:19 ] 問題はそのまま書いたものです。 プログラミング初心者なので輝度値を線型に変換(y=ax+b)とかの意味もわからない状態です; 一応200*200の画像を出力するプログラムまでできたんですが。。でもこの場合画像がないと出力できないですよね? 200*200の画像をC言語で作ることできますか?
324 名前:309 mailto:sage [2007/11/12(月) 00:09:17 ] >>322 OK
325 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:11:05 ] >>324 なにその上から目線。
326 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:19:17 ] >>323 そりゃできるだろうけど、作っても意味ないだろ。
327 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:21:20 ] >プログラミング初心者なので輝度値を線型に変換(y=ax+b)とかの意味もわからない状態です プログラミング初心者は関係ないし,言い訳にするな
328 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:43:47 ] 2stに噴いた
329 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:09:32 ] >>304 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5249.zip
330 名前:デフォルトの名無しさん [2007/11/12(月) 01:20:55 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5250.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:g++ [3.3] 言語: C++ [4] 期限: 13日21:00 時間のある方よろしくおねがいします
331 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:08:27 ] g++?
332 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:29:27 ] [1] 授業単元: 確率論 [2] 問題文(含コード&リンク): ここにかきました kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5251.txt [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] C [4] 期限:12日 お願いします
333 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 03:04:30 ] >>332 糞コードじゃなくて問題文を全文あげろよ
334 名前:デフォルトの名無しさん [2007/11/12(月) 06:06:50 ] [1] 授業単元:アルゴリズム [2] 問題文:巡回セールスマン問題を解くプログラムを作成しなさい。 今回は、あらゆる場合を全通り調べる方法で解を求めるプログラムでかまいません。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc [3.3] 言語: Cのみ [4] 期限: 15日 [5] その他の制限: たいていあり まじおねがいします
335 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 06:09:48 ] >>334 問題文が不足しています #include<stdio.h> int main(void){ printf("調べた\n"); return 0; }
336 名前:デフォルトの名無しさん [2007/11/12(月) 06:19:51 ] まず、地区分けするんだ 沖縄、東京、北海道、福岡など その地区から巡回したらいい
337 名前:デフォルトの名無しさん [2007/11/12(月) 06:23:36 ] mとnの距離を、d(m,n)とするとnとの距離が10以内のものなどを都市として分類する 都市どおしの距離にすれば簡単になる
338 名前:334 [2007/11/12(月) 07:18:53 ] すでに入力されたn個の整数のうちから選んだk個の整数の和の最小値を求めよ という問題を全順列を使ってプログラムしたらどんなのになりますか? これが分かれば>>334 ができるんですけど・・・ for(i = 0; i < n; i++) used[i]=NO; perm(0); return(0); } void perm(int d) { int i; if(d != n){ for (i = 0; i < n; i++) { if (used[i] == NO) { a[d] = i; used[i] = YES; perm(d + 1); used[i] = NO; } } } } ↑全列挙のプログラム
339 名前:デフォルトの名無しさん [2007/11/12(月) 07:44:28 ] 半径rの中に入っている町は、最大2r離れている 他の地区への距離が2r以上になるようにrを設定して分割すればよい
340 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 08:06:10 ] >>333 >>268 の部分的なところですよ。 [1] 授業単元: 確率論 [2] 問題文: ここに書きました。 toku.xdisc.net/cgi/up/vcc/nm12604.txt.html 図はこうです。 toku.xdisc.net/cgi/up/vcc/nm12605.jpg.html [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月12日 [5] その他の制限: A,B,C,Dはそれぞれファイルとして扱う 例えばAには 0.6 0.4の2つの数値だけ書かれてあり、その数値を読み取るようにする。 1と1、0と0が一致したらその状態同士、3つ選択肢ができることになるので 右の確率を半分にわけて0.6 0.2 0.2として とどまる確率0.6 上の次の状態に移動する確率0.2 下のつながった状態に移動 する確率が0.2となります。 下も同様に。
341 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 08:14:06 ] >>338 338 の問題について全順列を使うのは相当無駄な気がするが、 全順列を求めて先頭の k 個を選んだものと考えればいい。
342 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:15:02 ] >>329 自分でやってみてもなかなかできずに途方にくれていたところでした 本当にありがとうございます!
343 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:52:27 ] [1] 授業単元: プログラミング演習 [2] 問題文:画像で指定の範囲を切り出して出力するプログラムを作れ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: (C/C++/) [4] 期限: 14日まで お願いします
344 名前:デフォルトの名無しさん [2007/11/12(月) 10:56:20 ] 要素数5のint型配列datを用意し、適当に数値を入力する。 各要素の数値個「*」を表示するプログラムを作成しなさい 数値1入力==>3 数値2入力==>8 数値3入力==>5 数値4入力==>4 数値5入力==>2 3:*** 8:******** 5:***** 4:**** 2:**
345 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:10:04 ] #include <stdio.h> static void print(int dat) { printf("\n%d:", dat); for (int i = 0; i < dat; ++i) putchar('*'); } int main() { int dat[5]; printf("数値1入力==>"); scanf("%d", & dat[0]); printf("数値2入力==>"); scanf("%d", & dat[1]); printf("数値3入力==>"); scanf("%d", & dat[2]); printf("数値4入力==>"); scanf("%d", & dat[3]); printf("数値5入力==>"); scanf("%d", & dat[4]); print(dat[0]); print(dat[1]); print(dat[2]); print(dat[3]); print(dat[4]); return 0; }
346 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:30:08 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 平面上に多角形が二つ与えられたとき、 これらが共通部分を持つかどうかを判定せよ。 境界でのみ交わる場合は共通部分はないとする。 [3] 環境 [3.1] OS: 指定なし [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: どちらでも可 [4] 期限: 11月13日中 [5] その他の制限: 特になし
347 名前:346 mailto:sage [2007/11/12(月) 11:31:48 ] 補足:多角形は半時計回りの頂点のリストで与えられる。 よろしくおねがいします
348 名前:デフォルトの名無しさん [2007/11/12(月) 11:50:13 ] 297のプログラムわかるひといらっしゃいませんか? よろしくお願いします.
349 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:50:48 ] [2]の問題文がリンクだけだったら何をプログラムしていいか分からない。 だから簡単な説明を入れたほうがいいと思う。 例えば、 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/0000.txt 巡回セールスマン問題を解く とか、一行程度の説明が欲しい。 っていうのをテンプレに入れてはどうでしょう。
350 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:05:53 ] リンクだけだとなかなか見る気にならんからねえ。
351 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:24:42 ] >>297 >>348 要するに、通信経路の計算とかは全然関係なく、 下のようなテキストファイルの値を読み込め、という言う事なのか? source-node destination-node packet-loss-rate a b 0.3 a c 0.1 . . z w 0.9
352 名前:デフォルトの名無しさん [2007/11/12(月) 14:36:10 ] [1] 授業単元: プログラミング言語・配列 [2] 問題文(含コード&リンク): 文字の出現回数を数える 標準入力から入力された 'a' から 'z' までの文字の出現回数を数えるプログラムを作成せよ。 各文字の出現回数は、大きさ 26 の配列 kaisuu に格納するものとする。初期化を忘れずに! また、'a' から 'z' までの小文字の英字以外はカウントせず、無視するものとする。 以下のプログラムを参考にせよ。 char c; ... while ( (c=getchar()) != '\n' ){ /* リターンが押されるまで読み込む */ /* ここに 'a' から 'z' のどれが出現したかを数えるプログラムを */ /* 書くこと */ } /* どの文字が何個あったかを出力する */ ヒント 文字変数 c は、 c - 'a' を計算すれば、要素の番号になる。 例えば、 c に 'a' が入っていれば、 c - 'a' は、0 になる。 日本語が含まれない C 言語のプログラムのソースを読ませてみて、うまく動くか確かめてみること。 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: gcc [4] 期限: 11月19日 [5] その他の制限: 特になし 参照URL:www.wakhok.ac.jp/biblion/1995/CC/subsection3.18.4.html
353 名前:デフォルトの名無しさん [2007/11/12(月) 15:22:39 ] #include <stdio.h> /* おまじない */ #include <stdlib.h> /* おまじない */ #include NMAX 20 /* リストの構成要素となる構造体 node_tag */ struct node_tag { int num; /* 月を格納する整数 */ char name[NMAX]; /* 名前を格納する配列 */ ??????? /* 自己参照:次のデータへのポインタ next */ }; int main(void) { /* 12の要素をもつ構造体配列の定義 */ struct node_tag Month[12] = { {1, "January", NULL}, {2, "February", NULL}, {3, "March", NULL} }; struct node_tag *p; /* ポインタ p */ /* 各要素をつなぐ (以下の図を参考に)*/ ??????? p=&Month[0]; while (p!=NULL){ /* p を用いてリストの表示 */ printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */ p=??????? /* p を p の next とする */ } return 0; } ----------------------------------------------------------------- 忙しいところすみませんが、どうかよろしくお願いします。 今回書き込みは、初めてなので、至らない点がありましたら、よろしくお願いします。
354 名前:デフォルトの名無しさん [2007/11/12(月) 15:23:56 ] ↑ 課題 A: 「 月(整数) と 月名(文字) と 次の要素を指すポインタ 」を要素に持つ自己参照構造体を定義する. この構造体を利用して線形リストを作成し,月と月名を表示させるプログラムを完成せよ. * 以下のプログラムの各行にコメントを付加すること. * 以下のプログラムのコメントを参考にすること.
355 名前:デフォルトの名無しさん [2007/11/12(月) 15:26:51 ] #include <stdio.h> /* おまじない */ #include <stdlib.h> /* おまじない */ #define MAX 20 #define MMAX 100 /* リストの構成要素となるセルの構造体 node_tag */ struct node_tag { int num; /* 配列の番号を格納する整数 */ char name[NMAX]; /* 名前を格納する配列 */ ??????? /* 自己参照:次のデータへのポインタ */ }; int main(void) { struct node_tag Meibo[MMAX]; /* 構造体配列の定義 */ int n=0; /* 配列の番号を格納する整数 n,初期値は 0 */ struct node_tag *head, *p; /* リストの先頭を指すポインタ head,新しく追加するノードを指すポインタ p */ head=NULL; while ( scanf("%s", ???????) != EOF ){ Meibo[n].next=???????; /* 新しく追加するノード(Meibo[n]) の next が指すものは? */ head=???????; /* 先頭データ(head)は どこを指すか? */ ???????=n++; /* Meibo[n] の num に配列番号を格納する整数を入れる */ } p=head; while (p!=NULL){ /* リストの表示 */ printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */ p=???????; /* p を p の next とする */ } return 0; } 2門続けてすみません。行き詰まってます。よろしくお願いします。
356 名前:デフォルトの名無しさん [2007/11/12(月) 15:27:58 ] ↑ 課題 B: 「 標準入力 (キーボード) から入力されたアルファベットの文字列 と 配列の番号 」を要素に持つ自己参照構造体を定義する. この構造体を利用して線形リストを作成し,アルファベットの文字列と配列の番号を表示させるプログラムを完成せよ. 以下のプログラムのコメントに従ってプログラムを完成させること.適宜コメントを追加すること. 付け加えです。よろしくおねがいします。
357 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 15:31:58 ] >>353->>356 >>1 にテンプレがあります。 それに沿って書き込むと、回答が多くなります。
358 名前:デフォルトの名無しさん [2007/11/12(月) 15:40:25 ] ありがとうございます。
359 名前:デフォルトの名無しさん [2007/11/12(月) 15:45:54 ] >>353->>356 の者です。 [1] 授業単元:プログラミング言語2 [2] 問題文(含コード&リンク):先ほどの二つです [3] L [3.1] OS: (/Linux/) [3.2] コンパイラ名とバージョン: (gcc ) [3.3] 言語: (Cです) [4] 期限: ([2007年11月15日17:00まで] ) [5] その他の制限: リスト構造ぐらいまで いろいろ御迷惑かけましてすみませんでした よろしくお願いします。
360 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:15:02 ] >>353-356 微妙な問題だなあ…… 配列とリスト併用して、それで順不同ならまだしもnextが指すのはすぐ次の要素だし…… リストの演習やるなら、もっとリストの利点が分かる物にしたらよかろうに こんなんじゃ、ちょっとできるやつから「何でわざわざリストを使うんですか?」なんて質問されるぞ
361 名前:デフォルトの名無しさん [2007/11/12(月) 16:21:31 ] 課題の雛型なので、変えることが出来ないので。 申し訳ありません。
362 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:31:17 ] J科生乙
363 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:32:55 ] >#include <stdio.h> /* おまじない */ こんなことを書いて恥ずかしくないんかね。
364 名前:デフォルトの名無しさん [2007/11/12(月) 16:37:20 ] >>363 それ書いたの担当の女だよ。 しょうがないんだよ餓えてるから少しでも男連中にアピールしてるんでしょ かわいさアピール?
365 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:40:34 ] 時にはややこしいことを隠して教えることも大事。うふ。
366 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:48:48 ] コメントにほぼ答えが書いてある穴埋め問題が解けないって奴はなんなんだろうな。
367 名前:デフォルトの名無しさん [2007/11/12(月) 16:49:21 ] [1] 授業単元: 基礎プログラミング [2] 問題文(含コード&リンク): いま、要素数N(N≧1)のint型の配列a[]があり、適当な値がセットされている。以下の要求を満たすfor文を書け。 要素数NはマクロNとして定義されているものとする。要素数NはマクロNとして定義されているものとする。 ●直前・直後の配列要素が存在し、それら2つの値の平均よりも大きな値を持つ要素をすべて印字する。 ●配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が等しいとき、 それらの要素の添え字のうち小さな方を印字する。ただしおなじ添え字は1度しか出力しないこと。 [3] 環境 [3.1] OS:VineLinux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C [4] 期限: 11月13日まで [5] その他の制限: 特になし
368 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:26:32 ] >>367 >配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素 これは先頭からi番目の要素と、先頭からN-i番目の要素を比較しろということだよな? あと、このような特殊な計算をどこに使うのか是非とも教えて欲しい
369 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:35:25 ] >>367 for(i=1; i<N-1; i++) if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n", i); for(i=0; i<N/2; i++) if(a[i]==a[N-1-i]) printf("%d\n", i);
370 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:54:23 ] >>367 先越された #include<stdio.h> void prArry(const int a[const], size_t sz) { size_t idx = 1; while( idx != sz - 2 ) { if( 2*a[idx] > a[idx-1] + a[idx+1] ) printf("%d\n",a[idx]); ++idx; } return; } void prHeqT(const int a[const], size_t sz) { size_t idx = 0; while( 2*idx <= sz ) { if( a[idx] == a[sz-1-idx] ) printf("%d\n",idx); ++idx; } return; } int main(void) { const int a[] = {1,2,4,1,55,32,1,4,7,6}; prArry(&a[0],sizeof(a)/sizeof(int)); prHeqT(&a[0],sizeof(a)/sizeof(int)); return 0; }
371 名前:367 [2007/11/12(月) 18:07:48 ] >>368 そうです、誤字すいません。 トレーニング用だと思われます。。。 まだCを始めたばかりで難しくて・・・ アドバイスいただければ幸いです。 >>369 #include <stdio.h> #define N 10 int main(void) { int a[N]; char buf[80]; int i; for(i=1;i<N-1;i++) { fgets(buf,80,stdin); sscanf(buf,"%d",&a[i]); } if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); } とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。 どんな数字を入れても9になってしまいます・・・ >>370 ごめんなさい、基礎プログラミングなので、そこまで高度な技術は分かりません^^;
372 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:09:21 ] どこら辺が高度?修正するけど。
373 名前:367 [2007/11/12(月) 18:18:16 ] わざわざすいません、テンプレに書くべきだったのですが、 自分はまだ制御構造のwhile文までくらいのコマンドくらいしか分からないので・・・ お勧めの入門書などがあれば教えてもらいたいです。
374 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:20:59 ] 独習C
375 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:27:46 ] >とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。 >どんな数字を入れても9になってしまいます・・・ if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); だとそりゃ9がでる。 for( i = 0; i != N; ++i ) { if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); }
376 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:31:49 ] >>371 #include<stdio.h> #include<stdlib.h> #define N 10 int main(void) { int a[N]; int i; for( i = 0; i != N; ++i) { scanf("%d",&a[i]); } printf("--------------------------\n"); for( i=0; i != N; ++i ) { if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); } }
377 名前:デフォルトの名無しさん [2007/11/12(月) 18:35:29 ] 何度も同じ質問すみません [1] 授業単元:アルゴリズム [2] 問題文:巡回セールスマン問題を解く(厳密解)プログラムを作成しなさい。 (解=最小値とその最小値を出す通路) 巡回セールスマン問題のデータファイルは次のデータ形式とする。1行目に頂点数、2行目以下に距離行列。例えば、次のようなもの。 5 0 3 2 99 4 3 0 99 12 99 2 99 0 5 6 99 12 5 0 16 4 99 6 16 0 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc [3.3] 言語: Cのみ [4] 期限: 15日 [5] その他の制限: 全列挙を利用して 本当に列挙だけで最小値だけを出すということができません
378 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:42:41 ] [1] アルゴリズムとデータ構造 [2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5252.txt [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 21日まで 問題の解きがいがないかもしれませんが よろしくお願いします。
379 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:48:00 ] for (i=0; i<kosu; i++) printf("%s\n", data[i]; のところで printf("%s\n", data[i] ) ; カッコが抜けてる
380 名前:デフォルトの名無しさん [2007/11/12(月) 18:54:28 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ・ニュートン法と二分法の両方を用いて、直線 y = x + 1/2 と単位円 x^2 + y^2 = 1 の交点の座標の近似解(小数点以下第6位まで)を求めよ。 ・一つのプログラムに書くこと ・二分法を用いる初期値は、 [a,b] = [-1,1] とせよ。 ・ニュートン法で用いる初期値は、2つとも0とせよ。その際、1つの関数は収束しない。収束しない場合は、求められないとわかった時点でやめるように工夫せよ。 ・ニュートン法も二分法もともに何回で収束したかがわかるようにしておくこと。 [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン:gcc(バージョン不明です) [3.3] 言語:C++ [4] 期限: [2007年11月21日まで(22日提出です)] [5] その他の制限: ・見てわかりやすいように説明文なども各自付加しろ、と指示がありました。 ・デスクトップ環境: GNOME 2.4.2 よろしくお願いします。
381 名前:367 [2007/11/12(月) 18:58:25 ] >>374 ,375,376 ありがとうございます!
382 名前: ◆wFVK8h9bmM mailto:sage [2007/11/12(月) 19:09:28 ] ものすごく遅くなってしまいましたが、>>289 ありがとうございました。 考えて下さった、279、280、281、284のみなさんもありがとうございました。 ちなみに>>284 の質問の答えが返ってきましてV=V0/E=1.000が正しいらしいです。
383 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:23:58 ] >>377 巡回セールスマン問題については、 最適解(厳密解)を求めるアルゴリズム自体が、2007年現在、未だに確立されていません。 近似解を用いるのが一般的です。 最適解(厳密解)を求めるアルゴリズムを考え出すのはほとんど無理です。
384 名前:378 mailto:sage [2007/11/12(月) 19:27:58 ] >>379 ありがとうございます。 問2に関しても自己解決できました。
385 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:29:25 ] >>383 ・・・へぇ
386 名前: ◆a3LMU3qR26 [2007/11/12(月) 19:29:33 ] 頂点数が5個程度なら全列挙で解が得られるのではないでしょうか?
387 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:30:27 ] すいません 377です
388 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:40:48 ] ファイルから読み込むプログラムで #include<stdio.h> #define MAXN (100) #define YES (1) #define NO (0) int n, a[MAXN], used[MAXN]; int adj[MAXN][MAXN]; void perm(int d); void minimum(int s); int main(int argc, char **argv){ int i, j; FILE *fp; if (argc != 2) { printf("Usage: %s <filename>\n", argv[0]); exit(1); } fp = fopen(argv[1],"r"); if (fp == NULL) { printf("File not found.\n"); exit(1); } fscanf(fp, "%d", &n); if ((n > MAXN) || (n < 0)) { printf("Out of range: n.\n"); exit(1); } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { fscanf(fp, "%d", &adj[i][j]); } } fclose(fp);
389 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:43:37 ] printf("%d\n",n); for(i = 0; i < n; i++){ for(j = 0; j < n; j++){ printf("%d ",adj[i][j]); } printf("\n"); } printf("\n"); for(i = 0; i < n; i++) used[i]=NO; perm(0); return(0); } void perm(int d) { int i,j; int s = 0; if(d == n){ for(j = 0; j < n-2; j++) s+=adj[a[j]][a[j+1]]; s+=adj[a[0]][a[n-1]]; printf("%d\n",s); } else{ for (i = 0; i < n; i++) { if (used[i] == NO) { a[d] = i; used[i] = YES; perm(d + 1); used[i] = NO; } } } }
390 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:45:39 ] スレ汚しスマソ ここまではできてるんですけどこれだけだと和の列挙にしかなりません ここから最小値を取り出して出力させるには何を付け加えたらいいのか教えてください
391 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:16:37 ] >>390 TSPのアルゴリズムそのものを付け足せばいい
392 名前:334 [2007/11/12(月) 20:44:16 ] >>391 ググってみたけどもわからないんですけど 具体的にどういう風にすればいいのですか?
393 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 20:45:08 ] すみません >>334 =>>337 です
394 名前:デフォルトの名無しさん [2007/11/12(月) 21:00:16 ] 授業名:アルゴリズム 問題: 次の問題の題意を日本語で説明し問題の解答を与えるプログラムを作成せよ。 For what value of integer N is 10NlgN>2N^2? 環境:C言語でコンパイラはgcc 期限:来週の月曜まで よろしくおねがいします。
395 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:01:09 ] >>394 せめて日本語で説明する部分くらいやってもいいのでは?
396 名前:デフォルトの名無しさん [2007/11/12(月) 21:13:26 ] >>395 自分の日本語訳は 整数Nはなんのために10NlgN>2N^2ですか? みたいな感じなんですけどあってるんでしょうか・・・ 初めての英語問題で面食らってます
397 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:25:29 ] >>377 ほらよ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5253.c >>383 馬鹿か?
398 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:32:48 ] >>396 どんな値の範囲で10NlgN>2N^2が成り立ちますか? じゃないかFor = 範囲
399 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:39:57 ] 10NlogN - 2N*N = 0を満たすNをもとめりゃいい。
400 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:42:41 ] ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆【一番クリックした国が優勝】参加者求ム!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ イギリス人天才プログラマが運営する前代未聞の無料ブラウザゲーム、clickclickclick.com/ ただひたすらクリックし、国別の総クリック数を世界中で競い合う! 究極にバカバカしくそして意味がなく、ひたすら時間の無駄でなんの得にもならない、だがそれが(・∀・)イイ! ライバルはハンガリー、そして台湾!! GAME2から参戦し、現在GAME27開催中! VIPで発祥し現在2ch全土から結集したクリック兵達で日本チームは戦っている! 意味のない事に全力を傾ける、それが2ちゃんねるクオリティ!! 独自のクリックツール開発競争も熱く、各国のプログラマが全力で優秀な兵器開発をしている!! 日本の技術力の高さを世界に見せつけてやろうぜ! プログラマ、Flashゲーム製作者、動画職人、AA職人、絵師、DJ、wiki編集blog編集者、データ分析者etcも募集中! ツール放置参加もできるので、PCのスペックに自身のある奴、CPUに空きのある奴、時間が余ってる奴もぜひ参加してくれ! 本スレッド 【簡単多重】一番クリックした国が優勝【8砲門】 wwwww.2ch.net/test/read.cgi/news4vip/1194741194/l50 ※落ちているときはここから1発検索 www.clickjapan.jp/find2ch.php 日本チームの有志によるまとめサイトポータル www.clickjapan.jp/ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
401 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:22:09 ] >>394 #include<stdio.h> #include<math.h> typedef double (*SingleFun)( double ); double newton(SingleFun fun,SingleFun fprime, double x) { double fx; double fp; double xprev; do { fx = fun(x); fp = fprime(x); if(fp == 0) fp = 1; xprev = x; x -= fx / fp; } while( x != xprev ); return x; } double fN(double N) { return 10.0 * N * log( N ) - 2*N*N; } double dfdN(double N) { return 10.0 * log( N ) - 4.0 * N + 10.0; } int main(void) { double res = newton( fN, dfdN, 1.0 ); printf("result = %1lf\n",res ); printf("10Nlog(N) > 2N^2 is true for N > %lf\n",res); return 0; }
402 名前:デフォルトの名無しさん [2007/11/12(月) 22:25:38 ] >>398-399 ありがとうございます。やっと理解できました >>401 ありがとうございます。
403 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:27:58 ] >>402 結果を実数で返してしまった。整数に直してくれ。 だから答えとしてはN > 1だな。
404 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:36:44 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ライブラリ関数atofと同じ動作を行う関数 double strtof(const char *nptr) {/*・・・*/} を作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] gcc3.4 [3.3] C言語 [4] 11/15まで お願いします
405 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:43:07 ] #include<stdio.h> #include<stdlib.h> double strtof_ (const char *nptr) { return strtod_ (nptr, (char **) NULL); }
406 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:44:11 ] 間違えた。 ていうか衝突するからstrtofって名前使わないほうがいいと思う。 #include<stdio.h> #include<stdlib.h> double strtof_ (const char *nptr) { return strtod (nptr, (char **) NULL); }
407 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:52:40 ] >>406 すいません、条件を書き忘れました 申し訳ありません 標準ライブラリ関数を使わないでお願いします
408 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:52:52 ] >>404 double strtof(const char *nptr) { double ret = 0, div = 10, f = 1; if(*nptr=='-') { f = -1; nptr++; } else if(*nptr=='+') nptr++; while('0' <= *nptr && *nptr <= '9') ret = ret * 10 + *nptr++ - '0'; if(*nptr++!='.') return f * ret; while('0' <= *nptr && *nptr <= '9') { ret += (*nptr++ - '0') / div; div *= 10; } return ret * f; }
409 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:35:54 ] double strtof(const char *nptr) { const char *p; int s, n, d; s = 1; n = 0; d = 0; for (p = nptr; *p != '\0'; p++) if (*p == '+' || *p == '-') { if (p != nptr) break; if (*p == '-') s = -1; } else if (*p == '.') d = 1; else if (*p >= '0' && *p <= '9') { n = n * 10 + *p - '0'; d = d * 10; } else break; if (d == 0) d = 1; return (double)s * (double)n / (double)d; }
410 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:44:32 ] >>408 >>409 つ[EBCDIC]
411 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:48:22 ] EBCDICは0〜9の並びについては保証されてるよ アルファベットがいけない
412 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:06:07 ] >>397 これ厳密解じゃないよ しかもnodeを30とかにすると解くのに時間かかりすぎ やり直してきたほうがいいのでは?
413 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:54:05 ] 再帰じゃそんなもんざます
414 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 08:19:37 ] >>409 いろいろとひどいな
415 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:14:07 ] [1] 授業単元: プログラム演習 [2] 問題文: ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5255.txt [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月13日24時まで [5] その他の制限: 特にありません お願いします。
416 名前:デフォルトの名無しさん [2007/11/13(火) 16:25:41 ] 学校からのカキコミです。 わからないので教えてください。 課題25 1からキーボードで入力した値までの合計を求めるプログラムを作りなさい >kadai25 いくつまで合計しますか> 10 /*10と入力 合計は55 ↑こうしたいのですが、よろしくお願いします。 ちなみにscanfとforを使うみたいです
417 名前:デフォルトの名無しさん [2007/11/13(火) 16:29:14 ] 351さん、そうです。 そのやり方がよくわからないのです。
418 名前:デフォルトの名無しさん [2007/11/13(火) 16:44:09 ] [1] 授業単元: 情報処理 [2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞 は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新 聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C/C++ [4] 期限: 11月18日 [5] その他の制限:なし よろしくお願いします。
419 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:44:33 ] >>415 勝手にテンプレ省略すんなハゲ
420 名前:こまった [2007/11/13(火) 17:08:34 ] 初歩の初歩の質問で本当にごめんなさい。 まったくわからなくって本当にこまってます。 問題:四則演算する電卓を作りなさい。また、あまりも出しなさい。 例:%a.out 5+8 5+8=13 式を入れれば自動計算するようにしたいのですが///さっぱりわからないのです。 すみません。
421 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:13:54 ] お前の質問も全くわからん
422 名前:こまった [2007/11/13(火) 17:22:26 ] 式を打ち込めば四則演算をしてくれて、かつ、あまりがあれば、それも表示してくれるプログラミング なんですけど(;△;) どうしたらよいのでしょう。
423 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:56:16 ] >>422 とりあえずがんばってみたら? だめなら、ダメなりに、どこがどういうことで行き詰ったかかかなあかんよ
424 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:02:44 ] mapのデータ部分にクラスを利用する?ことができるらしいんですがイマイチどうすればいいか わかりません・・・
425 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:05:28 ] >>424 普通の型と同じでおk
426 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:09:39 ] >>425 例えばDATAっていうクラスがあったとしたら map<key,DATA>でいいってことですか?
427 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:40:02 ] [1] 基礎プログラミング [2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を 求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか ったときは「なし」と印字せよ。 なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、 奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。 [3.1]Linux [3.3]C言語 [4]できれば今日中 [5] 配列
428 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:45:57 ] 【質問テンプレ】 [1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5256.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11月20日 [5] その他の制限:if文、if-else文、switch文まで習いました
429 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:00:14 ] >>426 その通り ついでにスレ違い
430 名前:デフォルトの名無しさん [2007/11/13(火) 21:33:40 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 第1項・第2項の値を1とし、 直前の2つの項の和を項の値とする数列を「フィボナッチ数列」と言う。 この数列のi番目の項を計算する関数は、 以下のように再帰的に記述することができる。 f(i) = f(i-1) + f(i-2) (i > 1のとき) f(i) = 1 (i = 1のとき) f(i) = 0 (i = 0のとき) キーボードから数字を入力して変数aに格納し、 フィボナッチ数列・第a項の値を計算するプログラムを作成せよ。 項の計算は上の定義を使い、 再帰的な呼び出しを実行する関数 int F(int n) を作成して呼び出すこと。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
431 名前:デフォルトの名無しさん [2007/11/13(火) 21:35:17 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): キーボードから入力した数値(10進数)を 2進数に変換して画面に出力するコードを作成しなさい。 また,キーボードから入力した2進数の数値を 10進数に変換して画面に出力するコードを作成しなさい。 また、必要に応じて再帰を使っても使わなくてもよい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
432 名前:380 mailto:sage [2007/11/13(火) 21:35:40 ] >>380 です。単位かかってるレポなんでどなたかお願いします。
433 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:35:40 ] >>428 if(a==0) { if(b==0) { if(c==0) printf("It is trivial!\n"); else printf("Boo-boo!\n"); } else { x1 = -c / b; printf("x=%.2f\n", x1); } } else { D = b * b - 4 * a * c; if(D >0) { x1 = (-b+sqrt(D)) / (2 * a); x2 = (-b-sqrt(D)) / (2 * a); printf("x=%.2f,%.2f\n", x1, x2); } else if(D==0) { x1 = -b / (2 * a); printf("x=%.2f\n", x1); } else printf("There exist no real-valued solutions.\n"); } return 0; }
434 名前:デフォルトの名無しさん [2007/11/13(火) 21:36:01 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): ハノイの塔を解くプログラムを作成する。 キーボードから円盤の枚数を入力し、 円盤を移動する手順を画面に表示すること。 ・円盤は小さい物から順に1から番号で示す ・柱はL・C・Rで示し、円盤全体をLからRへ移すとする ・可能ならば手順の回数も表示すること 【実行結果(枚数を3と入力した場合)】 円盤枚数を入力 3 円盤1をL→Rへ移す 円盤2をL→Cへ移す 円盤1をR→Cへ移す 円盤3をL→Rへ移す 円盤1をC→Lへ移す 円盤2をC→Rへ移す 円盤1をL→Rへ移す (終了) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
435 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:42:19 ] >>433 ありがとうございました。
436 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:49:56 ] >>434 Hanoiだし再帰使っていいよね? #include<stdio.h> void hanoi(int L,int C,int R,int n){ if(n==0)return; hanoi(L,R,C,n-1); printf("円盤%dを%c→%cへ移す\n",n,L,R); hanoi(C,L,R,n-1); } main(){ int n; printf("円盤枚数を入力"); scanf("%d",&n); hanoi('L','C','R',n); printf("手順の回数 %d\n",~(~0<<n)); }
437 名前:shin [2007/11/13(火) 21:54:59 ] [1]授業単元: 関数入門 [2]問題文: 100点満点の試験を入力して、5段階評価を返す関数 hyouka を作成せよ。 5段階評価は、100〜90までは5、89〜80は4、79〜70は3、69〜60は2、60未満は1とする。 この関数を利用して、学生10人の試験の点数を入力して、 それぞれの5段階評価を求め一覧表を表示するプログラム quality.cpp を作成せよ。 [3]環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4]期限: 2007年11月14日 17:00 まで [5]その他の制限: 関数の作り方、使い方が分からないので、そこを教えていただけるだけでも結構です(´`;) よろしくおねがいします!
438 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:46 ] ウィルスつくってください anonm4@yahoo.co.jp
439 名前:デフォルトの名無しさん [2007/11/13(火) 22:18:09 ] [1] 授業単元:プログラミング、関数基礎 [2] 問題文(含コード&リンク): メイン関数において、2つの放物線 y=ax2+bx+c y=px2+qx+r の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。 関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場 合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が 有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数 から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個 存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 2007年11月19日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) C言語の基礎しか習っていません。 どなたかよろしくお願いします。
440 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:23:38 ] >>430 #include <stdio.h> int F(int n) { if(n==0) return 0; else if(n==1) return 1; else return F(n-1) + F(n-2); } main() { int a,x; printf("数字を入力:"); scanf("%d",&a); x = F(a); printf("フィボナッチ数列第%d項 = %d\n",a,x); return; }
441 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:35:55 ] >>440 それだと末尾最適化されないはず こっちで #include<stdio.h> #include<stdlib.h> typedef unsigned int uint; uint iter(uint a, uint b, uint n) { return n == 0 ? 1 : n == 1 ? a : iter(a+b,a,n-1); } uint fibonacci(uint n) { return iter(1,1,n); } int main(void) { size_t idx = 0; for( ; idx != 10; ++idx) printf("%d: %d\n",idx,fibonacci(idx)); return EXIT_SUCCESS; }
442 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:37:18 ] すまん。大元の問題読んでなかった。 >>440 でいいね。
443 名前:46 mailto:sage [2007/11/13(火) 22:46:48 ] どなたか>>46 をお願いします
444 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:53:23 ] >>443 使っているライブラリは何?よくわからないけど興味あるから勉強してみたい。 で、もしできたら答える。
445 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:59:41 ] >>444 意味わからん。
446 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:10:15 ] >>444 とりあえずforkをぐぐるところから始めるといいと思うよ
447 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:16:14 ] >>443 , >>444 そんなおまいらに、 ttp://www.ipa.go.jp/security/awareness/vendor/programming/b07_04_main.html
448 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:28:57 ] 当方の環境は、WindowsXP / 処理系は gcc 3.4.4 です。 プログラムを起動すると、名前と点数を聞いてきます。 10人分入力すると、名前と評価(level)を表示します。 入力した名前が 1024 文字以上だと、バグります。ごめんなさい。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5257.txt
449 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:30:46 ] >>448 → >>437
450 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:32:18 ] >>448 何も考えずに string を勧める
451 名前:shin [2007/11/13(火) 23:47:58 ] >>448 ありがとうございます!!!
452 名前:shin [2007/11/13(火) 23:54:22 ] >>437 です 自力でやったのですが、 エラーを消すためにいろいろとしていたらよくわからなくなりました.. 誰かなおしてください… お願いします!
453 名前:shin [2007/11/13(火) 23:59:48 ] #include <iostream.h> #include <iomanip.h> int hyouka( int ) ; // 5段階評価する関数 main() { const int x = 10 ; // 入力できる人数 int a[x] ; // テストの点数 int b[x] ; // 1〜5の成績 int i, result ; for( i=0 ; i<x ; i++){ cout << i+1 << "人目の成績 >>> " ; cin >> a[i] ; result = hyouka( a[x] ) ; } return 0 ; }
454 名前:shin [2007/11/14(水) 00:00:28 ] // 関数hyouka int x ; int hyouka(int a[x]) { int x ; int b[x] ; //1〜5の成績 if(90<=a[i]){ b = 5 ; }else if (80<=a[i]){ b = 4 ; }else if (70<=a[i]){ b = 3 ; }else if (60<=a[i]){ b = 2 ; }else{ b = 1 ; } }
455 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:21:12 ] 面白い
456 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:21:42 ] エラー直して欲しいだけならエラーメッセージ見たら大体分かるだろ。
457 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:30:00 ] >>437 (>>452 ) #include <iostream> #include <iomanip> int hyouka( int ) ; // 5段階評価する関数 int main(void) { const int x = 10 ; // 入力できる人数 int a[x] ; // テストの点数 int b[x] ; // 1〜5の成績 int i ; for( i=0 ; i<x ; i++){ std::cout << i+1 << "人目の成績 >>> " ; std::cin >> a[i] ; b[i] = hyouka( a[i] ) ; } std::cout << "番号:点数:評価" << std::endl; for( i=0 ; i<x ; i++) std::cout << std::setw(4) << i + 1 << ':' << std::setw(4) << a[i] << ':' << std::setw(4) << b[i] << std::endl; return 0 ; }
458 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:31:25 ] 承前 int hyouka(int a) { if(90<=a){ return 5 ; }else if (80<=a){ return 4 ; }else if (70<=a){ return 3 ; }else if (60<=a){ return 2 ; } return 1 ; }
459 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:42:21 ] >>458 横からスマンがこういうほうが個人的に好き int hyouka(int a) { return 90 <= a ? 5 : 80 <= a ? 4 : 70 <= a ? 3 : 60 <= a ? 2 : 1; }
460 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:56:02 ] >>439 当方の環境は、WindowsXP / 処理系は cygwin(gcc 3.4.4) です。 表示は小数点3桁まで、重根の判定は幾分甘くしています。 係数が整数ならば、問題ないと思います。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5258.txt
461 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:59:46 ] 【質問テンプレ】 [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5255.txt [3] 環境 [3.1] OS: LINUX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C言語 [4] 期限: ([2007年11月14日24:00まで) [5] その他の制限: 書き直しました
462 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:05:27 ] >>461 自分のレス流れたから書いてるだけじゃねーかタコが 書き直すんならもっと早くやっとけよ低脳
463 名前:aho mailto:sage [2007/11/14(水) 01:06:43 ] >>461 作るの面倒だから、アルゴリズムを・・・ "s"が並ぶことはないから単純に"b"かどうかを判定すればよい。 従って、 for(省略) if(!strcmp(sdata[i].word[j], "b")) sdata[i].num++; end of for これじゃあかんのかな?
464 名前:458 mailto:sage [2007/11/14(水) 01:18:30 ] >>459 458 のは、ちょっとずぼら過ぎたね int hyouka(int a) { if (90<=a) return 5 ; if (80<=a) return 4 ; if (70<=a) return 3 ; if (60<=a) return 2 ; return 1 ; } に訂正
465 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:27:22 ] >>461 #include<stdio.h> struct tfield{ char word[5]; int num; }; int width_get(int value){ char tmp[16]; return sprintf(tmp, "%d", value); } int main(void){ struct tfield sdata[20]; const char *initial_data="bsbsbbsbsbsbsbbsbbsb"; int i, prev='b', count; for(i=0,count=0;i<20;i++){ if(prev=='b') count++; sprintf(sdata[i].word, "%*c", width_get(count), initial_data[i]); sdata[i].num=count; prev=initial_data[i]; } for(i=0;i<20;i++) printf("%s", sdata[i].word); printf("\n"); for(i=0;i<20;i++) printf("%d", sdata[i].num); printf("\n"); return 0; }
466 名前:461 mailto:sage [2007/11/14(水) 01:47:05 ] >>463 >>465 ありがとうございました。
467 名前:デフォルトの名無しさん [2007/11/14(水) 02:09:09 ] 【質問テンプレ】 [1] 授業単元: [2] 数独を解くプログラムを作れ(なるべく詳しく説明もいれて) [3] 環境 [3.1] 特に指定なし [3.2] 特に指定なし [3.3] 言語:C [4] 期限: 11月17日 [5] 特に制限はなく 単にCを使って数独をとくプログラムをかけばよいらしいのですが 難易度があがってもなるべく解けるように・・・といわれました。 どうしてもうまくいきません。 よろしくお願いします
468 名前:デフォルトの名無しさん [2007/11/14(水) 02:48:15 ] 各ブロックに、ある数字が入る可能性が1マスしかない場合 各ブロックに、ある2個の数字が入る可能性が2マスしかない場合 →それらのマスには他の数字は入らない、他のマスにはその数字は入らない 各行ごとに、ある数字が入る可能性が1つのブロックにしか残っていない場合 →そのブロックの他の行にはその数字は入らない
469 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 03:45:09 ] 数独程度だと、なまじアルゴリズムを凝るよりも安直に作った方がいい。 何故ならば、どんなに安直に作っても1秒と掛からずに解けてしまうから。 つまり、凝ったアルゴリズムを考える手間やデバッグの暇に何千問も処理できるってこった。
470 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 05:51:45 ] [1] 基礎プログラミング [2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を 求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか ったときは「なし」と印字せよ。 なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、 奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。 [3.1]Linux [3.3]C言語 [4]11月14日朝10時 [5] 配列 おねがいします
471 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 07:12:34 ] >>467 数独のソースはネットで探せば確実にあります まずは探しましょう
472 名前:cvop [2007/11/14(水) 07:41:40 ] プログラミング初心者ですが、 画像処理のプログラミングで、PGM画像中にある、 それぞれのオプティカルフローの角度[度]と大きさ[pixel]の 頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を 検出し、グラフにしたい(ヒストグラムみたいに)のですが、 どのようなプログラムを作れば良いのでしょうか? 分かる方がいらっしゃれば教えて頂けないでしょうか。 言語はC言語です。
473 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 07:58:56 ] スレ違い
474 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 09:16:19 ] [1] 授業単元:データ構造 [2] 問題文(含コード&リンク):edu.net.c.dendai.ac.jp/ad/1/2007/kadai.html [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:mingw-jp.bat [3.3] 言語:C++ [4] 期限:2007年12月5日20:00まで [5] その他の制限:Windows の API は使用しない,基本的な文法はわかります(For文等) 丸投げですがよろしくお願いします。
475 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:06:42 ] >>474 「なお、写したと思われるほど酷似したレポートが複数提出された場合、 原著がどれかの調査を行わず、抽選で一通のレポートのみを評価の対象とし」 こ れ は お も し ろ い
476 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:28:45 ] >>474 レポートも書けってこと?Wordでいいのか?
477 名前:デフォルトの名無しさん [2007/11/14(水) 10:46:21 ] [1] 授業単元: 情報処理 [2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞 は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新 聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C/C++ [4] 期限: 11月18日 [5] その他の制限:なし よろしくお願いします。
478 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 11:52:10 ] >>429 ありがとうございました スレ違いすみませんでした・・・
479 名前:デフォルトの名無しさん [2007/11/14(水) 13:10:41 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 整数型変数nの値を1から25まで1ずつ変化させて、nの2乗、1/n nの平方根、およびnの立方根を求めて、以下のような数表を作成する プログラムを完成せよ。 n n*n 1/n sqrt(n) n∧(3/1) 1 1 1.00000 1.00000 1.00000 2 2 0.50000 1.41421 1.25992 == == ======= ======= ======= 25 625 0.04000 5.00000 2.92402 (課題分では===のところはくっついていて、 2乗、1/nなどのところはくっついてしまっていますが それぞれ離れています。やりかたがわかりませんでした。 大変見にくくてすみません) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: C++ [4] 期限: 2007年11月14日(15日提出) [5] その他の制限: 習い始めたばかりなのでよくわかりませんが ないと思います。 宜しくお願いします。
480 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:10:48 ] >>475 ひねくれた教授なのでw >>476 プログラムだけで大丈夫です。 なるべく初歩的な文法でお願いしたいのですが…
481 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:06:17 ] >>480 教授にメールしとくわ
482 名前:デフォルトの名無しさん [2007/11/14(水) 14:31:30 ] >>467 数独はアルゴリズムは簡単で良いけど、ハッシュ表は導入した方が良いよ ちょっとやってみた #include <iostream> using namespace std; main(){ int z,w,l=0,n,i,j,bf[8][81]; int tmp[4][3]={0,1,9, 0,9,1, 8,-1,9, 8,9,-1}; for(n=0;n<4;n++){ for(i=0;i<9;i++)for(j=0;j<9;j++){ z=tmp[n][0]+tmp[n][1]*i+tmp[n][2]*j; bf[l][z]=bf[l+1][80-z]=i+9*j;}l+=2;} int x[81],p[81],q[81];for(z=0;z<81;z++)x[z]=rand()%10; for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<x[z]<<" ";} cout<<endl<<"のハッシュ値を求める。"<<endl; int num[10]; for(i=0;i<81;i++)p[i]=9; for(l=0;l<8;l++){ for(i=0;i<10;i++)num[i]=0;i=1; for(z=0;z<81;z++){ n=x[ bf[l][z] ]; if(n>0)if(num[n]==0){num[n]=i;i++;} q[z]=num[n];} for(i=0;i<81;i++)if(p[i]<q[i])goto end; else if(p[i]>q[i])break; if(i<81)for(i=0;i<81;i++)p[i]=q[i];end:} unsigned int rh[81][9],hash=0; for(z=0;z<81;z++)for(i=0;i<9;i++)rh[z][i]=(rand()<<16)+rand(); for(z=0;z<81;z++)hash^=rh[z][p[z]]; for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<p[z]<<" ";} cout<<"\nと変形され\nハッシュ値は"<<hash<<endl;}
483 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:35:23 ] www10.atwiki.jp/prospi3/pages/1.html www.nurs.or.jp/~ukkari/pro-spi/index.php?%A5%BB%A1%A6%A5%EA%A1%BC%A5%B0#content_1_15 www.nurs.or.jp/~ukkari/pro-spi/index.php?%A5%BB%A1%A6%A5%EA%A1%BC%A5%B0#content_1_15 www29.atwiki.jp/purosupi4/ www.geocities.jp/agepan1230/
484 名前:デフォルトの名無しさん [2007/11/14(水) 14:37:14 ] ハッシュ表があれば調べる局面が、1/8以下に出来るよ すぐ解答が出る場面では逆に鈍くなると思うけど、0.5秒以上かかるならハッシュ表使ったら速いと思うよ
485 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:52:57 ] >>481 教授公認だから問題無しw
486 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:58:32 ] >>485 「ひねくれた教授」が公認なの?
487 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:09:02 ] 474「宿題を2chに丸投げしておk?」 教授「おk。公認するよん」 こんな感じか
488 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:11:47 ] 底辺大学の教授ってそんなもんなのか
489 名前:デフォルトの名無しさん [2007/11/14(水) 15:24:06 ] [1] 授業単元:情報技術 [2] 問題文: 「キーボードから以下の整数値を入力し,最大値を表示するプログラムを作成せよ キーボードから入力する値 25 , 6 , 45, 18 , 57, 5 ヒント for文を用いてキーボードから数値を読み込みながら, if文を使って読み込んだ数値がそれまでに読み込んだ 数値の最大値maxよりも大きければその値を更新する ・・・・・・ for(i=?;i<=?;??){ scanf(?????); if( ? > max) ???????; } printf(?????); ・・・・・・」 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:すみません、よく分かりません [3.3] 言語:C [4] 期限:2007年11月16日12:00 [5] その他の制限:if文、for文あたりの簡単なレベルでお願いします 大学の授業の課題です。 低レベルかもしれませんが、さっぱり分からないので、よろしくお願いします。
490 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:46:17 ] >>489 これが大学の授業か……
491 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:49:14 ] >>486 >>487 いや、教授自身が2ちゃんねらーw だからここに問題が漏れてる事も知ってる。というより本人が自分で回答とかしてるしw
492 名前: ◆30lFlSJfAI [2007/11/14(水) 15:54:27 ] [1] 授業単元: 情報基礎 [2] 問題文:下記の問題のプログラミングを作成してください。 関数y=1/xをシンプソン法により、区間[1,2] で積分せよ。 このとき、区切りの数を変えることによって精度が変化することを確認せよ。 ただし、解析的な解はloge2=0.69314718である [3] 環境 OS: Windows 言語: C言語のみ [4] 期限: ([2007年11月21日まで] [5] 制限は特にありません。 プログラミング初心者にもかかわらず大学でこのような課題を出されました。 来週までで申し訳ないのですが、よろしくお願いします。
493 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:54:42 ] _,,..r'''""~~`''ー-.、 ,,.r,:-‐'''"""~~`ヽ、:;:;:\ r"r ゝ、:;:ヽ r‐-、 ,...,, |;;;;| ,,.-‐-:、 ヾ;:;ゝ :i! i! |: : i! ヾ| r'"~~` :;: ::;",,-‐‐- `r'^! ! i!. | ;| l| ''"~~ 、 i' | i! ヽ | | | ,.:'" 、ヽ、 !,ノ ゝ `-! :| i! .:;: '~~ー~~'" ゙ヾ : : ::| r'"~`ヾ、 i! i! ,,-ェェI二エフフ : : :::ノ~|`T <イエーイ、坂本直志君見てるー? ,.ゝ、 r'""`ヽ、i! `:、 ー - '" :: : :/ ,/ !、 `ヽ、ー、 ヽ‐''"`ヾ、.....,,,,_,,,,.-‐'",..-'" | \ i:" ) | ~`'''ー---―''"~ ヽ `'" ノ
494 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:01:02 ] >>491 学籍番号は何番?
495 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:09:34 ] 教授職って何気に終身雇用なんだよね 同じ空気吸ってても一山いくらで売られていく子羊たちとの間には明らかな次元断層がある
496 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:12:35 ] 日本語でおk
497 名前:shin [2007/11/14(水) 16:15:56 ] >>457 >>458 >>459 ありがとうございました!!!
498 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:18:09 ] >>474 課題1-1 #include <stdio.h> #include <stdlib.h> #include <time.h> #define STUDENT_NUM_MAX 99999 int get_rand_score(void){ int i, score=0; for(i=0;i<20;i++) score+=rand()%6; return score; } int main(int argc, char *argv[]){ int i, index, student_num; if(argc!=2){ fprintf(stderr, "\nUsage : %s <number>\n", argv[0]); fprintf(stderr, "%5s : number (1-%d)\n", "", STUDENT_NUM_MAX); return 1; } if(sscanf(argv[1], "%d%n", &student_num, &index)<1 || argv[1][index]!='\0'){ fprintf(stderr, "\nERROR : Invalid parameter. %s\n", argv[1]); return 2; } if(student_num<1 || student_num>STUDENT_NUM_MAX){ fprintf(stderr, "\nERROR : Out of range (1-%d). %d\n", STUDENT_NUM_MAX, student_num); return 3; } srand(time(NULL)); for(i=1;i<=student_num;i++) printf("C%05d %d\n", i, get_rand_score()); return 0; }
499 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:49:44 ] >>492 シンプソン公式がわかってれば単純なforループの問題でしかないから。
500 名前:デフォルトの名無し [2007/11/14(水) 17:13:23 ] [1] 授業単元: プログラミング1 [2] 問題文(含コード&リンク): アスキーコードの値を対応する文字を組み合わせた 一覧表を出力するプログラムを作成せよ。 アスキーコードの範囲は「32」〜「126」、スペースには△を出力。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 今週中にお願いします。 [5] その他の制限: なし
501 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:24:27 ] #include<stdio.h> int main(void){ int i; printf(" 32 △\n"); for(i=33;i<127;i++) printf("%3d %c\n",i,i); return 0; }
502 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:30:15 ] >>474 課題 1-3 1-4 1-5 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5259.c
503 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:03:55 ] [1] 授業単元:データ構造とアルゴリズム1 [2] 問題文(含コード&リンク):stackプログラムを配列ではなく、連結リストを用いて、作成せよ。 配列で実現する時に比べて、その利点及び欠点をのべよ。 stackプログラム:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5260.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2005 [3.3] 言語:c++ [4] 期限:2007年11月16日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで よろしくおねがいします。
504 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:14:44 ] >>492 #include <stdio.h> #include <math.h> double func1(double x) { return 1.0/x; } double simpson(double a, double b, int n, double (*func)(double)) { double odd = 0, even = 0, h = (b - a)/n; int i; for(i = 1; i < n; i += 2) odd += func(a + i*h); for(i = 2; i < n; i += 2) even += func(a + i*h); return h/3.0*(func(a) + func(b) + 4*odd + 2*even); } int main(void) { int n; for(n = 2; n <= 1024; n *= 2) printf("%4d : %.8f\n", n, simpson(1.0, 2.0, n, (double (*)(double))func1)); return 0; }
505 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 20:17:36 ] >>503 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5261.txt
506 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 20:58:35 ] >>460 本当にありがとうございます。 助かりました。
507 名前:デフォルトの名無しさん [2007/11/14(水) 21:26:19 ] どなたか>>479 を宜しくお願いします。 周りと比べてかなりレベルの低い問題だとは思いますが まったくわからないのでお願いします。
508 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:45:15 ] >>507 #include <iostream> #include <iomanip> #include <algorithm> #include <cmath> using namespace std; struct succ{ int operator()(){ return _n++; } succ():_n(1){};int _n; }; struct print{ double qube( const int & n ) { double x = 0, xn = 1; while ( fabs( x-xn ) > 1.0e-8 ) { x = xn; xn = x-(x*x*x-n)/(3.0*x*x ); } return xn; } void operator()( const int & n ){ cout<<setw(4)<<n<<" "<<setw(4)<<n*n<<" "<<setw(9)<<1.0/n<<" "<<setw(9)<<sqrt(n)<<" "<<setw(9)<<qube(n)<<endl; } }; int main( int argc, char ** args ){ const int N = 25; int v[N]={}; cout << setw(4) << "n"<<setw(4)<<"n^2"<<setw(9)<<"1/n"<<setw(9)<<"n^1/2"<<setw(9)<<"n^1/3"<<endl; generate( v, v+N, succ()); for_each( v, v+N, print()); return 0; }
509 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:59:04 ] >>474 課題1-5 合格最低点を引数に取り、受験番号順に合格者リストを表示するプログラムを作りなさい。 void pass(int border) { char number[7]; int score; while (scanf("%s %d", number, &score) == 2) if (score >= border) printf("%s\n", number); }
510 名前:デフォルトの名無しさん [2007/11/14(水) 21:59:29 ] [1]プログラミング2 [2] 以下は、下記フォーマットにしたがってデータが収められている配列を表現するためのプログラムです。また、そのフォーマットを持つ配列を引数として、有効なレコード数(つまり配列の0番目の値)を返り値として返す関数 int list_len(const int * list) を作成し、プログラムを完成させなさい。 フォーマット(score table) 配列の要素 内容(ただしi≧0) 0番目 有効なレコード数(K) 5*(i-1)+1番目 i番目の学生の英語の得点 5*(i-1)+2番目 i番目の学生の国語の得点 5*(i-1)+3番目 i番目の学生の数学の得点 5*(i-1)+4番目 i番目の学生の理科の得点 5*(i-1)+5番目 i番目の学生の社会の得点
511 名前:デフォルトの名無しさん [2007/11/14(水) 22:00:20 ] サンプルコード #define MAX 101 /* 得点を入れる配列の最大値 */ #define REC 5 /* 1レコードの要素数 */ #define SUB 6 /* 科目名の文字数 */ char sub[REC][SUB]={"英語","国語","数学","理科","社会"}; /* 関数作成 */ int main() { /* 変数は適切に宣言する */ int score[MAX]={3, /* レコード数 */ 45, 60, 36, 72, 53, /* 1レコード目 */ 87, 48, 77, 69, 91, /* 2レコード目 */ 23, 54, 49, 58, 62}; /* 3レコード目 */ p=score+1; size=list_len(score); /* ここに書く */ } 実行例 +----++----++----++----++----+ |英語||国語||数学||理科||社会| +----++----++----++----++----+ | 45|| 60|| 36|| 72|| 53| +----++----++----++----++----+ | 87|| 48|| 77|| 69|| 91| +----++----++----++----++----+ | 23|| 54|| 49|| 58|| 62| +----++----++----++----++----+
512 名前:デフォルトの名無しさん [2007/11/14(水) 22:02:19 ] [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio 2005 [3.3] 言語:C言語 [4] 期限:2007年11月17日まで [5] その他の制限ポインタのあたりまで
513 名前:デフォルトの名無しさん [2007/11/14(水) 22:10:43 ] >>508 ありがとうございます。 本当に助かりました。
514 名前:デフォルトの名無しさん [2007/11/14(水) 22:28:24 ] >>431 どなたかお願いします。
515 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:39:28 ] >>505 ありがとうございました。
516 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:43:31 ] >>510 #include <stdio.h> #define MAX 101 /* 得点を入れる配列の最大値 */ #define REC 5 /* 1レコードの要素数 */ #define SUB 6 /* 科目名の文字数 */ char sub[REC][SUB]={"英語","国語","数学","理科","社会"}; /* 関数作成 */ int list_len(const int * list); int list_len(const int * list) { return list[0]; } int main() { /* 変数は適切に宣言する */ int size, x, y; int *p; int score[MAX]={3, /* レコード数 */ 45, 60, 36, 72, 53, /* 1レコード目 */ 87, 48, 77, 69, 91, /* 2レコード目 */ 23, 54, 49, 58, 62}; /* 3レコード目 */
517 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:44:10 ] >>516 p=score+1; size=list_len(score); /* ここに書く */ for (x=0 ; x<REC ; x++) { printf("+----+"); } printf("\n"); for (x=0 ; x<REC ; x++) { printf("|%s|", sub[x]); } printf("\n"); for (x=0 ; x<REC ; x++) { printf("+----+"); } printf("\n"); for (y=0 ; y<size ; y++) { for (x=0 ; x<REC ; x++) { printf("|%4d|", *p);
518 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:44:41 ] >>517 p++; } printf("\n"); for (x=0 ; x<REC ; x++) { printf("+----+"); } printf("\n"); } }
519 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:52:25 ] >>431 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void ten2two(int num) { if (num==0) return; ten2two(num/2); if(num&1) { printf("1"); } else { printf("0"); } } int main() { int num; scanf("%d", &num); ten2two(num); printf("\n"); return 0; }
520 名前:デフォルトの名無しさん [2007/11/14(水) 23:03:19 ] ただ .exe 立ち上げさせるだけのプログラム作りたいんだけど、何かいい方法ある?
521 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:07:05 ] >>431 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int two2ten(char *buf) { unsigned int num=0, i; for (i=0 ; i<strlen(buf) ; i++) { num*=2; if (buf[i]=='1') { num++; } } return num; } int main() { char buf[100]; scanf("%s", buf); printf("%d\n", two2ten(buf)); return 0; }
522 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:07:31 ] >>520 ダブルクリックでおk
523 名前:デフォルトの名無しさん [2007/11/14(水) 23:08:50 ] >>522 いや、ごもっともなんだけどね。。。 どういう命令をすればやってくれるのかなって思って。
524 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:12:27 ] >>520 #include <stdlib.h> int main() { system("%systemroot%\\NOTEPAD.EXE"); return 0; }
525 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:12:47 ] >>523 system
526 名前:デフォルトの名無しさん [2007/11/14(水) 23:16:57 ] >>524 , 525 ありがとお。こんなの知らなかったお。
527 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:21:59 ] >>477 当方の環境は WindowsXP / 処理系は cygwin(gcc 3.4.4) です。 乱数は M系列乱数、ガウス分布化は局座標法を使用しています。 仕入れ部数を600部から1000部まで1ずつ変化させ、それぞれに 大して 6 万回の試行を行い、平均を算出しています。 さらに、ピークをわかりやすくするために隣接3区間の平均をもって 平準化しています。(が、はっきりしませんでした。) 結果だけのべると、800 より少し多いところ(830〜850) に極大があるようです。 実行すると仕入れ部数と利益が対になって出力されます。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5262.txt (参考文献)C言語による最新アルゴリズム事典/奥村晴彦/技術評論社 1991 ISBN4874084141
528 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:32:29 ] >>474 課題1-4 合格最低人数を引数にして合格最低点を求めるプログラムを作成しなさい。 但し、引数のとりかたは付録を参照すること。 void border(int count) { char number[7]; int score; score = 101; while (count > 0 && scanf("%s %d", number, &score) == 2) count--; printf("%d\n", score); }
529 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:33:08 ] >>479 #include <stdio.h> #include <math.h> int main() { int n; printf(" n n*n 1/n sqrt(n) n∧(3/1)\n"); for (n=1 ; n<=25 ; n++) { printf("%2d ",n); printf("%3d ",n*n); printf("%.5f ",(float)1/n); printf("%.5f ",sqrt((float)n)); printf("%.5f ",powf((float)n, (float)1/3)); printf("\n"); } return 0; }
530 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:31:07 ] >>474 課題1-1 99999 以下の整数の引数をとり、受験番号を C00001 から順に C00002 のように引数の数だけ発生させ、 さらに各受験番号に対して乱数で発生させた点数を組み合わせたテストファイルを作るプログラムを作りなさい。 但し、点数は、 0 点から 5 点までを乱数で 20 回発生させ和を取ることで求めなさい。 引数のとりかた、乱数の発生の仕方は付録を参照のこと。 void list(int count) { int number, score, i; for (number = 1; number <= count; number++) { score = 0; for (i = 0; i < 20; i++) score += myrand(); printf("C%05d %d\n", number, score); } }
531 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 01:24:00 ] >>479 当方の環境は WindowsXP / 処理系は cygwin(gcc 3.4.4) です。 C++ の書式設定を駆使しています。3 項演算子をネストさせています。 ので、宿題の答えとしては難ありですが、細かいところまで題意を満たす ためには致し方なかったのでした。すみません。 詳しめの参考書を見てください。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5263.txt
532 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 01:36:26 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): unsigned long long 型の x, y に対して x^2 を y で割った余り計算しなさい。 ただし x^2 がオーバーフローする 可能性があることに注意すること。 [3] 環境 [3.1] OS: Windows (Cygwin) [3.2] コンパイラ名とバージョン: gcc 4.0 [3.3] 言語: どちらでも可 [4] 期限: 16日まで [5] その他の制限: 特にありません おねがいします
533 名前:デフォルトの名無しさん [2007/11/15(木) 01:57:19 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5264.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5265.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 4.0 [3.3] 言語: C [4] 期限: 11/16 pm5:00 [5] その他の制限: 特にありません。 よろしくお願いします。
534 名前:デフォルトの名無しさん [2007/11/15(木) 02:14:51 ] メイン関数において、2つの放物線 y=ax2+bx+c y=px2+qx+r の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。 関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場 合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が 有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数 から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個 存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。 よろしくお願いします。。
535 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:48:36 ] 移項して判別式で判定すりゃいいんだから、>>433 のを適当に変えればいいだけだろ。
536 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:54:15 ] >>534 あの、>>460 に問題がありましたら何がまずいのか教えてください。
537 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:58:19 ] >>474 課題1-3 点数表を読み込み、点数の高い順に出力するプログラムを作成しなさい。 プログラムにおいて点数表の容量を制限してはいけない。 コンピュータのメモリが許す限り大きな点数表も表示できること。 int compare(const char *a, const char *b) { return atoi(b + 7) - atoi(a + 7); } void rank(void) { int size, count; char *buffer; fseek(stdin, 0L, SEEK_END); size = 10; count = ftell(stdin) / (size + 1); buffer = (char *)calloc(count, size); fseek(stdin, 0L, SEEK_SET); fread(buffer, size, count, stdin); qsort(buffer, count, size, compare); fwrite(buffer, size, count, stdout); free(buffer); }
538 名前:デフォルトの名無しさん [2007/11/15(木) 07:02:14 ] >>532 #include <iostream> using namespace std; #define N 4294967295 // 2^32 - 1 unsigned int amari(unsigned int x, unsigned int y){ int k=x-y; if(k<0)k=-k; if(x>k)x=k; k=N/x; int p=x/k,l=x%k; return ((x*k)%y)*p+((x*l)%y)%y;} main(){ int x=97,y=123; cout<<amari(x,y)<<" "<<(x*x)%y; }
539 名前:538 [2007/11/15(木) 07:28:16 ] バグがあったよ
540 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:44:16 ] あと型が違うんじゃね?
541 名前:デフォルトの名無しさん [2007/11/15(木) 10:01:04 ] >>494 07KC189
542 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 11:57:29 ] 画像の指定範囲を決めてそこだけを出力するプログラム教えてください。
543 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:21:54 ] [1] 授業単元: 確率論 [2] 問題文: ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5266.txt 図はこうです toku.xdisc.net/cgi/up/vcc/nm13048.jpg.html [3] 環境 [3.1] OS: LINUX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11月15日24:00 [5] その他の制限: お願いします。
544 名前:538 [2007/11/15(木) 13:48:07 ] #include <iostream> using namespace std; typedef unsigned long int Nsu; Nsu N; Nsu amari(Nsu x, Nsu y){ int a; x%=y; a=x-y; if(a<0)a=-a; if(x>a)x=a; a=N/x; int p=x/a, q=x%a , r=0; for(int i=0;i<p;i++){r+=(a*x)%y; r%=y;} r+=(q*x)%y; r%=y; return r;} main(){ N=-1; Nsu x,y; x=(1<<16)-17; y=(1<<14)-3; cout<<amari(x,y)<<" "<<(x*x)%y; }
545 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:14:41 ] >>541 存在しない学籍書いてるんじゃねーよ 04kc〜06kcのどれかだろ? 2年〜4年のどれかなんだから
546 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 16:45:36 ] >>543 とりあえず「重き」ってなんなんだ? 「重さ」だよな…… それともオレの知らない専門的な言い回しなのか……
547 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 16:51:37 ] >>543 >>257 >>258 でダメな理由は?
548 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:04:22 ] 重みじゃないの?
549 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:07:26 ] >>544 x%y が0の場合にゼロ除算
550 名前:デフォルトの名無し [2007/11/15(木) 17:27:31 ] 1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 文字列を正数に変換せよ。 入力が空の場合は処理を終了。「入力されていません」と表示。 入力の最大入力桁数は4バイトとし、桁あふれに対して「4文字で入力してください」と表示。 入力が半角数字以外に対しては「半角数字以外入力できません」と表示。 入力がゼロの場合は「0は入力できません」と表示。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 4.0 [3.3] 言語: C言語 [4] 期限: 今週中にお願いします。 [5] その他の制限: 特にありません
551 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:37:23 ] >>550 突っ込むべき部分があるな 入力の最大入力桁数は四バイト? それとも四文字? -129のような文字列は129に変換? 129を変換したあとの数字は、1290? それとも0129?
552 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:56:30 ] >>550 #include<stdio.h> #include<string.h> #include<ctype.h> int get_value(void){ char buf[4+1+1]; // 4文字オーバーチェック + 終端 \0 int i, value=0, buflen; fgets(buf, sizeof(buf), stdin); buflen=strlen(buf); if(buf[buflen-1]=='\n') buf[--buflen]='\0'; if(buflen<=0){ puts("入力されていません"); return -1; } if(buflen>4){ puts("4文字以内で入力してください"); return -1; } for(i=0;buf[i];i++){ if(!isdigit(buf[i])){ puts("半角数字以外入力できません"); return -1; } value=value*10+buf[i]-'0'; } if(value==0) puts("0は入力できません"); return value; } int main(void){ int value; value=get_value(); if(value>0) printf("\n%d\n", value); return 0; }
553 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 19:41:05 ] [1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5263.txt サンプルプログラムは、窓口が1個で,行列が窓口の前にできる場合に,時間と共に窓口の前にできる行列の様子を調べるものである. (1)サンプルプログラム内の乱数処理を srand関数とrand関数を使用するように書き換えなさい。 (2)参考プログラムを元に,パラメータs, q, aを構造体のメンバ として扱うプログラムBに変更しなさい. (3)作成したプログラムを変更し,窓口が2個の場合にも(すなわち1個または2個の場合に)対応できるようにしなさい。 このとき,窓口の個数(1または2)もパラメータLやM, シミュレーション時間と同様に入力して指定できるようにしなさい. なお,新しく到着した客は,最も短い行列(待っている人が少ない窓口)に並ぶものとする. 全ての窓口の行列が同じ長さの場合には,一様な確率 (窓口が2個の場合は1/2の確率)で並ぶ窓口を決定するものとする. (4)窓口が3個以上にも対応できるようにしなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C [4] 期限: 明日までです… [5] その他の制限: 特に無いと思います
554 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:10:23 ] >>547 実際はね、重きじゃなくて入力データなんです。 入力データ(配列でいうとdata[50][5])が移動間を動く感じなんですけど 各状態にデータがあって、その入力データを各状態のデータによって 計算して出された値を各移動確率とかけるというわけなんですけど。 で書いてくださったプログラムにおいて、 for(cnt=0;cnt<50;cnt++){それを50回 for(i=0;i<7;i++)cal_next_gs(list[i]);は7つの状態間で1回の移動につき確率計算 } ってのはわかるんです。1次元配列として引数として渡せば できるのかなーと今思いました。 for(cnt=0;cnt<50;cnt++){それを50回 for(i=0;i<7;i++)cal_next_gs(list[i],data[cnt]);は7つの状態間で1回の移動につき確率計算 } void cal_next_gs(struct gstate *gs,float data[5]) { //計算して移動確率を計算 } でいけそうな感じがします。
555 名前:デフォルトの名無しさん [2007/11/15(木) 21:27:17 ] >>527 ありがとうございました。
556 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:38:48 ] >>554 何をいいたいのか、いまいち分からないんだが、 どんな入力に対してどんな出力が欲しいの? 電気回路上の電流のシミュレーション?
557 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:58:18 ] 入力に対して隠れマルコフモデル(HMM)を使って確率を出すんですけど、 この例では3状態のHMMと2状態のHMMを使って最終的にendにたどりつくとこの 状態の確率が出力値となるんです。 で1つの移動に対して入力1フレームを正規分布によって評価し確率を出す。 その正規分布をHMMで評価するんです。 そのHMMには平均分散、移動確率とあるんですけど、 平均分散を正規分布で用いて確率をだして、移動確率をかけて 最終的な移動の確率となるんです。 前につくってもらったのが移動確率でのみの計算でした
558 名前:デフォルトの名無しさん [2007/11/15(木) 22:01:52 ] 神経衰弱を行うゲームを作成すること。 ただし、カードは52枚全て使用し、絵柄の 区別は無いものとする。 このプログラムをお願いします。(^_^)
559 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:02:55 ] すみません、どなたか>>489 をお願いします。 自分でもあつかましいと承知しているのですが、 どうにも分からないので・・・。 コンパイラ名はVS2005のようです。 よろしくお願いします。
560 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:12:59 ] 557ですけど 頼んだのは移動してくる確率が2つだったらグリッドで計算できたんですけど 3つの場合どうすればいいのかわからなくて。 しかも下のやつも計算しなくてはならなくて。 なので質問させていただきました
561 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:30:13 ] >>543 >この(startから状態1への移動確率)X(重き)と >(状態1の状態確率)X(状態1から状態1への移動確率)X(重き)と、(状態11の状態確率)X(状態11 >から状態1への移動確率)X(重き)の和が状態1の状態確率となります。 状態1ってループしてるけど単純にこれでいいの? (状態1の状態確率)X(状態1から状態1への移動確率)X(状態1から状態1への移動確率)X(重き) ... とかは考えなくてもよし?
562 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:36:35 ] >>543 >>246 の問題だと矢印にくっつく数値(状態遷移確率)が固定だったのを 時間(移動回数)によって矢印にくっつく数値(状態遷移確率)を変化させたいと言う事でいい?
563 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:40:42 ] >>561 考えなくていいです。 >>562 そうです。 実際は入力に対して各HMMの1つの状態の平均分散から 正規分布により出力確率を出してそのHMMから移動確率を出して 確率X移動確率なんですけど 簡単のために、出力確率を重きとしてるわけです。
564 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:43:05 ] 移動確率を出す関数だけ。 enum states { START, FIRST, SECON, THIRD, TENTH, ELEVE, E_N_D }; enum states movProbMap( enum states from, enum states to ) { return from == START ? (to == FIRST ? 0.5 : to == TENTH ? 0.5 : 0.0) : from == FIRST ? (to == FIRST ? 0.6 : to == SECON ? 0.3 : to == ELEVE ? 0.1 : 0.0) : from == SECON ? (to == SECON ? 0.7 : to == THIRD ? 0.3 : 0.0) : from == THIRD ? (to == THIRD ? 0.8 : to == E_N_D ? 0.2 : 0.0) : from == TENTH ? (to == TENTH ? 0.6 : to == ELEVE ? 0.4 : 0.0) : from == ELEVE ? (to == ELEVE ? 0.7 : to == FIRST ? 0.2 : to == E_N_D ? 0.1 : 0.0) : 0.0; }
565 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:44:10 ] 激しく無意味だな。スマン無視してくれ。
566 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:47:07 ] >>564 これは一体何でしょう? 実数を返したいんじゃないの???
567 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:55:57 ] enum states -> double で。
568 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:10:49 ] >>543 使い方は data.txt をリダイレクトするだけ lzh 内のファイル名間違えたけど気にしない ans478 < data.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5268.lzh
569 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:32:51 ] >>568 ありがたいんですけど これちょっと使いかたわからなくて。 gcc ans478.cして実行のときになにか入力しないといけないんですか?
570 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:35:27 ] 本来なら ans478 と打って実行するところを ans478 < data.txt のようにしてdata.txtを標準入力にリダイレクト
571 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:36:42 ] >>489 #include<stdio.h> int main(void){ int i, num, max=0; for(i=20071114;i<=20071114+6-1;i++){ scanf("%d", &num); if(num>max) max=num; } printf("%d\n", max); return 0; }
572 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:39:49 ] >>570 できました。。。 さっきできなかったのに。 ありがとうございます。 自分で作りなおしてから できなかったらこれも試してみます