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/
632 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 11:16:21 ] そうだよ☆ でもmainだけは戻り値がいらなくてもintにするのが習慣みたいね
633 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 11:19:41 ] >なぞなぞ また1つ賢くなった、ありがとう
634 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 11:23:57 ] >>632 お前は要らないかもしれないけど、システムにとって必要だよ。
635 名前:519 [2007/07/22(日) 11:35:30 ] あと . と , は直してアップしたつもりでした
636 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 11:37:10 ] >>622 #include <stdio.h> int main(void) { int i; for(i = 1; i < 100; i++) printf("%ld\t", i%4*2 + i/4*10 + (i < 4 ? 0 : 20)); return 0; } 英語のなぞなぞって何?
637 名前:617 mailto:sage [2007/07/22(日) 13:34:20 ] 解答ありがとうございました 参考にさせていただきます!
638 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 15:14:48 ] >>632 習慣じゃなく規格で決まっている。
639 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 15:50:54 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 行列のサイズ n, m, l と,それに応じた n×m, m×l の行列が記録されたファイルを食べて,結果を別のファイルに書き出そう. %cat testfile 3 2 3 3.2 4.8 8.2 6.5 4.3 -2.2 -5.0 6.2 8.9 3.5 -0.2 -5.8 であるとする.3×2, 2×3の行列の積をとり,3×3の行列を得る事になる.そこでプログラムを開発して、 % ./prog0 testfile ANSWER とすれば,積が ANSWER というファイルに書き込まれるようにせよ.argv[], argc, fscanf(), fprintf() を総動員する. [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/25まで よろしくおねがいしますm(_ _)m
640 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 15:51:45 ] argv[], argc, fscanf(), fprintf() を総動員する. ワロタ
641 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 16:07:42 ] >>639 もうマジで日本語でおk
642 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 16:11:50 ] 入力テキストは n m l 行列1 行列2 って形式なんだろう
643 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 16:31:25 ] >結果を別のファイルに書き出そう. >そこでプログラムを開発して、 出題者はどういうノリなんだ。
644 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 16:35:10 ] >>639 #include <stdio.h> #define N 128 int main(int argc, char *argv[]) { FILE *fpin, *fpout; int n, m, l, i, j, k; double mat1[N][N], mat2[N][N], mat3[N][N]; if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) return 1; fscanf(fpin, "%d%d%d", &n, &m, &l); for(i = 0; i < n; i++) for(j = 0; j < m; j++) fscanf(fpin, "%lf", &mat1[i][j]); for(i = 0; i < m; i++) for(j = 0; j < l; j++) fscanf(fpin, "%lf", &mat2[i][j]); for(i = 0; i < n; i++){ for(j = 0; j < l; j++){ mat3[i][j] = 0; for(k = 0, mat3[i][j] = 0; k < m; k++) mat3[i][j] += mat1[i][k]*mat2[k][j]; fprintf(fpout, "%f ", mat3[i][j]); } fprintf(fpout, "\n"); } fclose(fpin), fclose(fpout); return 0; }
645 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 16:36:27 ] 学校行けよ
646 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 16:45:22 ] 今時期は夏休み返上で赤点補習かな
647 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 16:53:38 ] >>644 出来ました。ありがとうございますm(_ _)m
648 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 17:39:10 ] はしかのせいで補習のやつが多そうだな
649 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 17:46:05 ] なるほど、失速しないのはその影響か。
650 名前:デフォルトの名無しさん [2007/07/22(日) 18:52:14 ] 行列matの転置行列を求めて次のように出力するプログラムを完成させよ。 | 1 6 11 16 21 | | 2 7 12 17 22 | | 3 8 13 18 23 | | 4 9 14 19 24 | | 5 10 15 20 25 |
651 名前:デフォルトの名無しさん [2007/07/22(日) 18:52:45 ] #include <stdio.h> #define MSIZE 5 void swap(int *a, int *b) { int c; (a) = *a; *a = *b; *b = (a) ; } void main(void) { int i, j, mat[MSIZE][MSIZE] = { { 1, 2, 3, 4, 5}, { 6, 7, 8, 9,10}, {11,12,13,14,15}, {16,17,18,19,20}, {21,22,23,24,25} }; for(i = 0; i < MSIZE - 1; i++) { for(j = (b) ; j < (c) ; j ++) { swap( (d) , (e) ); } } for(i = 0; i < MSIZE; i ++) { printf("|");/25小計 for(j = 0; j < MSIZE; j ++) { printf("%3d ", mat[i][j]); } printf(" |\n"); } } さっぱりわかりません よろしくお願いします
652 名前:デフォルトの名無しさん [2007/07/22(日) 18:53:43 ] あるカップラーメンの値段を店ごとに調べた.それを配列に 入れて,下の出力のように10円刻みに分布をとることを考える. そのためのプログラムを下に示す.空白を補え. 80- 89円: 2 90- 99円: 2 100-109円: 1 110-119円: 2 120-129円: 1 130-139円: 2
653 名前:デフォルトの名無しさん [2007/07/22(日) 18:55:33 ] #include <stdio.h> #define C_NUM 6 void makedist(int a[10], int b[C_NUM]) { int i; for(i = 0; i < 10; i ++) { b[ (a) ] += 1; } } void main(void) { int price[10] = {80, 120, 111, 130, 139, 95, 98, 89, 105, 119}; int dist[C_NUM], i; for(i = 0; i < C_NUM; i++) { dist[i] = (b) ; } makedist( (c) , dist); for(i = 0; i < C_NUM; i++) { printf("%3d-%3d円: %3d\n", (d) , (e) , dist[i]); } } これもさっぱりです・・・ 教えてください
654 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 18:58:12 ] >653 (a)a[i]/10-8 (b)0 (c)price (d)80 + i * 10 (e)89 + i * 10
655 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 19:08:49 ] >>650-651 a:c b:0 c:i d:mat[i][j] e:mat[j][i]
656 名前:655 mailto:sage [2007/07/22(日) 19:10:03 ] 訂正 d:mat[i][j]→&mat[i][j] e:mat[j][i]→&mat[j][i]
657 名前:655 mailto:sage [2007/07/22(日) 19:20:36 ] 何度も済まん… >>650-651 a:c b:0 c:i+1 d:&mat[i+1][j] d:&mat[j][i+1]
658 名前:デフォルトの名無しさん [2007/07/22(日) 19:23:54 ] ありがとうございます!!
659 名前:デフォルトの名無しさん [2007/07/22(日) 19:29:39 ] 与えられた正数aの逆数1/aを,除算を用いずに求めるアルゴリズムを ニュートン法によって作りたい. ただし,初期値x0は十分に解に近いところから出発するものとする. 次の[1]から[4]の空欄(a)から(f)を埋めよ. [1] ニュートン法でaの逆数1/aを求めるためには f(x)=(a)のゼロ点を求めればよい. [2] [1]の式に対して,ニュートン法による第n+1回目の反復による値Xn+1は, 第n回目の反復による値Xnを用いて Xn+1=(b)と表される.
660 名前:デフォルトの名無しさん [2007/07/22(日) 19:30:11 ] [3] [2]で示した反復によるアルゴリズムを実現すると次のようになる. #include <stdio.h> void main(void) { double u, v; int i; printf("正数を入力して下さい.\n"); scanf( (c) ); printf("逆数に十分近い初期値を入力して下さい.\n"); scanf( (d) ); for(i = 0; i < 3; i ++) { u = (e) ; printf("%5.3f\n", u); } } [4] [3]で作ったプログラムを実行し,「3」,「0.5」の順に入力した際に for文の中のprintf関数による出力結果をすべて示すと次のようになる. (f)
661 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:37:35 ] >>659 (a) 1/x - a {x = 1/a → 0 = 1/x - a だから} (b) Xn*(2-a*Xn) {Xn-f(Xn)/f'(Xn) →Xn-(1/Xn-a)/(1/(-Xn*Xn))だから} (c) "%lf",&v (d) "%lf",&u (e) u*(2-v*u) (f) 0.5 0.250 0.332
662 名前:デフォルトの名無しさん [2007/07/22(日) 20:37:52 ] 関数myreplaceを使って実際に文字列を変換させるプログラムを作成したところ, 出力結果(1)は「tuat」となった. 空欄(a)〜(f)を埋めて次のプログラムを完成させ, 出力結果(2)を空欄(g)に記入せよ.
663 名前:デフォルトの名無しさん [2007/07/22(日) 20:39:44 ] #include <stdio.h> (a) ; void main(void) { char code[16] = "GHIGFACDFDBA"; char ret[16] = ""; myreplace(" (b) ", ret); printf("%s\n", ret); ・・・出力結果(1) myreplace(code, ret); printf("%s\n", &ret[5]); ・・・出力結果(2) } void myreplace(char org[ ], char ret[ ]) { char string1[16] = (c) ; char string2[16] = "v)(^e_tua"; int i, j; for(i = 0; org[i] != (d) ; i ++) { for(j = 0; string1[j] != (d) ; j ++) { if(org[i] == string1[j]) { (e) } } } (f) /* 終端記号 */ } 出力結果 (g)
664 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:42:23 ] >>659 訂正 (f) 0.250 0.313 0.332
665 名前:デフォルトの名無しさん [2007/07/22(日) 21:04:07 ] [1] 授業単元: [2] 問題文(含コード&リンク): 2 つのchar 型配列x[],y[] に格納された文字列を入れ替えるプログラムを作成せよ. ただし入替え処理には,関数swap array(char *,char *) を作成して用いること. % ./test 入替前のx: "abcdefgh" 入替前のy: "ABC" 関数swap_array() を呼び出しました 入替前のx: "ABC" 入替前のy: "abcdefgh" % [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc 3.4) [3.3] 言語: (C) [4] 期限: (07月23日00:00まで) [5] その他の制限:ポインタまで習ってます よろしくおねがします
666 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 21:05:33 ] >>650 マルチ必死だな(´,_ゝ`)プッ
667 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 21:39:34 ] >>662 なんかヤな問題だな。回答は複数あるけどたぶん↓ (a) void myreplace(char org[], char ret[]); (b) GHIG (c) "ABCDEFGHI" (d) '\0' (e) ret[i] = string2[j]; (f) ret[i] = '\0'; (g) v(^_^)v
668 名前:デフォルトの名無しさん [2007/07/22(日) 22:05:25 ] [1] 授業単元: [2] 問題文(含コード&リンク): 1start で示されるアドレスからlength バイト分だけの領域に関して, 値val で埋める関数cmemset(char*start, int value, int length) を作成せよ. さらに,malloc() 関数を用いてchar 型配列のメモリ領域を確保し, cmemset() が正確に動作することを確認 (メモリ領域の内容を整数値として表示)するプログラムを作成せよ. %./kadai 4 -89 0 1 5 43 ... 112 ← cmemset 使用前 0 0 0 0 0 0... 0 ← 0 で埋めたとき 88 88 88 88 88 88 ... 88 ← 88 で埋めたとき % 2src で示されるアドレスからlength バイト分だけの領域を,dest で示される領域へコピーする関数 cmemmove(char *dest, char *src, size t length) を作れ.なお,送り元の領域と送り先の領 域がオーバーラップしていても,正しくコピーできる仕様にせよ.さらに,malloc() 関数を用いて char 型配列のメモリ領域を確保し,cmemmove() が正確に動作することを確認(メモリ領域の内容を 整数値として表示)するプログラムを作成せよ. % ./kadai 1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 ← cmemmove 実行前 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を10 番目へ 1 2 3 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を3 番目へ % [3] 環境 [3.1] OS: (Linux3.2) [3.2] コンパイラ名とバージョン: (gcc 3.4) [3.3] 言語: (C) [4] 期限: (07月23日まで) [5] その他の制限:おねがいします
669 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:24:59 ] char配列埋めるのにvalueはintかよ
670 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:27:26 ] 標準のmemset()もそうでしょ
671 名前:デフォルトの名無しさん [2007/07/22(日) 22:41:46 ] わかる方でいいのでおねがいします
672 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:43:25 ] 何を?
673 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:43:59 ] どれを?
674 名前:671 mailto:sage [2007/07/22(日) 22:45:03 ] すみません全部忘れてました 村上ファンド事件についてインサイダー取引という単語を用いて100字以内にまとめよ です
675 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:47:02 ] he is very very bad
676 名前:デフォルトの名無しさん [2007/07/22(日) 22:51:21 ] 665と668です
677 名前:671 [2007/07/22(日) 23:03:48 ] 本当に誰か答えてください><
678 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 23:11:30 ] >>665 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4711.c ココの人、みんな"わかる方"だからさ。そういう言い方なんか違うと思うよ。
679 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 23:16:22 ] Linux3.2 うひょ
680 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 23:31:17 ] char *cmemset(char *start, int value, int length) { const unsigned char ch = value; while(num--) *ptr++ = ch; return start; } char *cmemmove(char *dest, char *src, size t length) { while(length--) *(dest+length) = *src; return dest; }
681 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 23:34:45 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4712.zip [3] 環境 [3.1] OS: (Mac) [3.2] コンパイラ名とバージョン: (gcc 3.4) [3.3] 言語: (C) [4] 期限: ([2007年7月23日9:00まで] ) [5] その他の制限:問題文、プログラム内で使うデータファイル、自分で作ったソースをzipにしました 何故動かないのかわからないのでご教授下さいませ
682 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 23:35:25 ] メモリコピーはアドレスの大小関係で 昇順、降順を切り替えないとおかしなことになるよ
683 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 23:45:59 ] >>681 その汚いソースをなんとか動くようにしてくださいっていうなら絶望的だな どっかしらでsegmentation faultが起きてるから頑張って探しな
684 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 23:52:08 ] >>679 大分未来からお越しのようですね
685 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 00:14:45 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):整数集合 { 1, 2, 3, 4, 5 } と { 2, 4, 6 } の 共通集合を求め、表示するプログラム 集合をリストを用いて実現し、emptySet, inSet, addElem, intersection, printSet, freeSet を リストを用いた集合操作に変更しなさい。 コード:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4713.c [3] 環境 [3.1] OS: Linux [3.2] gcc [3.3] 言語: C [4] 期限: 2007/7/25 15:00 プログラムのコード自体はやってる最中なのでめちゃくちゃですが気にしないでください。 コンパイルは特にエラーもなく通ります。 実行したあと %./a.out と出るだけでそこから何も起きません。 無限ループに陥ってる可能性を考えてmain関数内にprintfを設置しました。 コードを見てもらえばわかるのですが、main関数内の2行目に配置したprintfすら実行されません(1行目はint型の変数宣言)。 これはmain関数が実行されていないということでしょうか? 原因解明お願いします。
686 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 00:16:28 ] >>681 enter と enter2 で xtopx->child1 や xtopx->child2 が使われているけど xtopx 自体が初期化されていない気がする
687 名前:デフォルトの名無しさん [2007/07/23(月) 00:17:31 ] >>680 もう少しヒントをください
688 名前:685 mailto:sage [2007/07/23(月) 00:19:53 ] すいません。捕捉です。 このプログラムは、元は配列を用いて集合を実現してました。これをリスト構造に改編しろ。 という問題です。
689 名前:686 mailto:sage [2007/07/23(月) 00:27:52 ] >>681 あとグローバルでstruct member **result; が宣言されているのに search および search2 で ローカルで struct member **result; が宣言されている ローカル側のresult;に代入しているから result=(struct member **)malloc(sizeof(struct member *)*(MEMBER_MAX+1)); で確保した領域が保存されていない.returnで戻しているけどmain でその戻り値保存していないし というかこのresultのポインタリストはどこで使われているのだろうか?
690 名前:デフォルトの名無しさん [2007/07/23(月) 00:32:12 ] 最近のCって型定義に変数宣言しても通るの?
691 名前:デフォルトの名無しさん [2007/07/23(月) 00:34:02 ] 間違えた ×型定義に ○型定義前に 普通は構造体定義してから変数宣言だよね?
692 名前:686 mailto:sage [2007/07/23(月) 00:35:39 ] >>681 がすでにいない気もするけど >>681 Top1 と Top2 は 0 か NULL で初期化されていないので enter と enter2 の if(!Top1){ } が実行されずに top=Top1; while(top){ } で失敗する可能性がある (HDDから怪しい音が・・・こわい)
693 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 00:42:08 ] >>685 int inSet(ElementP s,int v){/*変更可*/ while(s->next!=NULL){ if(s->data==v){ return 1; } } return 0; } ここで無限ループしてる
694 名前:デフォルトの名無しさん [2007/07/23(月) 00:46:51 ] >>680 もう少し補足していただくと・・・
695 名前:685 mailto:sage [2007/07/23(月) 00:46:57 ] >693 指摘ありがとうございます。 しかし、修正してみたものの症状変わらず・・・。
696 名前:681 mailto:sage [2007/07/23(月) 00:47:46 ] >>692 すいません、プログラムと睨めっこしてました ちょっといじってみます、また何かあったらご教授いただけると幸いです
697 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 00:48:48 ] while(p->next!=NULL) { if(p->data < val->data) val=p; p=p->next; } ここでも無限ループしてる
698 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 01:04:24 ] >>685 流し読みだけど、ElementP emptySet(){ return NULL; }で。 やり方は他にもあるけど、少なくとも次がない=空じゃないです。そうすると mallocは、s==NULLのとき、addElemでして、return sってことになるかと。 void addElem(ElementP s,int v) → ElementP addElem(ElementP s,int v) ですね。あと、freeSetが最初しか開放してないから再帰でnextたどってく感じで。
699 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 01:17:33 ] >>680 int main()内が分かりません 助けてください><
700 名前:685 mailto:sage [2007/07/23(月) 01:31:09 ] >697 すいません、どこで無限ループなのかわからないです。 >698 その方法もやってみます。 freeSetの件も修正してみます。
701 名前:685 mailto:sage [2007/07/23(月) 02:00:10 ] どうやら環境の差のようです。Windowsで実行したところ正常に動きました。 いろいろとありがとうございました。
702 名前:681 mailto:sage [2007/07/23(月) 02:01:28 ] >>681 ですが、アドバイスをいただいて直してみましたがうまくいきません アップしたソースの不都合な所はばっさり変更しても良いので、 なんとか動くように訂正お願いします
703 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 02:04:14 ] 環境の差なわけねえwww
704 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 02:18:42 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): [プログラム説明] 2桁の16進数('41'〜'49'、 '50'〜'59')を入力すると対応する文字を表示する。 ただし、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒン ト:入力は一つの数値か、二つの文字か?) 実行結果 2桁の16進数('41'〜'49'、 '50'〜'59')を入力してください:53 文字コード「53」文字は「S」です。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC [3.3] 言語: C++ [4] 期限: ([明日の朝まで] または [無期限] のいずれか) [5] その他の制限: printf() scanf()を最近習いました
705 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 02:27:40 ] >>704 #include <stdio.h> int scan_ascii(){ int c1,c2; printf("2桁の16進数('41'〜'49'、 '50'〜'59')を入力してください:"); scanf("%c%c", &c1, &c2); return (c1<<4 + c2); } int print_ascii(int c){ printf("文字コード「%d」文字は「%c」です。\n", c, c); } int main(){ print_ascii(scan_ascii()); return 0; }
706 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 02:34:50 ] すいません、returnとasciiは習ってないです・・・ でもありがとうございます!1原型ができました
707 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 02:40:08 ] >>702 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4715.c
708 名前:707 mailto:sage [2007/07/23(月) 02:42:00 ] アンカー間違えた >>702 じゃなくて >>701 だった
709 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 03:09:46 ] >>420 まだ全然わからないんでお願いします
710 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 03:28:43 ] \n n番目に表れた\(...\)の中の文字列にマッチ (nは1から9の整数) が意味わからね 方針として入力文字列を"トークン"列に変換してから置換処理がクレバーじゃね? struct toknの設計がつぼおおおぉおおおおぉおぉおぉおおおおおおおおおおおあおあさだおssd
711 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 03:44:20 ] \nの前の正規表現を\( \)で囲っておくとあとで呼び出せるってやつです ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE \([asdf]\)\(fty\)\([frty]\)\(t\)\3 で aftytterをチェックした場合 \3はtと同じです system()からsed呼び出して同じ動作するものは作れたんですけど、それだと題意にあわないんで・・・
712 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 10:36:35 ] >>530 返事が遅くなってすいません。>>530 に書いてあるものを使ってpop,pushを使い たいです。+-*/は数字の大きさで表したいです
713 名前:デフォルトの名無しさん [2007/07/23(月) 11:05:05 ] [1]授業単元:プログラミング技術III [2]問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4718.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ: gcc [3.3] 言語: C [4] 期限:7/24まで [5]その他の制限:特になし よろしくお願いします
714 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 11:12:26 ] >>712 は、自分が書いた文を自分で理解できるのか?
715 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 11:51:28 ] \(\(c\)b\)d\) の場合"2"番目は何を意味する? \([ab]\)\1の場合 aa と bb にはマッチするが ab にはマッチしないと理解して良いのか? (否なら単に[ab][ab]と記述すればいいしなクソ) それとこれ本当に宿題か? \nさえなけりゃ理論的な意味の正規表現についての良問だと思うが \nの性で劇的に難しくなってね? お前何科の何年生? あるいは問題間違ってねえ?
716 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:02:40 ] [1] 授業単元:C++実習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4719.txt プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した 2つのプログラムの作成をお願いします。 [3] 環境 [3.1] OS: windows XP [3.2] visual studio 2005 [3.3] 言語: C++ [4] 期限: 2007/07/26 13:00まで [5] その他の制限: 特に無し よろしくお願いします
717 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:18:51 ] \(\)って入れ子にはしないんじゃないか
718 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:25:06 ] [1] 授業単元:C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4721.txt [3] 環境 [3.1] OS: windows XP [3.2] bcc32 [3.3] 言語: C [4] 期限: 2007/07/23 13:00まで [5] その他の制限: 特に無し
719 名前:デフォルトの名無しさん [2007/07/23(月) 13:06:20 ] >>715 問題文には正規表現の各表現の説明があった後に . * [abc…]、\が使えるようなプログラムを実装せよとかかれてました ちなみに2回のC初心者向けの演習です 期末レポートなんですが、人によって問題が違って明らかにはずれくじをひいたっぽいですorz
720 名前:デフォルトの名無しさん [2007/07/23(月) 13:08:52 ] あと、正規表現では括弧の入れ子は外から順に数えていくはずです
721 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 13:54:35 ] 二回で正規表現の実装かよ Perlとかでならまだしも・・・
722 名前:デフォルトの名無しさん [2007/07/23(月) 14:02:30 ] ほかの人の課題は1時間とかで終わるのもあるんで、\n入れると難易度極端に変わるなら、実はそれ無しかもしれないです
723 名前:デフォルトの名無しさん [2007/07/23(月) 14:06:51 ] 出題者は、正規表現の複雑な仕様を完全に実装しろと言っている訳ではないよね。 単純なパターンチェックと置換を実装すればいいんじゃないの?
724 名前:デフォルトの名無しさん [2007/07/23(月) 14:09:17 ] [1] 授業単元:C++ [2] 問題文(含コード&リンク): クラスcomplexのメンバ関数で、複素数の絶対値を与える関数を新たに作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: CC [3.3] 言語: C++ [4] 期限: [無期限] [5] その他の制限: 特になし よろしくおねがいします。
725 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 14:15:43 ] >>716 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4722.cpp
726 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 14:16:34 ] (含コード&リンク): のくせになんにも貼られてないってどうよ
727 名前:デフォルトの名無しさん [2007/07/23(月) 14:26:47 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):正の整数を入力し1からその数までの間に素数がいくつあるのか数えるプログラムを作れ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++ [4] 期限:7月中 [5] その他の制限:特にないです。 よろしくお願いします。
728 名前:デフォルトの名無しさん [2007/07/23(月) 14:30:37 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): nを入力してs=1/1-1/3 + 1/5-1/7 + 1/9....+(-1)^n-1/(2n-1) の和を求めるプログラムを作れ。nが大きくなるにつれてs*4がどうなるか [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++ [4] 期限:7月中 [5] その他の制限:特にないです。 問題が難しくて困っています。 お願いいたします。
729 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 14:35:16 ] double s; int i,n,j; printf("n: "); scanf("%d", &n); j = 1; for(i = 0; i < n; i++) { s += j/(2n-1); j = -j; } printf("s = %lg\n", s);
730 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 14:57:03 ] これはひどい
731 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 14:58:48 ] #include<stdio.h> int main(){ double s=0; int i,n,j=1; printf("n: "); scanf("%d", &n); for(i = 1; i <= n; i++) { s += (double)j/(2*i-1); j = -j; } printf("s = %lg\n", s*4); return 0; }
732 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 15:33:33 ] 設問的にはcout/cinじゃまいか