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/
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年現在、未だに確立されていません。 近似解を用いるのが一般的です。 最適解(厳密解)を求めるアルゴリズムを考え出すのはほとんど無理です。