1 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 03:01:54 ] あなたが解けない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++の宿題を片付けます 99代目 pc11.2ch.net/test/read.cgi/tech/1194262698/
146 名前:128 mailto:sage [2007/11/25(日) 15:00:08 ] >>136 >>137 圧縮してupすれば大丈夫でしたね・・・。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5328.zip この中の0と1の個数と、数列の周期を求めるプログラムをお願いします。
147 名前:コーンポタージュ [2007/11/25(日) 16:21:51 ] 【質問テンプレ】 [1] 授業単元:グラフ彩色問題 [2] 問題文 [2.1]グラフ彩色問題に対する近似解法SEQを作成せよ [2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ [2.3]グラフ彩色問題に対する近似解法RLFを作成せよ ※検索エンジンで“グラフ彩色問題 SEQ”と入力して頂ければ、更に理解が深まるページが見つかるかと思います。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2007年12月7日 [5] その他の制限:特にありません。 よろしくお願いします。
148 名前:もりもっこり [2007/11/25(日) 16:32:38 ] 基本的なプログラムだと思うのですが、自分でやってみてもうまくいきません。また他にも課題が多く、非常に困っています。詳しい方よろしくお願いします。 1.数値を順番に読み込んで二次元の配列に格納する。 2.その配列を画面に出力する。 3.次に、2つの整数を読み込む。 4.二次元配列のうち、読み込んだ整数に対応する二つの行(あるいは列)の内容を交換する。 配列の内容を画面に出力する。 5.配列の読み込み、交換、出力はそれぞれ関数にすること。
149 名前:KSCN [2007/11/25(日) 16:41:11 ] Mathematica でグラフを描き、EPS 形式で保存する。LaTeX を使ってレポートを作成してその中にグラフを挿入し、PDF ファイルに変換したものを提出すること。 っていう課題がでたのですが質問の意味からわかりません。どなたか質問の意味だけでも教えてください。
150 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:43:43 ] どうでもいいけど、名前を出す人の方が少ないんだから別人に見せようとしても逆効果だぞ
151 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:49:49 ] >>149 つwww.google.co.jp/
152 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:50:15 ] >>149 何がわからないのかがわからない。 1.クラスで使っているMathematicaというソフトを使って数式を処理してグラフ表示、グラフの画像をEPS形式のファイルに保存。 2.いつもやっているようにLatexでレポート作成。EPS形式ファイルの埋め込みに関しては、配布したテキストを参照の事。 3.pdflatexをつかってPDF形式のファイルを出力。 一通り説明されてるはずなのに、なんで分からないとか言ってんの? ずっとサボってたのか?
153 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:01:02 ] >>145 マルチ?( science6.2ch.net/test/read.cgi/math/1195081289/156 )
154 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:24:20 ] >>128 >>146 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5329.c 結果があってるかはわからんよ。 あと、文字列を数列に直すのは無駄だったから省略しちゃった。 どうしても直したければ、適当にやってくんろ。
155 名前:131 mailto:sage [2007/11/25(日) 19:42:04 ] >>154 自分の環境ではfscanfで32767文字までしか取得できなかったわけだが・・・ ファイルサイズは228793バイトあるわけで >>128 >>132 で答えたつもりだったんだけど間違ってたかな?
156 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:30:38 ] >>155 こっちの環境では問題なく scanf で取れたよ。 それ以上に、>>132 は O(n^2) だから、とても終わらないと思うけれど。
157 名前:156=154 mailto:sage [2007/11/25(日) 20:33:55 ] あ、こちらの環境は質問者にあわせて WindowsXP (cygwin) の gcc 。 質問者の環境で、これでうまくいかないようなら対処する。
158 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:48:56 ] >>153 プログラムがかけないのでお願いします
159 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:56:38 ] >>158 C, d, n, p, q として想定している桁数は? 任意桁なら、GMP の使用の可否は?
160 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:59:51 ] >>158 マルチ?って聞かれてそう答えるのって日本語不自由な人だよね。
161 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:04:14 ] >>160 留学生です
162 名前:デフォルトの名無しさん [2007/11/25(日) 21:14:03 ] [1] 授業単元: C言語基礎 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5330.txt [3] 環境 [3.1] OS: Windows [3.3] 言語: C言語 [4] 期限: 11月26日0時まで よろしくおねがいします
163 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:14:37 ] 帰れ
164 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:24:45 ] >>162 int dom[] = {-1,31,28,31,30,31,30,31,31,30,31,30,31}; void yesterday(int *y, int *m, int *d) { --*d; if (*d <= 0) *d = dom[--*m]; if (*m <= 0) --*y, *m = 12; } void tomorrow(int *y, int *m, int *d) { ++*d; if (*d > dom[*m]) *d = 1, ++*m; if (*m > 12) ++*y, *m = 1; } void sort3(int *n1, int *n2, int *n3) { int tmp; if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp; if (*n2 > *n3) tmp = *n2, *n2 = *n3, *n3 = tmp; if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp; }
165 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:47:29 ] >>116 当方で確認した環境は WindowsXP, 処理系は gcc 3.4.4 です。 (1) だけでもやってみました。とにかく初期値と収束解を出すだけのプログラムです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5331.txt この結果をつらつら眺めると、次の関係があると推測できます。 初期値を x0, y0 とするとき、 1) y0 > x0 ならば、収束値は (x, y) = (-2, 2) 2) y0 < x0 ならば、収束値は (x, y) = (2, -2) 3) x0 = y0 ならば、ヤコビ行列の行列式が 0 となるので、収束しない。 初期値から近い方の解に収束するようです。 なお、問題の(2) は、どうもフラクタル図形を描くかと思われます。
166 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:04:40 ] >>116 M教授の課題だろ
167 名前:デフォルトの名無しさん [2007/11/25(日) 22:08:05 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク):(kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5332.txt ) [3] 環境 [3.1] OS: WindowsXP [3.3] 言語: C言語 [4] 期限: 明後日 [5] その他の制限: 今は配列のところを習っています。制限は特にないです。 お願いします
168 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:13:59 ] >>167 404
169 名前:デフォルトの名無しさん [2007/11/25(日) 22:24:46 ] 1から50までの数のうち、素数を表示するプログラムを教えてください。 #difineで50を定義するってのが条件です お願いします
170 名前:デフォルトの名無しさん [2007/11/25(日) 22:33:04 ] >>148 M教授の課題だろ。俺もわかんねえんだおしえてくれ
171 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:34:48 ] >>169 #include <stdio.h> #define 50 int main(void) { printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47"); return 0; }
172 名前:>>169 [2007/11/25(日) 22:35:19 ] すみません。>>1 読んでませんでした 書き直します [1] C言語: [2] 1から50までの数のうち、素数を表示するプログラムを作成せよ。 #difineで50を定義せよ [3] 環境 [3.1] WindowsXP [3.2] Visual C++2005 [3.3] C [4] 期限:無期限 [5] 関数は使ってはいけない
173 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:37:23 ] >>172 >関数は使ってはいけない 本当にこう言われたのか?
174 名前:173 mailto:sage [2007/11/25(日) 22:39:11 ] >>173 すみません。違います 関数は使わなかったらできませんね(汗
175 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:40:05 ] ところで >>171 はスルーかね
176 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:40:57 ] あっ!#difineを使うのか!
177 名前:173 mailto:sage [2007/11/25(日) 22:41:37 ] あ、すまんです;; ありがとうございます。こんなやりかたもあるんですね
178 名前:173 mailto:sage [2007/11/25(日) 22:43:44 ] あとdefineですね。間違いだらけですみません
179 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:44:59 ] >>172 #define N 50 main() { int i, j; int primes[N]; for (i = 0; i < N; ++i) { primes[i] = i; } primes[1] = 0; for (i = 2; i*i < N; ++i) if (primes[i]) { for (j = i*i; j < N; j+=i) { primes[j] = 0; } } } for (i = 0; i < N; ++i) { if (primes[i]) { printf("%d ", primes[i]); } } }
180 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:47:39 ] >>179 最悪な方法に比べればましだけどまだしょっぱい。
181 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:47:48 ] >>172 #include <stdio.h> int main() { printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47\n"); return 0; }
182 名前:173 mailto:sage [2007/11/25(日) 22:48:17 ] (汗
183 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:51:09 ] >>180 改善点があったら教えてください
184 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:52:10 ] >>172 #include <stdio.h> #include <stdlib.h> #define N 50 int main(void){ int border, i, k; char *num; border = N/2; if((num = malloc( N+1 )) == NULL)return -1; for(i=0; i<N; i++)num[i] = 1; i = 2; while(i <= border){ for(k=i*2; k<=N; k+=i)num[k] = 0; while(1){ i++; if(num[i])break; } } for(i=2; i<=N; i++)if(num[i])printf("%d ", i); free(num); return 0; }
185 名前:122 mailto:sage [2007/11/25(日) 22:53:42 ] >>119 >>129 ごめんなさい。訂正いたします。 なお、厳密には「有効桁数 4 桁で表示」っていうのは、このやり方ではうまくないです。 SEED に与える定数で、具合のいいものしか表示しないようにしています。すみません。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5333.txt
186 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:59:55 ] >>172 #include <stdio.h> int main() { int i,j,num[51]={0}; for (i=2 ; i<51 ; i++) { if (num[i]==0) { printf("%d\n", i); for (j=i ; j<51 ; j+=i) { num[j]=1; } } } return 0; }
187 名前:122 mailto:sage [2007/11/25(日) 23:00:07 ] >>119 >>129 訂正:具合のいいものを表示するように SEED の値を変えてください。 重ね重ねすみません。
188 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 23:04:03 ] >>186 //ちょっとだけ高速化 #include <stdio.h> int main() { int i,j,num[51]={0}; for (i=2 ; i*i<51 ; i++) { if (num[i]==0) { printf("%d\n", i); for (j=i ; j<51 ; j+=i) { num[j]=1; } } } for (i=2 ; i<51 ; i++) { if (num[i]==0) { printf("%d\n", i); } } return 0; }
189 名前:コーンポタージュ [2007/11/26(月) 00:15:01 ] >>147 ちなみにサンプルプログラムは以下の通りです。 /* グラフ彩色問題に対する近似解法(サンプルプログラム) */ #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX_N 2000 /* 最大の頂点数 */ int n; /* 頂点数 */ int m; /* 辺数 */ double x[MAX_N], y[MAX_N]; /* 各頂点の座標 */ int a[MAX_N][MAX_N]; /* 隣接行列 */ int color[MAX_N]; /* 色 */ int max_color; /* 最大の色番号 */ /* アルゴリズム本体 */ void sample(){ int i; for(i = 0; i < n; i++){ color[i] = i % 6; } }
190 名前:コーンポタージュ [2007/11/26(月) 00:15:42 ] /* メインプログラム */ int main(int argc, char *argv[]){ FILE *input_file, *output_file; double start_time, search_time; int i,j,k1,k2; /* 引数のチェック */ if(argc <= 1){ fprintf(stderr,"Please input the name of data file!\n"); exit(1); } /* 入力データの読み込み */ input_file = fopen(argv[1],"r"); fscanf(input_file, "%d %d\n",&n, &m); for(i = 0; i < n; i++){ fscanf(input_file,"%lf %lf\n",&(x[i]),&(y[i])); } for(i = 0; i < n; i++){ /* 隣接行列の初期化 */ for(j = 0; j < n; j++){ a[i][j] = 0; } } for(i = 0; i < m; i++){ fscanf(input_file,"%d %d\n",&k1,&k2); a[k1][k2] = a[k2][k1] = 1; }
191 名前:コーンポタージュ [2007/11/26(月) 00:16:16 ] /* 解の初期化 */ for(i = 0; i < n; i++){ color[i] = -1; } /* 入力データの表示 */ printf("n= %d\n",n); printf("m= %d\n",m); /* for(i = 0; i < n; i++){ printf("%f\t%f\n",x[i],y[i]); } for(i = 0; i < n; i++){ for(j = i+1; j < n; j++){ if(a[i][j] == TRUE){ printf("%d\t%d\n",i,j); } } } */ /* 開始時刻の設定 */ start_time = (double)clock()/CLOCKS_PER_SEC; /* アルゴリズム本体 */ sample();
192 名前:コーンポタージュ [2007/11/26(月) 00:16:50 ] /* 実行時間の測定 */ search_time = (double)clock()/CLOCKS_PER_SEC - start_time; /* 制約条件のチェック */ for(i = 0; i < n; i++){ if(color[i] == -1){ printf("No color is assigned!: %d\n",i); } } for(i = 0; i < n; i++){ for(j = i+1; j < n; j++){ if(a[i][j] == 1 && color[i] == color[j]){ printf("%d and %d have the same color %d!\n",i,j,color[i]); } } }
193 名前:コーンポタージュ [2007/11/26(月) 00:17:23 ] /* 入力データおよび解をファイルに出力 */ output_file = fopen("result.txt","w"); fprintf(output_file,"%d\t%d\n",n,m); for(i = 0; i < n; i++){ fprintf(output_file,"%f\t%f\n",x[i],y[i]); } for(i = 0; i < n; i++){ for(j = i+1; j < n; j++){ if(a[i][j] == 1){ fprintf(output_file,"%d\t%d\n",i,j); } } } for(i = 0; i < n; i++){ fprintf(output_file, "%d\n",color[i]); }
194 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:18:48 ] レスを跨るようならアップローダを使ってくれないかな。
195 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:26:22 ] アップローダなら半角スペースが残るので、カットアンドペーストできれいなソースが手元にわたりますし。
196 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:30:38 ] どこの誰が管理してるかわからないようなものを使えるか!
197 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:36:13 ] ん、それもそうですね。でもアップローダ経由じゃないソースは 私は基本的にはみません。だってめんどくさいから。
198 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:41:44 ] 1レス内に自然に入るなら入れて欲しいけどね。空白を 置換して。
199 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:51:45 ] 新しい宿題のネタになりますでしょうーか。< 変換
200 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:56:28 ] sed -e 's/&/\&/g' -e 's/^ /\ /g' -e 's/ / \ /g' -e 's/</\</g' -e 's/>/\>/g'
201 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:15:24 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):() ===memo.txt=== DATA52/a DATA52/u DATA52/chi ============= とかかれたmemo.txtのファイルがあるとして そのファイルを読み込み"DATA52/"という 文字列を取り除く. 次にa,u,chiをくっつけてauchiとして表示せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11/26 12:00 [5] その他の制限: ちなみに構造体配列を使い、struct tfield tdata[1]を宣言し tdata[0].filenameに"memo.txt"を格納しているとする。 そのmemo.txtをよみこみ処理してtdata[0].wordとして"auchi"を表示してほしいです。 メンバのfilename,wordはchar型です
202 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:17:18 ] >>184 これは不思議。 アルゴリズムの名前とかある?
203 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:20:40 ] >>202 エラトステネスのふるい
204 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:26:06 ] >>203 まじか……。 調べる数をリストとして扱うと、こういう処理になるのか。
205 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 07:30:51 ] ちょ、ふるいってプログラムで素数求めるときに必ずやるもんだろw
206 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:16:47 ] 確かに出てくる確率は多いけど、 ただ単に素数を求めるプログラムを作れって言われたら、 エラトステネスを思いつかなければ、別の手段を使うだろ。
207 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:20:35 ] 可能性ではなく、教養として知っておくべきだろうな。 教養なんて高尚なもんでもない。常識だ。
208 名前:デフォルトの名無しさん [2007/11/26(月) 08:21:07 ] [1] 授業単元: プログラム数学 [2] 問題文(含コード&リンク):sinx は x - x**3/3! + x**5/5! -x**7/7! + ---- (1) と級数展開される. 式(1)で7項まで取った場合と組み込み関数で求めたsinxの値の差を, 0度から360度まで,プログラムを作成して求めろ 注意1:式(1)をプログラム化する際に,定義関数を利用し,項数と角度を渡すと値を返すような関数 を作成のこと. [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン: bcpad [3.3] 言語: C++ [4] 期限: 11月26日12:00 [5] その他の制限: 特にありませんが定義関数を使うようです お願いします
209 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:37:54 ] >>205 ごめん俺、確率的判定アルゴリズムしか知らない・・・ こういう演習で確率的アルゴリズム書いて提出するとどうなるんだろうな
210 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:56:55 ] #Define Pi 3.14 double series_sin(double degree,int num){ double radian=degree * Pi/180; double tmp=0; for(int i=1;i<=num;i++ ){ tmp+=Pow(-1,i+1)*Pow(radian,i*2-1)/Factorial(i*2-1); } return tmp; } テストも糞も無いけどこれを修正してmath.hのSinと比べればOK factorialの演算子がC++にあるかどうかは分からんので。
211 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 09:15:06 ] >>145 何を求める問題なのかがさっぱり分からないから 問題を書き直したほうがいい
212 名前:デフォルトの名無しさん [2007/11/26(月) 10:28:06 ] 期限過ぎちゃいましたけど、 >47お願いします。
213 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 11:51:43 ] >>209 なんで謝るの?
214 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 14:12:00 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5335.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: なし [5] その他の制限:なし
215 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 15:42:30 ] >>214 #include <stdio.h> #include <time.h> void gput(const char *s, int speed) { clock_t c; while(*s) { putchar(*s++); c = clock(); while(clock() - c < speed); } }
216 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 15:53:26 ] [1] 授業単元: プログラミング [2] 問題文 数字の点数を読んで、クラスの平均点、最低点と最高点を求めるプログラムを書け [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: 不明 [3.3] 言語: C#なんだけど、ほかのスレタイ調べても頼めないからみんなたのむ。 [4] 期限: 今週の金曜 [5] その他の制限:結構レベルが低いので複雑なプログラムはご遠慮願います。
217 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:20:24 ] #include<stdio.h> int main(){ int n; printf("数字の点数を入力してください ",n); scanf("%d",&n); printf("平均点 %d\n",n); printf("最低点 %d\n",n); printf("最高点 %d\n",n); return 0; }
218 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:28:01 ] int ClassMenberNum = 1;
219 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:48:02 ] >>214 while(clock() - c < speed); → while(1000*(clock() - c) / CLOCK_PER_SEC < speed);
220 名前:学生 [2007/11/26(月) 16:50:23 ] 大学の授業で課題が出ました。初めてプログラミングやるので分かりません。 お願いします。自分は全くの初心者ですお願いします。 【C言語・質問】 以下、課題です。 @課題内容 駐車場のシュミュレーション・課題先リンク www.trpt.cst.nihon-u.ac.jp/processing/2006/parking.html ※貴方自身がコンビニやパチンコ店の管理者となり、 イメージして以下の条件は各自自由な値としてよい。 ・駐車場の台数 ・平均駐車時間(s) ・駐車時間の標準偏差(s)・駐車車両発生条件(開始時間 s ) ・その時間における発生確率(台/s)・駐車車両発生条件(中間時間 s ) ・その時間における発生確率(台/s) 例:パチンコ店 駐車場の台数=200台 来店頻度=400秒に1台 平均駐車時間=120分 等 上記の設定で、グラフも出る様にすること。 A課題の参考場所 www.trpt.cst.nihon-u.ac.jp/processing/parkingsim.c 上記の言語がベースになる様です。
221 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:53:28 ] >>220 ログインできないのでユーザー名とパスワードを教えてください。
222 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:54:27 ] >>220 >>1 のテンプレに則ってください
223 名前:学生 [2007/11/26(月) 16:57:21 ] >>221 すみません ユーザー:1424 PASS:1424 両方同じです。 >>222 すみませんでした。以後注意します
224 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:57:39 ] >>215 >>219 ありがとう!助かります!
225 名前:学生 [2007/11/26(月) 17:08:27 ] テンプレに沿って書き直しました。 [1] 授業単元:情報処理 [2] 問題文:上記に掲載しました。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: bcPad [3.3] 言語: C言語 [4] 期限:本日中 [5] その他の制限: 自分はプログラミング素人です。各文字の意味は知っています
226 名前:デフォルトの名無しさん [2007/11/26(月) 17:08:48 ] [1] 授業単元:C言語(システムコール) [2] 問題文(含コード&リンク): 10から0までの整数を1秒ごとに表示する親プロセスと子プロセスを生成しなさい。 備考 ・fork() を用いること ・getpid() を用いて、親プロセスと子プロセスのプロセスIDを表示すること ・wait() を親プロセスで用いない場合と用いた場合を作成すること [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: なし [5] その他の制限: なし
227 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:10:30 ] >>223 大学の鯖に入れって事だろ? なんか、ギリギリアウトな気がするんだが・・・w
228 名前:学生 [2007/11/26(月) 17:12:26 ] >>227 大丈夫です。過去にも依頼した事がありあす。 このページ作っているのは大学院生です。見ていません
229 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:18:01 ] すげぇなぁ、おいw
230 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:19:11 ] 基本技術者試験とかの設問で、不正アクセスになるのはどれか? という選択肢にありそうだなw
231 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:25:44 ] 不正アクセスでタイーホ
232 名前:学生 [2007/11/26(月) 17:26:50 ] >>230 多分不二家ですねw 大学の鯖は、情報処理を履修している学生200名が利用していますよ
233 名前:デフォルトの名無し [2007/11/26(月) 17:44:19 ] [1] 授業単元: プログラム演習 [2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。 1(異常) ・キーボードからの入力が空の場合は処理を終了する。 ・キーボードからの最大入力桁数は4バイトとする。 ・キーボードからの入力が4バイトを超える場合は処理を終了する。 ・キーボードからの入力が正の整数に変換できない場合は処理を終了する エラーメッセージ 未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません 文字列を正数に変換する関数はatoiを使用。 引数 char data[] 文字列 戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力 最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。 引数 int data1 データ1 int data2 データ2 戻り値 : 最大公約数 最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。 引数 int data1 データ1 int data2 データ2 戻り値 : 最小公倍数 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 11・27まで [5] その他の制限: なし
234 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:34:03 ] >>232 利用者は関係なくてだね アクセス制限してる以上、君が公開したところで罪になるのは見た人なんだよ
235 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:27:26 ] 好奇心から侵入してしまった俺は2chの歴史に刻まれるのか
236 名前:デフォルトの名無し [2007/11/26(月) 19:36:51 ] 1] 授業単元: ぷろぐらむ [2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、 該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。 ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。 なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、 分割コンパイルできるように作成しなさい。 このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、 main関数のソースファイルにて利用すること。 (例) 以下の値で動作した場合は、「3」を返す。 文字列s = “aababcbaa” 文字列t = “abc” 入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:11月27日まで [5] その他の制限: なし
237 名前:デフォルトの名無し [2007/11/26(月) 19:44:50 ] 1] 授業単元: プログラミング言語 [2] 問題文:与えられた数字文字列を数値(int型)へ変換する関数 AsciiToIntを、ポインタを使用して作成せよ。 さらに、この関数を使用し、入力された文字列が実際に数値変換されたことを確認するプログラムを作成せよ。 引数 char *s 文字列のポインタ int *value 変換結果 戻り値 : 結果 文字列が空または8桁以上の場合はエラー値を返す。 文字列が数値に変換できない場合はエラー値を返す。 処理手順 文字列が空または8桁以上の場合はエラー値を返す。 先頭の文字列が符号+/-の場合、それを取り除いた文字列をチェック対象とする。 文字列の桁数を取得。 文字列を読み込んで、以下の処理を行う。 先頭文字列が+/-の場合は、符号情報を保持しておく。また、桁数が1の場合は、エラー値を返す。 ASCIIコードを使用し文字列をチェックし、数値以外であった場合はエラー値を返す。 取得した入力文字列の桁数、読み込んだ数値とその桁数より、数値計算を行う。 計算した結果を合計値に加算する。 入力値がマイナスであった場合、合計値に符号を付加する。 合計値を返す。場合は、エラー値を返す。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語 [4] 期限: 11/27 [5] その他の制限:なし
238 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:16:55 ] >>216 「読む」の意味がいまいちわからないけどこんなんかな using System; class Sample{ public static void Main(){ int[] point = new int[5]; int max=int.MinValue, min=int.MaxValue; double avg=0.0; try{ for(int i=0; i<5; i++){ Console.Write("{0}人目の得点->", i+1); point[i] = int.Parse(Console.ReadLine()); } for(int i=0; i<5; i++){ if(max < point[i]) max = point[i]; if(min > point[i]) min = point[i]; avg += point[i]; } Console.WriteLine("最高点:{0}点\n最低点:{1}点\n平均点:{2}点", max, min, avg/5); } catch{ Console.WriteLine("なんか例外"); } } }
239 名前:デフォルトの名無しさん [2007/11/26(月) 21:18:15 ] [1] 授業単元プログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5336.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C言語 [4] 期限: 11/27 [5] その他の制限: 特になし
240 名前:デフォルトの名無しさん [2007/11/26(月) 21:25:29 ] (1)C言語 (2)問題 ・与えられた個数の正の整数を格納している配列のうち、最大となる値を検出して、その値を 格納している配列要素の値を0に書き換える。すると新しい配列においては、もとの配列で 大きい方から数えて2番目の数値が最大値となっている。さらにもう一度、この新しい配列 における最大値を格納している配列要素の値を0に書き換える。するとこの時点でのさらに 新しい配列では、最初の配列において大きい方から数えて3番目の数値が最大となってい る。このことを利用して、下記のプログラムを作成せよ。 (ここで示した方法は、いわゆる整列(ソーティング)問題の1つの解法となり得るが、効率的 な方法ではない) まずメイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実 際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし て渡す。 サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列 の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて 2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である) 最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ る場合は、その小数を切り捨てた整数を表示することとする)。 (3)環境 (3.1) OS:Windows (3.2)コンパイラ名とバージョン: 不明 (3.3) (3.4)C言語 (4)期限 :11月30日 (5)基礎的なことしか習っていないのですがよろしくお願いします。
241 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:35:49 ] >>236 関数だけ作った #include <string.h> int search(const char *s, const char *t); int search(const char *s, const char *t){ char *p; p = strstr(s, t); if(p == NULL)return -1; return p-s; }
242 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:41:55 ] >>241 >入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する この部分の仕様を満たしてなくね? if ( strlen( s ) > 128 ) exit( 0 );とか追加すればいいだけど。
243 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:44:04 ] >>242 何ぃ!その部分はmain側だと思ってた! じゃあそれつけといて下さい
244 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:08:23 ] >>237 関数だけ作った valueの使い道がわからなかった #include <stdio.h> #include <string.h> #define ERROR_INT 100000000 int AsciiToInt(char *s, int *value){ int calc = 1, cnt, i, ans=0; cnt = strlen(s); if(cnt > 8 || cnt <= 0)return ERROR_INT; if(*s=='+' || *s=='-'){ calc = *s=='+' ? 1 : -1; s++; cnt--; } if(cnt <= 0)return ERROR_INT; for(i=0; i<cnt; i++){ if(strchr("0123456789", s[i]) == NULL)return ERROR_INT; ans = ans*10 + s[i]-'0'; } return ans * calc; }
245 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:20:15 ] >>244 valueに値を格納して返す値は正常or変換結果じゃないか? 「変換結果を返す」ってあるけど、普通は正常or異常を返して 正常ならvalueに変換された値が格納されているって感じだな。
246 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:25:25 ] >>240 #include <stdio.h> #define N 10 void subfunc(int cnt, int *num, int *ans){ int i, k, pos; for(i=0; i<cnt; i++){ for(k=1, pos=0; k<cnt; k++){ if(num[pos] < num[k])pos = k; } ans[i] = num[pos]; num[pos] = 0; } } int main(void){ int i, num[N], ans[N], sum=0; for(i=0; i<N; i++){ printf("%d個目->", i+1); scanf("%d", &num[i]); } subfunc(N, num, ans); for(i=0; i<N; i++){ printf("%d ", ans[i]); sum += ans[i]; } printf("\n中央値:%d\n", sum/N); return 0; }
247 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:39:13 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): www.vipper.org/vip677010.txt "sample.txt"というファイルを読み込み、グラフにしたとき山になる点を順番と大きさを"result.txt"に出力するプログラムを書け。 ファイルオープンに失敗した場合は失敗した旨を表示させること。 ※[3, 10] [6, 6] [9, 9] をresult.txtに出力できるようになればいいみたいです。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: VisualC++2005ExpressEdition [3.3] 言語: C [4] 期限: 11/27 [5] その他の制限:とくになし よろしくお願いします。
248 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:24:31 ] >>233 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5339.txt
249 名前:デフォルトの名無しさん [2007/11/26(月) 23:25:04 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): (1)malloc()を用いて元のリストの構造をコピーしたリストを返すプログラム ※再帰的なプログラムをすること。以下を使用。 MyList *cpMyList(MyList *ptr); (2)malloc()を用いて元のリストの先頭からn個のnodeをコピーしたリストを 返すプログラム ※nがリスト長より長いときにはそこまでの長さんのリストを返せばよい ※再帰的なプログラムにすること。 MyList *cpnMyList(MyList *ptr, int n); (3)malloc()を用いて与えられた二つのリストをつなげたリストを返すプログラム MyList *mergeMyList(MyList *ptr1, MyList *ptr2); ----------------------------------------- 冒頭は以下を使用 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct node { int data; struct node *next; } MyList; [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 11/28 なにとぞ、よろしくお願いします。。
250 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:29:37 ] ↓第1回、国際ニコニコ映画祭 大賞作品 www.nicovideo.jp/watch/sm1493205 はっきりいって糞暴力動画 これでいいのか?ニコニコ動画!??
251 名前:128 mailto:sage [2007/11/26(月) 23:47:54 ] >>131 >>154 >>132 のでは実行してもなぜか何も表示されませんでした。 自分の環境では>>154 のプログラムで正しい答えが出ました。 ありがとうございました。 あと数列に直すために色々試したのですができません・・・ これもお願いしていいでしょうか?
252 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:52:10 ] よくあんな巨大配列で動いたもんだ
253 名前:コーンポタージュ [2007/11/27(火) 00:40:29 ] >>147 追加・変更があるので、改めて掲載します。 【質問テンプレ】 [1] 授業単元:グラフ彩色問題 [2] 問題文 [2.1]グラフ彩色問題に対する近似解法SEQを作成せよ [2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ [2.3]グラフ彩色問題に対する近似解法RLFを作成せよ 問題の詳細(pdfなので少々重いです。最後の方のプログラミング課題です) www-2ch.net:8080/up/download/1196004537765593.vEHtcV サンプルプログラム(これを参考にプログラムを解くそうです) www-2ch.net:8080/up/download/1196004323585273.o4l1bm [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2007年12月7日 [5] その他の制限:特にありません。 よろしくお願いします。
254 名前:デフォルトの名無しさん [2007/11/27(火) 00:42:17 ] >>249 はいよっと、一応条件満たしてると思うけど MyList *cpMyList(MyList *ptr) { MyList* pRet; if(!ptr) return NULL; pRet = malloc(sizeof(MyList)); memcpy(pRet, ptr, sizeof(MyList)); pRet->next = cpMyList(pRet->next); return pRet; } MyList *cpnMyList(MyList *ptr, int n) { MyList* pRet; if(!ptr || n==0) return NULL; pRet = malloc(sizeof(MyList)); memcpy(pRet, ptr, sizeof(MyList)); pRet->next = cpnMyList(pRet->next, n-1); return pRet; }
255 名前:デフォルトの名無しさん [2007/11/27(火) 00:42:58 ] >>249 マージする部分ね MyList *mergeMyList(MyList *ptr1, MyList *ptr2) { MyList* pRet; MyList* pIdx; if(!ptr1) return cpMyList(ptr2); pRet = cpMyList(ptr1); pIdx = pRet; while(pIdx->next) pIdx = pIdx->next; pIdx->next = cpMyList(ptr2); return pRet; }
256 名前:デフォルトの名無しさん [2007/11/27(火) 00:51:55 ] >>249 うっぷろーだがあったんだ、こっちに上げといた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5340.txt
257 名前:216 mailto:sage [2007/11/27(火) 01:33:08 ] >>238 すまない・・・せっかくといてもらったんだけど、CじゃなくてC#なんだ・・・。 スレッド自体はCかC++なんだけど、 C#のスレッドがなくてここの住人に頼るしかなくてね・・・。
258 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:45:34 ] >>247 #include <stdio.h> main() { int x , y, old_x = 0, old_y = 0, a = 0; char line[1000]; FILE *fin,*fout; if((fin=fopen("sample.txt","r"))==NULL){ printf("sample.txt can't open.\n"); exit(1); } if((fout=fopen("result.txt","w"))==NULL){ printf("result.txt can't open.\n"); exit(1); } while(fgets(line,1000,fin)!=NULL){ sscanf(line,"%d,%d",&x,&y); if(y - old_y >= 0){ old_x = x; old_y = y; a = 1; }else{ if (a == 1){ fprintf(fout,"[%d,%d]\n",old_x,old_y); } old_x = x; old_y = y; a = 0; } } fclose(fin); fclose(fout); }
259 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:59:18 ] >>257 大丈夫か?>>238 はcscでコンパイル・実行可能だぞ?
260 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 02:04:02 ] >>257 むしろ、C/C++じゃコンパイルすら通らないと思うんだが
261 名前:デフォルトの名無しさん [2007/11/27(火) 02:43:36 ] >>254 >>255 >>256 さん ありがとー!!助かります!
262 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 02:48:59 ] 次スレからはスレタイにC#も入れとこう。
263 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 03:05:38 ] >>258 ありがとうございました。
264 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:17:17 ] >>220 これは善意の人間を犯罪者にするかのような誘導。 不正アクセスに繋がるから、このページに行く必要は全く無い。
265 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:38:45 ] >当該アクセス管理者若しくは当該利用権者の承諾を得てする場合は、この限りでない。 正規の利用者からパスワード教えられてアクセスする場合って 不正アクセスになるんだっけ?法律にはうといからよくわからん・・・
266 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:51:00 ] >>265 そもそも>>220 が正規利用者だという確証は一つも無い。 下手をするとhackingを行った犯罪者だということすら考えられる。 そしてそのhackerからpassを教えてもらってアクセスすれば、 我々は立派な犯罪者になってしまう。
267 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:02:58 ] 故意かどうかって関係ないんだっけ? まぁアクセスしないのが一番確実だけど。
268 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:17:33 ] >>220 が、そのIDとパスワードの所持者"本人"であれば、以下の法律 不正アクセス行為の禁止等に関する法律 law.e-gov.go.jp/htmldata/H11/H11HO128.html 第四条に該当し"許可を得た"ということになるんだが、本人であるという証明がなされていない。 2ちゃんねるにパスワードを掲載する=Web検索のロボットにキャッシュされる。 それと、ログインした人間のIPや環境情報はサーバーログを見ればすぐに判る。 管理していないとしても、しっかり残るので後で掘り返すことが可能。 逮捕者の実例 News:速報:“2ちゃんねらー”6人逮捕,不正アクセスで www.itmedia.co.jp/news/bursts/0109/27/2ch.html 第3者が"権利者の許可なく"そのパスワードでログインした場合は不正アクセス。
269 名前:デフォルトの名無しさん [2007/11/27(火) 10:42:40 ] [-3、3] fx=1/(1+5X^2) 分点10 (n=9) この条件を使ってラグランジュ補間のプログラムを作れって問題なんですけどさっぱりです。ちなみにC言語です
270 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:44:38 ] >>269 とりあえず>>1 にテンプレートという便利なモノがあるからそれを大いに活用したほうが良い
271 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:16:08 ] >>253 せめて問題例データくらい作って置いたらどうかな 頂点10で辺数27でしょ、PG作ってデータまで作るとなると、相当な暇人でもやらんと思う
272 名前:デフォルトの名無しさん [2007/11/27(火) 11:16:32 ] >>270 OSはLinux 知識はCとC++なら多少は分かる とにかく提出したらいいので多少自己流で解かれても大丈夫です
273 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:17:46 ] >>272 質問の仕方も自己流にこだわるのかw
274 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:31:34 ] 数式も自己流だしなあ。せめて人に通じる式で書こうよ。
275 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:48:09 ] >>269 ラグランジュ補間は、本来、N点のデータが与えられた時、 それらの点を繋ぐことのできるxの多項式の係数を求めるという方法です。 プログラミング以前に、数学的な理解がおろそかだと思われます。 もっと言うと、補間に関するソースは至る所に掲載されています。 それを用いれば簡単に目的は達成できます。
276 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:48:56 ] え、あれで通じないとは、どんだけ数学弱者なんだよ 俺は解かないけど。
277 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:53:03 ] >>276 そこまで言ったら解いてやれよw
278 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:02:55 ] >>277 どこがわかんないか質問してくれれば、その回答はするよ
279 名前:デフォルトの名無しさん [2007/11/27(火) 12:12:41 ] 要は難しすぎて僕らには解けません。僕らがわかるのは文字の出力だけです。参りました。
280 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:30:53 ] >>272 には是非そのままの態度で自分の求める解答を引き出すテクニックを見せてもらいたい
281 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:35:37 ] つまり>>269 は、与えられたfxと範囲から10個の点をまず生成して、 その生成された点からラグランジュ補間を行うxの多項式の係数を求め、 元のfxと比較しろという問題なのか?
282 名前:デフォルトの名無しさん [2007/11/27(火) 12:37:24 ] [授業単元]プログラミング [問題文] #include <stdio.h> #include <math.h> #define EPS 1e-7 /* 収束判定の許容誤差ε */ /* ★ 関数 f(x) とその導関数 df(x) を定義する*/ int main() { int n; double x, y; printf("n x f(x)\n"); printf("--- ---------- ----------\n"); n = 0; x = /* ★ 初期値を設定 */ y = f(x); printf("%3d %10.7f %10.7f\n", n, x, y); while (/* ★ |f(x)|<ε となったとき終了 */) { /* ★ 途中の計算結果も出力するように、適切な位置に printf 文を追加せよ */ n++; x = /* ★ ニュートン・ラフソン法の漸化式 */ y = f(x); } return 0; } /* end of kadai_8_sample.c */ 方程式 x^3 = 2 の解をニュートンラフソン法で求めよ。 収束判定は |x^3 - 2|<10^-7 とする。 初期値は各自で決める [os] linux [言語] c [期限]本日14:00 宜しくお願いします
283 名前:デフォルトの名無しさん [2007/11/27(火) 12:44:23 ] ごめん。俺が間違ってたわ。もういいわ
284 名前:デフォルトの名無しさん [2007/11/27(火) 12:52:30 ] m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム ただし、/や%や10回以上のループは使えない
285 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:54:59 ] >>284 mの因数分解表をあらかじめ作っておいて判定する
286 名前:デフォルトの名無しさん [2007/11/27(火) 12:55:16 ] 訂正 m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム ただし、/や%や16回以上のループは使えない
287 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:57:28 ] 別にループが使えないならループを展開しとけば良いだろ
288 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:59:47 ] >>286 2 ・・・ 一の位が2の倍数 3 ・・・ 各位の数の和が3の倍数 4 ・・・ ・ 下二桁が4の倍数 ・ 一の位を2で割った数を十の位に足した数が偶数 5 ・・・ 一の位が5の倍数 6 ・・・ 2かつ3の倍数 7 ・・・ 3桁毎に交互に足したり引いたりしてできた数が7の倍数 8 ・・・ ・ 下3桁が8の倍数 ・ 一の位を2で割り十の位に足して2で割った数を百の位に足した数が偶数 9 ・・・ 各位の数の和が9の倍数 10 ・・・ 一の位が0 11 ・・・ 各位の数を交互に足したり引いたりしてできた数が11の倍数 12 ・・・ 3かつ4の倍数 13 ・・・ 7の倍数の判定と同じ 14 ・・・ 2かつ7の倍数 15 ・・・ 3かつ5の倍数 16 ・・・ 下4桁を2で割った数が8の倍数(下4桁を4で割った数が4の倍数 ttp://www004.upp.so-net.ne.jp/s_honma/number/multiple.htm
289 名前:デフォルトの名無しさん [2007/11/27(火) 13:01:44 ] >>288 各位って10進数ですよね どうやってその値をゲットするんですか
290 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:04:47 ] >>289 Cの文字列で一文字ずつmを取得する
291 名前:デフォルトの名無しさん [2007/11/27(火) 13:07:32 ] >>290 整数を文字列に変換する関数とかは使わないで下さい
292 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:10:01 ] >>291 は?後付してんじゃねえよ
293 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:12:38 ] 最初から誤解の余地が無い言い方で訊けってのは無茶だろ。 問題に対する疑問に答える過程で条件を追加するのは当然のことだと思うが。
294 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:13:23 ] 文字列で受け取って、「文字のまま」演算を行うようなプログラムを書けばいい。 たとえば、tasu('A', 'B')の戻り値が'C'になるとか、 kakeru('A', 'B')は'B'とか。
295 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:13:51 ] テンプレに制限やら書く所まであるのに、完全に無視してそれか? とっとと帰れ帰れ
296 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:16:36 ] テンプレの利用は任意だ。 そもそも、答えたくないならお前が黙って帰れよ。
297 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:20:28 ] だから、文字のまま判定を行うプログラムを書く。そうすれば10進数の演算と同じ。 例えば tasu(char a, char b) なら、 if ((a=='A' && a=='B') || (a=='B' && a=='A')) return 'C'; っていう式を延々と書けば、これは10進数の演算と全く同じになる。
298 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:21:20 ] #include<stdio.h> int mod(int m, int n) { int i, num[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768}; if(m<0 || n<0) return -1; for(i=16-1;i>=0;i--) if(m>=num[i]*n) m-=num[i]*n; return m; } int main(void) { mod(20000, 15); return 0; }
299 名前:デフォルトの名無しさん [2007/11/27(火) 13:26:53 ] >>298 サンクス
300 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:33:25 ] >>284 = >>296 = >>298 = >>299
301 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:50:54 ] >>300 残念、>>296 だけ俺だ。
302 名前:コーンポタージュ [2007/11/27(火) 15:11:18 ] >>253 問題例 頂点i に色i mod 6 を割当てるプログラム •ランダム幾何グラフUn,d を作成 •頂点数n,パラメータd を入力とし,単位正方形[0,1]2内に一様かつ独立にn 個の頂点をランダムに分布させ,距離がd 以下の2頂点間に辺を結ぶ •各頂点の平均次数がnπd2となることが知られている 問題例のプログラム www-2ch.net:8080/up/download/1196004323585273.o4l1bm
303 名前:デフォルトの名無しさん [2007/11/27(火) 15:26:14 ] うわぁ糞スレ ニート風情が偉そうにε−(´・`)
304 名前:デフォルトの名無しさん [2007/11/27(火) 15:31:12 ] 【質問テンプレ】 [1] 授業単元:プログラム言語2 [2] 問題文:課題A で作成したプログラムを以下のように修正する. * gcc kadai08b.c でコンパイルすると5パーセントの商品価格だけ表示される. * gcc -DZEI=*** kadai08b.c でコンパイルすると***パーセントの商品価格だけ表示される. * gcc -DDEBUG kadai08b.c でコンパイルすると5パーセントの消費税と商品価格が表示される #include <stdio.h> #include <stdlib.h> #define a 5 #define TAX(x,y) (x+y)*a/100 #define PRICE(x,y) (x+y)+(x+y)*a/100 int main(void) { int x,y; printf("tax of x+y %d \n", TAX(x,y)); scanf("%d",&x); printf("lnput an integer y:"); scanf("%d",&x); printf("tax of x+y: %d \n",); printf("price of x+y %d \n", PRICE(x,y)); return0; } [3] 環境 [3.1] OS: (Linux/) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: ([2007年11月28日まで] [5] その他の制限: (Cプリプロセッサぐらいまで) 課題Aはなんとか出来ましたが、課題Bがわからないので、宣しくお願いします。 貼りつけたプログラムは、課題Aが完成したものです。
305 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:40:23 ] >>304 ついでにいろいろ修正した。 #include <stdio.h> #include <stdlib.h> #ifdef ZEI # define a ZEI #else # define a 5 #endif #define TAX(x,y) (x+y)*a/100 #define PRICE(x,y) (x+y)+(x+y)*a/100 int main(void) { int x,y; printf("lnput an integer x:"); scanf("%d",&x); printf("lnput an integer y:"); scanf("%d",&y); #ifdef DEBUG printf("tax of x+y %d \n", TAX(x,y)); #endif printf("price of x+y %d \n", PRICE(x,y)); return 0; }
306 名前:デフォルトの名無しさん [2007/11/27(火) 15:54:20 ] 修正までありがとうございました。 本当に助かりました。 またの機会がありましたら、よろしくお願いします。
307 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:08:10 ] [1] 授業単元: C言語 [2] 問題文: 1.正三角形の面積を求めるマクロ定義を作る。一辺の長さをaとする 2.課題1で作ったマクロを使って、1辺の長さが5mの正三角形の面積を求めるプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++2005 [3.3] 言語:C [4] 期限:11月28日午後10時まで [5] その他の制限:特にありません。 よろしくお願いします
308 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:23:12 ] [1] 授業単元:C言語基礎 [2] 問題文(含コード&リンク):色々な整数値a,bに対してtを媒介変数として、 座標がx=cos(2πat)、y=sin(2πbt)であらわされる曲線を描くリサージュ関数を作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] Astex(?) [3.3] 言語:C [4] 期限: 2007/11/29 19時 [5] その他の制限: 配列・ポインタの使い方、簡単な数式の入力まで習いました。 どこから手をつけてよいか分かりません。お力添え頂ければと思います。
309 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:24:47 ] >>307 #include <stdio.h> #define TRI(a) ((a)*(a)*1.7320508/4.0) int main( ){ return printf( "%lf\n", TRI(5)); }
310 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:32:04 ] [1] 授業単元: C言語 [2] 問題文:入力された文字列のそれぞれの文字をカウントし、出現回数と生起確率を表示させよ。 またそのエントロピーも表示させよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++ 6.0 [3.3] 言語:C [4] 期限:11月28日午前2時まで。 [5] その他の制限:特にありません。 以前ご教示頂いたのですが、データが壊れてしまいました。
311 名前:310 mailto:sage [2007/11/27(火) 16:32:53 ] 途中送信orz 何卒よろしくお願いいたします・・・。
312 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:20:20 ] >>308 ソース ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5343.txt csvを表計算ソフトで描画した図形 ttp://www15.axfc.net/uploader/90/so/l/119615151025982656815/Img_5482.jpg
313 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:59:13 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): メイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実 際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし て渡す。 サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列 の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて 2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である) 最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ る場合は、その小数を切り捨てた整数を表示することとする)。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: Visual Studio .NET 2003 [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 12月3日 [5] その他の制限: 現在、関数・ポインターについて学んでるところです。 よろしくお願いします。
314 名前:デフォルトの名無し [2007/11/27(火) 18:03:09 ] 以前236でプログラムをお願いしたものです。 ポインタではなく配列でお願いしたいのですが、もう一度お願いできないでしょうか。 できればmainもお願いします。 [1] 授業単元: プログラム演習 [2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、 該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。 ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。 なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、 分割コンパイルできるように作成しなさい。 このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、 main関数のソースファイルにて利用すること。 引数 char s[] 対象文字列 char t[] 検索文字列 (例) 以下の値で動作した場合は、「3」を返す。 文字列s = “aababcbaa” 文字列t = “abc” 入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:11月27日まで [5] その他の制限: なし
315 名前:デフォルトの名無し [2007/11/27(火) 18:04:22 ] [1] 授業単元: プログラム演習 [2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。 ・キーボードからの入力が空の場合は処理を終了する。 ・キーボードからの最大入力桁数は4バイトとする。 ・キーボードからの入力が4バイトを超える場合は処理を終了する。 ・キーボードからの入力が正の整数に変換できない場合は処理を終了する エラーメッセージ 未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません 文字列を正数に変換する関数はatoiを使用。 引数 char data[] 文字列 戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力 最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。 引数 int data1 データ1 int data2 データ2 戻り値 : 最大公約数 最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。 引数 int data1 データ1 int data2 データ2 戻り値 : 最小公倍数 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 11・28まで [5] その他の制限: なし
316 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:06:06 ] >>310 #include <stdio.h> #include <string.h> #include <math.h> int main() { int i=0,l,c[256]={0}; char buf[256]; double h=0,p; scanf("%s",buf); l=strlen(buf); for(i=0;i<l;i++) c[buf[i]]++; for(i=0;i<256;i++) if(c[i]>0) { p=(double)c[i]/l; printf("\"%c\" %lf\n",i,p); h-=p*log(p); } printf("H = %lf\n",h); return 0; }
317 名前:デフォルトの名無し [2007/11/27(火) 18:14:32 ] [1] 授業単元: プログラミング [2] 問題文: 入力された整数0〜9のn個の文字列に対応したヒストグラムを出力するプログラムを作成せよ。 例:(n個の整数文字列=0050011050) 数値0が6個、1が2個、5が2個の場合、以下のように出力する。 <出力例> a[0] = 6 ****** a[1] = 2 ** a[2] = 0 a[3] = 0 a[4] = 0 a[5] = 5 ** a[6] = 0 a[7] = 0 a[8] = 0 a[9] = 0 ただしキーボードからの入力は最大128バイトとし、それを超える場合129バイト以降のデータはカウントしない。 入力データは半角数字のみとし、全角数字の入力は考えない。 文字列カウント関数 count 引数 char inputdata[] 入力データ int outputdata[] 出力データ 算出結果をヒストグラムで描写する関数名 hist 引数 int outputdata[] [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語 [4] 期限: 11月28日まで [5] その他の制限: なし