1 名前:デフォルトの名無しさん [2007/07/15(日) 22:31:51 ] あなたが解けない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++の宿題を片付けます 92代目 pc11.2ch.net/test/read.cgi/tech/1183511364/
252 名前:149 [2007/07/18(水) 13:37:55 ] >>247 さん 幸せになれましたが、どういう原理なのでしょう? 質問ばっかですいません 書き忘れましたが、153さん・247さんありがとうです
253 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:41:52 ] >>252 mという数学ライブラリをリンクしたのです。
254 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:42:09 ] >>248 兄さんそれ掛け算になってません。 forの条件式もアレです。意図は伝わるけど。
255 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:46:27 ] a*bの場合 int i,n; for(i=0;i<b;i++){n+=a;} 暇ですね。
256 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:47:11 ] a*bの場合 int i,n=0; for(i=0;i<b;i++){n+=a;}
257 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:48:03 ] >>252 243のエラーメッセージはソースの中に存在しない関数(sqrtとacos)があって プログラムを作れないというリンカのエラー。 >>253 の言うとおり数学ライブラリをリンク指定すれば その中に関数sqrtとacosという関数があるからリンクが通る。
258 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:52:06 ] >>248
259 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:02:41 ] 馬鹿は彫っとけ
260 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:04:45 ] やらないか
261 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:16:34 ] >>175 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4662.c 入力は各行に(別に各行でなくてもいいけど) x1 y1 Z1 x2 y2 Z2 x3 y3 Z3 r g b の順で数値を並べたファイル. (例) 0 10 10 100 30 10 50 50 100 255 0 0 0 100 20 100 100 20 50 0 20 0 255 0 0 200 30 100 200 30 80 20 15 0 0 255 出力先もコンソールにしてるが,変更したければmain冒頭の FILE *out = stdout; を書き換えればいい. 画像はLinuxのxvで確認した.ppm形式はいくつか種類があるようなので問題あるかも. (注:CGは昔かじった程度なのでzバッファについて根本的な勘違いをしてるかもしれない)
262 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:30:47 ] >>205 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4663.txt 問題2でstrcpy()(文字列のコピー)の替わりにstrcat(文字列の連結)を使った。 strcpy()を使えと言われても俺の能力じゃムリポ
263 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:33:09 ] >>262 strccat(a, b) ≡ strcpy(a + strlen(a), b) ≡ strcpy(strchr(a, '\0'), b)
264 名前:262 mailto:sage [2007/07/18(水) 14:37:06 ] 262の駄文は忘れてくれ 問題2の修正版 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4664.c
265 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:08:56 ] >>246 色々穴だらけだが kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4666.txt
266 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:18:43 ] >>262 最後のナル文字にさえ気をつければ便利だし安全だよ。
267 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:19:45 ] サイズの方が重要かも。
268 名前:265 mailto:sage [2007/07/18(水) 15:24:25 ] あ、コメントの処理入れるの忘れた まあいいや どうせもともと穴だらけだ
269 名前:ヒープ [2007/07/18(水) 15:36:58 ] [1] 授業単元:C言語演習 [2] 問題文(含コード&リンク): ヒープソートを用いて、配列に格納された10個の数値データを 大きい順に並び替える。変化がわかるようにソート前と後を出力させる。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 早いとありがたいです [5] その他の制限: 特にありません よろしくおねがいします。
270 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 17:26:12 ] >>177 #include <stdio.h> int main(void) { int i,j,k,sn,flg[3]={0},suka; int n[3][5]={ {157788,457190,-1}, {5161,7093,7485,9614,-1}, {64,79,-1} }; printf("Input number > "); scanf("%d",&sn); for(i=0,k=1000000; i<3; i++,k/=100) { for(j=0; n[i][j]>0; j++) { if(n[i][j]==sn%k) { flg[i]++; break; } } } for(i=0,suka=1; i<3; i++) { if(flg[i]) { printf("%d等 \n",i+1); suka=0; } } if(suka) printf("はずれ\n"); return 0; }
271 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 18:07:53 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 2次元配列の中にデータの入ったファイルを読み込んで代入する方法を main関数ともう1つ関数をつくって作成せよ。 例. box[5][5];の2次元配列にファイルのデータ(ここではdata.txt)を代入 data.txt 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 今日中です [5] その他の制限: 特にありません よろしくおねがいします。
272 名前:175 [2007/07/18(水) 19:53:23 ] >>261 ありがとうございました!m(__)m 自分でも色々いじってみましたが、思っていた通りの完璧な出来でした。 本当に助かりました!
273 名前:デフォルトの名無しさん [2007/07/18(水) 20:09:44 ] [1] 授業単元:情報活用 [2] 問題文:キーボードから順次入力された正の整数を0が入力されるまで、 配列に順番に格納し、入力された(0を除く)値の平均値(実数として扱うこと) にもっとも近い値(平均との差が最小となる値)が何番目に入力された どういう値であるかを表示するプログラムを作成せよ。 例) 数字(1)を入力してください。 2 数字(2)を入力してください。 5 数字(3)を入力してください。 3 数字(4)を入力してください。 1 数字(5)を入力してください。 0 入力された数字の平均は2.75です。 これは、3番目に入力された3に最も近いです。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: [7月19日20:00] [5] その他の制限:特になし ギリギリまで頑張ったのですができませんでした。わかる方お願いします
274 名前:デフォルトの名無しさん [2007/07/18(水) 20:12:21 ] [1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク):○×ゲーム(3目並べ) をプロンプト上で動かす。com/man対戦、先攻後攻は選択可能 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: [3.3] 言語:C [4] 期限: 今週金曜 [5] その他の制限: 特になし
275 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 20:13:01 ] >>273 なんか前々スレくらいで全く同じ問題に回答した気がする。
276 名前:スモーク [2007/07/18(水) 20:17:27 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 問題009 多分岐型 整数型の変数a・b と、文字型の変数e を用意し、 キーボードから2つの数値と1つの演算子を入力し 、その計算結果cを出力するプログラムを作成しなさい。 実行される計算は和・差・積・商・剰余の5種類とし、 演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で 表現されるものとする。 演算子にそれ以外の記号が入力された場合は エラーメッセージを表示する。 また0による除算の回避も含めること。 [3] 環境 3.1] OS: (Windows XP) [3.2] コンパイラ名とバージョン: (VS 2005) [3.3] 言語:C [4] 期限: ([2007年07月20日hh:金曜まで] [5] その他の制限: 課題の数は残り20くらいありますが、半分は片付けました。 しかし、追加されてくるものを回答する時間がもうありません。 どうかよろしくおねがいします。 あなたの能力が便りです。
277 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 20:20:53 ] 釣りか?
278 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 20:21:21 ] 除算の結果の小数点以下は?
279 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 20:25:19 ] >>271 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4667.c
280 名前:デフォルトの名無しさん [2007/07/18(水) 20:27:06 ] [1] 授業単元:情報 [2] 問題文:2次方程式a*x*x + b*x + c = 0の解を求めるプログラムを作成せよ。 係数a,b,cはdouble型で、キーボードから入力するものとする。 虚数解の出力も行うこと。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: あしたまで [5] その他の制限:ありません よろしくおねがいします
281 名前:22 mailto:sage [2007/07/18(水) 20:37:28 ] 名前:デフォルトの名無しさん[sage] 投稿日:2007/07/15(日) 09:55:51 [1] 授業単元: C言語 基礎&応用 [2] 問題文(含コード&リンク): 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4668.txt ソース:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4669.txt [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語:C言語 [4] 期限:2007/07/19の12:00まで。 [5] その他の制限:特になし どうにか講師が作らせたかった内容になったらしく問題1と2はOKでました。 最後の問題3です。よろしくお願いいたします。
282 名前:スモーク [2007/07/18(水) 20:41:23 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 問題009 多分岐型 整数型の変数a・b と、文字型の変数e を用意し、 キーボードから2つの数値と1つの演算子を入力し 、その計算結果cを出力するプログラムを作成しなさい。 実行される計算は和・差・積・商・剰余の5種類とし、 演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で 表現されるものとする。 演算子にそれ以外の記号が入力された場合は エラーメッセージを表示する。 また0による除算の回避も含めること。 [3] 環境 3.1] OS: (Windows XP) [3.2] コンパイラ名とバージョン: (VS 2005) [3.3] 言語:C [4] 期限: ([2007年07月20日hh:金曜まで] [5] その他の制限: 課題の数は残り20くらいありますが、半分は片付けました。 しかし、追加されてくるものを回答する時間がもうありません。 どうかよろしくおねがいします。 あなたの能力が便りです。 小数点以下は切り捨てでいいですよ。 とにかく0による除算の回避とあるだけなのでそのとおりで済むはずです。 多少のミスはかまいません。それ以外がうまく機能すればよいです。 また、ほかの問題も載せますのでよろしくお願いします。
283 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 20:42:52 ] ここまでくると、嫌がらせとしか思えないな
284 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 20:43:30 ] なんか追記の書き方がムカツクのは俺の心が狭いからかな
285 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 21:07:30 ] >>280 汚くて&間違ってたらスマソ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4670.c
286 名前:285 mailto:sage [2007/07/18(水) 21:11:36 ] あー、a=0の時の処理書いてないわ 適当に追加してね
287 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 21:26:20 ] >>284 俺も。>>285 はキリストかあるいはMだと思う。
288 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 21:39:00 ] >>282 #include <stdio.h> #include <stdlib.h> int main(void){int a,b,c;char e;if(scanf("%d %d %c",&a,&b,&e)!= 3){ fprintf(stderr, "input error\n");return EXIT_FAILURE;}switch (e) { case '+': c = a + b; break;case '-': c = a - b; break; case '*': c = a * b; break;case '/': case '%':if (b == 0) {fprintf(stderr, "zero divide\n"); return EXIT_FAILURE;}if (e == '/') {c = a / b;} else {c = a % b;} break;default:fprintf(stderr, "illegal operator\n");return EXIT_FAILURE;} printf("result = %d", c); return EXIT_SUCCESS;}
289 名前:alsk [2007/07/18(水) 21:56:33 ] 健康についての英語のエッセイを500〜600字程度でお願いしたいのですが… 可能でしょうか? タバコとか、肥満についてならなんでもいいんで!
290 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 21:57:11 ] >>289 スレ違いすぎ。
291 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:00:17 ] (´-`).。oO(英語で500〜600"字"ってかなり少なくないか?)
292 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:03:32 ] (´-`).。oO("語"の間違いだろ・・・常考)
293 名前:デフォルトの名無しさん [2007/07/18(水) 22:04:01 ] 釣りか単なるマルチだろ…
294 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:40:52 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 次のようにプログラムを作成せよ。前回のプログラムのmainとnumber大域変数は変更しない。 intのスタックを2つ作る(大域変数)。1つのスタックは数値をいれる。もう1つには演算子を表す数をいれる 例 +→0 弱低 -→1 ↓ *→2 ↓ /→3 強高 #include<stdio.h> #include<ctype.h> char *p;char c[100]; int expression(void); int term(void); int number(void); main(){ int ans; while(1){ printf("Enter expression : "); fgets(c,90,stdin); p=&c; if(*p == '\n') {break;} ans=expression(); printf("Answer:%d\n" , ans); } }
295 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:42:19 ] int expression(){ int ans; ans = term(); while(1){ if(*p == '+'){ *p++; ans = ans + term(); } else if(*p == '-'){ *p++; ans = ans - term(); } else break; [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2007年07月19日 [5] その他の制限:特になし
296 名前:デフォルトの名無しさん [2007/07/18(水) 23:13:01 ] >>223 お願いします
297 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:16:30 ] >>279 回答ありがとうございます。 とてもみやすかったです^^
298 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:24:06 ] >>297 readfile関数内の int j はいらないから消しといて><
299 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:12:58 ] >>273 #include <stdio.h> #include <math.h> #define N 128 int main(void) { int i=0, j, n=0, x[N]; float avg=0.0, tmp; while(1){ printf("数字(%d)を入力してください。: ", i+1); scanf("%d", &x[i]); if(x[i] == 0) break; avg += x[i]; i++; if(i == N) break; } avg = avg / i; printf("\n入力された数字の平均は%fです。\n", avg); tmp = fabs(avg - x[0]); for(j=1 ; j<i ; j++){ if(tmp > fabs(avg - x[j])){ tmp = fabs(avg - x[j]); n = j; } } printf("これは、%d番目に入力された%dに最も近いです。\n", n+1, x[n]); return(0); }
300 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:33:57 ] [1] 授業単元:計算機 [2] 問題文(含コード&リンク): スタックを利用し、入力された文字を逆順に出力するプログラム。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4671.txt ここまで作ったのですが、ポップアップがうまく出来ません [3] 環境 [3.1] OS: (Windows/Linux/等々) windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) bcc32 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限:7/26 どなたかご教授お願いしますorz
301 名前:273 [2007/07/19(木) 00:47:41 ] >>299 ありがとうございますmm 明日やってみます。 本当にありがとうございます。
302 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:51:41 ] >>296 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4672.txt
303 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:58:09 ] >>300 よく分からないのだが、 対話的に1文字ずつ文字入力を行い、1文字ずつ取り出したいのか? それとも、 文字列を入力し、結果の反転文字列を一気に出力したいのか?
304 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:58:15 ] >300 char x; scanf("%s", &x); ってなんだ?
305 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:02:05 ] >>303 入力は1文字ずつで、出力は1文字ずつ出したり全部出したり出きる様にしたいんです。
306 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:11:28 ] [1] 授業単元:Cぷろぐらみんぐ [2] 問題文:複素数a+bi(iは複素数)のn乗を求めて出力するプログラムを作れ。 a,bはdouble型とし、nはint型で、キーボードから入力するものとする。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: はやめでおねがいします [5] その他の制限:特にないです
307 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:16:07 ] 「はやめ」っていつまでだよ 明日の朝とかもうちょっと具体的に書け
308 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:19:00 ] [1] 授業単元:プログラミング論 [2] 問題文(含コード&リンク):sakuratan.ddo.jp/uploader/source/date44998.txt return ????部分が分かりません。 [3] 環境 [3.1] OS: (Windows/Linux/等々)WinXP [3.2] コンパイラ名とバージョン:VC6 [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 今日 [5] その他の制限:なし よろしくおねがいしますorz
309 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:24:12 ] なんでいちいち外部に上げるかね
310 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:24:47 ] >>308 問題文じゃねええええええええええええええええええええええええええええええええええええええええええ
311 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:27:19 ] >>308 double 型の値を返すんだから、 FXかFX1じゃねえの? 問題文がないしわけがわからんよ
312 名前:308 mailto:sage [2007/07/19(木) 01:28:11 ] >>310 問題文がついてないんです・・・ 一次正弦関数の補完値を求めたいみたいなんですけど グーグル先生に聞いてもよく分かりませんでした。
313 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:29:36 ] は? 問題文がないなら宿題じゃねえじゃん
314 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:30:00 ] >>306 int main(){ double a,b,t; int n; scanf("%lf,%lf,%d",&a,&b,&n); while(--n>0) t=b,b=2*a*b,a=a*a-t*t; printf("%g+%gi\n",a,b); }
315 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:31:47 ] [1] 授業単元: c言語 [2] 問題文(含コード&リンク): 整数nを入力し、1〜nまでの整数を使い、n桁の組み合わせを出力する。 同じ整数は2回以上使ってはいけない。 例えば3を入力した場合 012 021 102 120 201 210 を出力したい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 7/23 [5] その他の制限: 特に無し もうさっぱりです。お願いします。
316 名前:308 mailto:sage [2007/07/19(木) 01:32:04 ] >>313 「ここ埋めてきて」と…
317 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:33:24 ] >>316 俺たちはその「ここ埋めてきて」とか一時正弦関数の補完とか言われてな・・・ もしかして文章で伝えられずに口頭だったから何も書かなかったのか・・・ もうだめぽ
318 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:46:04 ] >>315 > 整数nを入力し、1〜nまでの整数を使い、n桁の組み合わせを出力する。 ... >例えば3を入力した場合 >012 021 102 120 201 210 この例だったら、1 〜 n じゃなくて 0 〜 n-1 じゃないのか?
319 名前:300 mailto:sage [2007/07/19(木) 01:46:55 ] とりあえず1文字ずつ入力して1文字ずつ出力しようとしてみたけど どうしても最後の文字(1番最初に入力した物)が出力されません。。 配列には入ってるみたいなんだが・・・
320 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:47:47 ] >>315 n桁ってのは上限はないのか?
321 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:48:52 ] 1違いは良く見直せというのはプログラミングをやる人間にとっての常套句
322 名前: ◆Kt53Ir50Qk mailto:sage [2007/07/19(木) 01:50:39 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 線形リストを用いて過去に素数とわかった数を保存し、指定された数(N)以下の素数を求めるプログラムを作成する。 Nはプログラム実行中に外部から入力できるようにする。 ・素数かどうかを判定する際には線形リストに保存されている素数のみ利用する。 ・引数として与えた数が、引数として与えられた素数を保存する線形リスト中の素数で割り切れるかどうかを判定する関数を作る。 ・順番に小さい数から線形リストに保存してある素数で割り切れるかどうかを判断し、割り切れない場合(素数)は線形リストに加えていく。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C/C++の違いがわからない [4] 期限: はやめ [5] その他の制限: 特になし わ か り ま せ ん
323 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:53:41 ] >>318 うっかりしてました。 123 132 213 231 312 321 の間違いです。 >>320 基本的に上限はありませんが、あんまり数が大きいと 馬鹿になりませんので…。 大体5か6くらいまでを想定してます。
324 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:58:48 ] >>300 変な所は色々あるんだが、とりあえず、 case 3: while(sp>0){ sp--; printf("%c", Stack[sp]); } printf("\n"); break;
325 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 02:01:00 ] >>322 最初は線形リストになにも保存されていないと思われるが、どうする?
326 名前: ◆Kt53Ir50Qk mailto:sage [2007/07/19(木) 02:05:05 ] たぶん、いくつかの素数を入れた素数テーブルを作っておくんだと思いますが、、、 よくわからないです。 ↓授業で使った線形プログラム sakuratan.ddo.jp/uploader/source/date45003.txt
327 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 02:07:59 ] 何? さくらアップローダーが流行ってるの?
328 名前:300 mailto:sage [2007/07/19(木) 02:10:22 ] きったないプログラムだけどなんとか動くようになりました。。。 あとは修正頑張ってみます。 ありがとうございました。
329 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 02:12:17 ] >>323 #include <stdio.h> #define N 6 int nextperm(int p[], int n){ int i, j, t; i = n - 1; p[0] = 0; while (p[i] >= p[i + 1]) i--; if (i == 0) return 0; j = n; while (p[i] >= p[j]) j--; t = p[i]; p[i] = p[j]; p[j] = t; i++; j = n; while (i < j){ t = p[i]; p[i] = p[j]; p[j] = t; i++; j--; } return 1; } int main(){ int i, n, p[N + 1]; do{ scanf("%d", &n); }while(n < 1 || N < n); for (i = 1; i <= n; i++) p[i] = i; do{ for (i = 1; i <= n; i++) printf("%d", p[i]); putchar(' '); }while(nextperm(p,n)); return 0; } ぐぐって出てきたのほぼそのまんまだから動作原理はシラネ
330 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 02:23:00 ] >>300 がんばれ
331 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 03:01:10 ] 自分で書いたソースを晒して質問するのって、それなりに大変だよな。 宿題丸投げして、回答があっても放置される事が多いけど。
332 名前: ◆Kt53Ir50Qk mailto:sage [2007/07/19(木) 03:13:35 ] >326 まちがってました。授業でやったのは sakuratan.ddo.jp/uploader/source/date45007.txt でした。さっきのは自分でぐちゃぐちゃにしたやつでした。
333 名前:306 mailto:sage [2007/07/19(木) 07:44:56 ] 今日、19日のうちにおねがいします
334 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 08:53:07 ] >>329 まさにそのまんまがあったんですね…。 ありがとうがざいます。
335 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 08:57:12 ] >>333 もうで照るだろ
336 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 09:57:38 ] [1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): a,b,c,d,eに1〜5の整数を一つずつ入れて a + b - c * d / e の結果の最大になる値、最小となる値、そのときのa,b,c,d,eを求めよ。 (算数的に計算するのではなく全パターンをためすこと。) また、結果は何通りあるかも求めよ。 [3] 環境 [3.1] OS: (/Linux/) [3.2] コンパイラ名とバージョン: (gcc 2.95-2) [3.3] 言語: C [4] 期限: 2007年07月20日17:40 [5] その他の制限: 無し
337 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 11:08:25 ] [1] プログラミング [2] 問題 配列 int a[12]を用意し、a[i] = I ( i=0,1,2,…,10),a[11] = a[0]+a[1]+a[2]+…[10]とせよ [3.1] OS:windows [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C ++ [4]本日まで 問題の意味がよく分からないかもしれませんがよろしくお願いします。
338 名前:デフォルトの名無しさん [2007/07/19(木) 11:56:02 ] >>336 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4673.txt
339 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 12:12:46 ] >>338 ありがとうございます。 ところで、count が120になったのですが、 a + b - c * d / e のaとbまたはcとdを入れ替えると同じになると思うので 値は5*4*3*2*1通り未満になりませんか? よくわからないので、もうすこしがんばってみます。
340 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 12:17:01 ] >>339 同値になる入れ換えは考慮してない。 必要かな?
341 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 12:23:35 ] >>340 どちらかといえばあったほうがいいです。
342 名前:デフォルトの名無しさん [2007/07/19(木) 12:25:21 ] 授業単元:プログラミング 問題文(含コード&リンク): 環境 OS:Windows xp コンパイラ名とバージョン:ボーランド 言語:C 期限: その他の制限: テーマ:ポインタの利用 英文字の単語の出題をカウントしなさい 英文字に含まれる単語数は10以下とする ポインタ配列を使用する char english[] = "My name is Taro.Your name is Hanako."; 実行画面 My:1 name:2 is:2 Taro:1 Your:1 Hanako:1
343 名前:デフォルトの名無しさん [2007/07/19(木) 12:28:13 ] 授業単元:プログラミング 問題文(含コード&リンク): 環境 OS:Windows xp コンパイラ名とバージョン:ボーランド 言語:C 期限: その他の制限: テーマ:ユーザ関数の作成 問題1:2値の最大を求めるユーザ関数を作成しなさい プロトタイプ宣言:int Max(int dt1,int dt2); 実行画面 数値1を入力==>10 数値2を入力==>15 大きい値:15
344 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 12:50:24 ] >>343 #include <stdio.h> int Max(int dt1,int dt2); int main(void) { int a,b,c; printf("数値1を入力==>"); scanf("%d",&a); printf("数値2を入力==>"); scanf("%d",&b); printf("大きい値:%d",Max(a,b)); return 0; } int Max(int dt1,int dt2) { return dt1>dt2 ? dt1 : dt2; }
345 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:04:30 ] >>341 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4674.txt これでどうかな
346 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:25:20 ] >>345 たとえば 1 +2 -3 *4/ 5 1と2の入れ換えで結果が重複して120の半分の60通りになり 3と4の入れ換えで結果が重複して60の半分の30通りになりそうなので あっていると思います。 ありがとうございました。 ちなみにこれは算数オリンピックの第一問です。
347 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:31:01 ] >>346 aとb、cとdの値に順序性を持たせた。 宿題ではないのか?
348 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:42:23 ] >>347 それをC言語でとかせる宿題です。
349 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:42:49 ] >>337 です。 聞いてみたところどうもfor文を使うらしいのですがどこに使えばいいのか分かりません よろしくお願いします。
350 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:47:18 ] >>337 >>349 int a[12]; int i; for(i = 0; i < 11; i++) a[i] = i; a[11] = 0; for(i = 0; i < 11; i++) a[11] += a[i];
351 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:48:00 ] >>337 です。 たびたびすみません。 先ほどの問題でデバックの結果がa[11] = a[0]+a[1]+a[2]+…+a[10]と表示できればいいそうです。 よろしくお願いします
352 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:51:54 ] printf("a[11] = %d\n", a[11]);