1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)] あなたが解けない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++の宿題を片付けます 90代目 pc11.2ch.net/test/read.cgi/tech/1181802185/
367 名前:デフォルトの名無しさん [2007/06/27(水) 16:43:31 ] >>365 早速ありがとうございます! 助かりました
368 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:03:56 ] >>367 すまん。補充しない日も補充費を計上してたので修正。 >>366 のレスで気づいたw kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4426.txt
369 名前:デフォルトの名無しさん [2007/06/27(水) 17:12:05 ] >>368 ありがとうございます! こちらこそスイマセンでした
370 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:12:47 ] さらにすまん。 - cost_sum += 15000; + if (supply > 0) cost_sum += 15000; 吊ってくる。
371 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:20:38 ] 二分木を表示するプログラムについて教えてください。 なんらかの木を作ったあと、その木へのポインタを引数にして 木を表示したいと思っています。単純にデータだけを、行きがけ順などで 表示するのではなくぱっと見で木とわかるようなものがいいです。 よろしくお願いいたします。
372 名前:デフォルトの名無しさん [2007/06/27(水) 17:31:29 ] >>370 いえいえ、とんでもないです! 頼んでいるのは私の方なんですから
373 名前:デフォルトの名無しさん [2007/06/27(水) 18:45:07 ] fmod()を使って10進数を2進数に変えたいんです。C++ なかなかうまくいかなくて
374 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 18:58:52 ] >>371 graphviz用の入力ファイル(ただのテキスト)を作るのが楽かも ↓みたいな感じで でも、宿題だとそれじゃ不可かな #include <stdio.h> typedef struct node { char *label; struct node *left, *right; } node; void tprint(node *n) { if (!n) return; if (n->left) printf("%s -> %s;\n", n->label, n->left->label); if (n->right) printf("%s -> %s;\n", n->label, n->right->label); tprint(n->left); tprint(n->right); } int main() { struct node tree[] = { { "a", &tree[1], &tree[2] }, { "b", &tree[3], &tree[4] }, { "c", &tree[5], &tree[6] }, { "d", &tree[7], 0 }, { "e", 0, &tree[8] }, { "f", 0, 0 }, { "g", 0, 0 }, { "h", 0, 0 }, { "i", 0, 0 } }; printf("digraph test {\n"); tprint(&tree[0]); printf("}\n"); }
375 名前:デフォルトの名無しさん [2007/06/27(水) 19:01:31 ] あの・・・ >>354 をお願いできますか?
376 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:05:51 ] ヾヽ'::::::::::::::::::::::::::'', / 時 .あ ま ヽ ヾゝ:::::::::::::::::::::::::::::{ | 間 .わ だ | ヽ::r----―‐;:::::| | じ て | ィ:f_、 、_,..,ヽrリ .| ゃ る | L|` "' ' " ´bノ | な よ | ', 、,.. ,イ ヽ い う / _ト, ‐;:- / トr-、_ \ な / , __. ィイ´ |:|: ヽ-- '.: 〃 `i,r-- 、_  ̄ ̄ 〃/ '" !:! |:| :、 . .: 〃 i // ` ヽヾ / / |:| ヾ,、` ´// ヽ !:! '、` ! |:| // ヾ==' ' i i' |:| ', | ...:// l / __ , |:|::.. | とニとヾ_-‐' ∨ i l ' l |< 天 ヾ,-、_: : : .ヽ と二ヽ` ヽ、_::{:! l l ! |' 夂__ -'_,ド ヽ、_}-、_:ヽ
377 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:08:37 ] >>373 なんでfmod()使わないといけないの?
378 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:04:00 ] >>359 中途半端になってしまった kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4428.txt
379 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:07:46 ] >>362 >>308 >>341 の3つめのreturn 0; の前に free(mvt); を忘れとった・・・もう見てへんよな・・・まぁ良いっか・・・ 知〜らねっ ^^;
380 名前:デフォルトの名無しさん [2007/06/27(水) 20:51:20 ] fmod()を使うよう指定されました(泣)
381 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 21:13:32 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 下記のプログラムで a[3][3] = {{2.4, -3, 6.1}, {-1.1, 2, 3.5}, {0.5, 0, 3.2}} b[3][3] = {{1.9, -4.7, 2.5}, {2, 0.9, 5.4}, {2.7, 0.6, 3.5}} c[3][3] = {{-2, -3.5, 0}, {1.4, 7.3, -1}, {2.1, 0.4, 6.2}} に置き換えたとき、この要素で与えられる行列を求め出力するプログラムを作成せよ。 #include <stdio.h> int main(void) { int i, j, n; double b[3][3] = {{3.2, -1.5, 3.9}, {3.8, 4, -1.8}, {1.9, -3, 0}}; double c[3] = {-5, 2.7, 1.5}; double a[3] = {1, 5.1, 6.2}; n = 3; for (i=0; i<n; i++) { for (j=0; j<n; j++) { a[i] +=b[i][j] * c[j]; } printf("y[%d]=%f\n", i, a[i]); } return 0; } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland [3.3] 言語: C [4] 期限: 6月30日16:30まで すみません、よろしくお願いします。
382 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:50:20 ] >>371 どっかの木構造を解説してるサイトにあったのをパクったやつ typedef struct tagTree{ int no; struct tagTree *left, *right; }Tree; void PrintTree(Bin *root, int depth) { depth++; if (root != NULL) { int i; PrintTree(root->left, depth); for (i = 0; i < depth; i++) printf(" "); printf("%3d\n", root->no); PrintTree(root->right, depth); } } mainで呼ぶときはdepthを0にすればおk
383 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:53:56 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): getchar関数を使用し、コマンドラインからの数字を10回入力し、 入力の中でもっとも大きな数字を表示しなさい。 ※入力桁数のエラーについて対処する事 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: CPAD、LSI C-86 Ver 3.30 [3.3] 言語: C [4] 期限: できれば今週中 すみません、どなたか分かる方、よろしくお願いします。
384 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:57:07 ] >>383 実行例くらい書いてくれ。
385 名前:382 mailto:sage [2007/06/27(水) 23:00:19 ] >>382 しまった…… typedef struct tagBin{ int no; struct tagBin *left, *right; }Bin; に修正plz
386 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:22:21 ] >>384 すいません。恥ずかしくてのせてませんでした。 初心者のため、おかしい点等をびしびしあげていただければと思います。 #include <stdio.h> #include <stdlib.h> void hikaku(int *pX,int *pY); int main(void){ int x= 0; int y,i,j; char str[100]; printf("数字を入力してください。\n"); for(i=1 ; i < 11; i++){ for(j=0; str[j-1] != '\n'; j++){ str[j] = getchar();} if(j-1 >= 5){ printf("5桁以上は入力桁数エラーです。0にします。\n");} else{y = atoi(str); if(y == 0 && str[0] != '0'){ printf("数字以外は入力できません。0にします。\n");} else {hikaku(&x ,&y);}}} printf("最大値は%dです。\n",x); return 0;} void hikaku(int *pX,int *pY){ if(*pY > *pX){ *pX = *pY;}}
387 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:25:02 ] >>386 それは実行例じゃないだろ
388 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:26:12 ] >>386 それができていてなぜ質問したん?w
389 名前:デフォルトの名無しさん [2007/06/28(木) 00:19:51 ] 簡単やん
390 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:22:52 ] >>355 をお願いしたいのですが
391 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:40:33 ] >>390 while(j>=0 && x[j]>t) { を while(j>=0 && x[j]<t) { に変更するだけじゃ駄目かな? inp1.datとか用意するのだるいからまともに見てないけど
392 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:50:17 ] >>387 すいません、実行例とは何でしょうか? >>388 自分でここまでは作ったのですが、最初にアルファベットを打ったときなど 特殊な対応が出来ません。また、全く自信がないためです。
393 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:54:23 ] 今、コンパイルが出来ない環境なので確認できないのですが、いまいち右からつめる 降順の解釈の仕方がわからないんです。 左を右に、昇順を降順にしなくてはいけないので、while(j>=0 && x[j]<t) {の変更 だけでは出来ないと思うのですが。
394 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:56:53 ] >>392 実行例は例えばこのプログラムを実行するとこういう出力になって欲しいんですよ、的な内容。 入力に関しては、一回charに入れた時点で数字かどうか判定すれば? どの程度のレベルかわからんが、学校授業で4月開始なら上等なレベルかと。
395 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:00:55 ] >>392 こんなのはどうかな。 #include <stdio.h> #include <ctype.h> int main(void) { int c, max = -1, m, n, nc = 0, f, sign = 1; while ((c = getchar()) != EOF) { if (isdigit(c)) { n = f = 0; do { if ((m = n * 10 + c - '0') < n) f = 1; n = m; } while ((c = getchar()) != EOF && isdigit(c)); ungetc(c, stdin); if (f) puts("桁あふれしますた"); else { n *= sign; printf("%d\n", n); if (n > max) max = n; if (++nc == 10) break; } } else if (c == '-') { sign = -1; } else sign = 1; } if (max != -1) printf("最大値: %d\n", max); return 0; }
396 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:10:04 ] >>393 ああ、右からつめるってそういうことか 単に降順にすればいいだけかと思ってた めんどくさいからパス。せめてdatファイルがあればなぁ
397 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:16:17 ] datファイルでなくても、テキストファイルに整数を入れてinp.txtとしても大丈夫だと思うのですが。
398 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:18:19 ] >>392 ありがとうございます。 10回数字を入力して(ただし、アルファベット、空欄など数字でないやつははじく。また、小数点にも対応する) 桁数は自分で設定し(私のやつは適当に5桁)、最大値を出力する。 >>入力に関しては、一回charに入れた時点で数字かどうか判定すれば? ずばり、バッファリングの理解が甘く、そこのプログラムが打てず悩んでいます。 分かる方、どうかやり方をご教授願います。 >>392 すいません。書き忘れてしまったのですが、入力の終了はEOFではなく改行でといわれています。
399 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:19:44 ] >>398 アンカーのつけかたを覚えなさい。全部自分へのレスになってるよ
400 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:21:49 ] >>398 全て自分に安価する君に惚れたwww atoi関数に渡す前に if ( '0' <= str[ j ] && str[ j ] <= '9' ) { とかでいいんじゃない? ソースあんま読んでないから、的外れだったらスマソ。
401 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:22:13 ] >>397 それを用意するのがだるいんだ まぁやる気が無いだけなんだけどさ
402 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:22:23 ] >>399 あせってコピペしてしまいました。大変申し訳ありませんでした。
403 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:23:45 ] >>378 元のプログラムをあまり書き換えないでお願い出来ますか。 注文ばかりですいません。
404 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:28:23 ] >>400 atoiの前にif ( '0' <= str[ j ] && str[ j ] <= '9' ) { ?????? すいません意味が分かりません。どういうプログラムになるのでしょうか?
405 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:29:31 ] >>401 無理を言って申し訳ありません。 では、左からつめるを右からに書き換えるにはどうすればいいでしょうか。
406 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:39:11 ] >>405 左端が0 右端がn-1 今はj=0とかi=1からだんだん加算されていってn-1までループしているのを n-1から減算していって0までループさせればいい
407 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:47:17 ] >>355 >>405 for(i=n-2;i>=0;i--) { t=x[i]; j=i+1; while(j<=n-1 && x[j]>t) { x[j-1]=x[j]; j++; } x[j-1]=t; } てきとー まさかどこと差し替えればいいかなんか聞くなよ?
408 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:49:57 ] ttp://www.infonet.co.jp/ueyama/ip/glossary/ebcdic.html EBCDICでも0〜9は連続したコードに登録されているからおkだお ^ω^
409 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:59:50 ] >>404 ちょっと無理矢理だけど例えば、str[j] = getchar();に下に次の1文を入れてみる。 if ( (str[j] < '0' || '9' < str[j]) && str[j] != '\n' ) j--; 今回getchar関数によって入力された文字が数字じゃなければ、読み込まなかったことにする。 ただ、改行コードもはじかれちゃうのでそれはOKにしておく。 極力、今のソースに手を加えないで変更しようとしたらこんなのになってゴメン・・・orz
410 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:01:29 ] >>406 >>407 ありがとうございます。参考にさせていただきます。 もうひとつ>>359 についてお願いできますか? >>378 さんが答えて下さっているのですが、元のプログラムの値をあまり 書き換えないで欲しいのですが。
411 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 06:01:56 ] [1] 授業単元:プログラミング [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4430.txt [3] 環境 [3.1] OS:WindowsXP [3.3] 言語:c言語 [4] 期限:6月30日(木)
412 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:34:40 ] >411 (1) #include <stdio.h> #include <stdlib.h> void putchar_n(char c1, char c2, int num){ if(num <= 0){ return; } putchar(c1); putchar_n(c1,c2,num-1); putchar(c2); } int main(int argc, char* argv[]){ if(argc != 4){ return 1; } putchar_n(argv[1][0],argv[2][0],atoi(argv[3])); printf("\n"); return 0; }
413 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:44:04 ] >>411 (2) #include <stdio.h> int main(){ int i = 0; for(i = 0 ; i+31 < 126+1 ; i++){ printf("%c %d %o %x\n",i+31,i+31,i+31,i+31); if(i%8 == 7){ printf("--------------------\n"); } } return 0; }
414 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:10:46 ] >>409 ありがとうございます。 ただやってみたのですが、例えば「fsa256」や「256faj」などを入れるとそれも256として 反映されてしまいます。 何とかはじく方法があればと思うのですが・・・。
415 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:14:22 ] >>410 ですが、>>378 さんの書いてくださったプログラムをコンパイルしてみたところ、 35以上でかつ95未満の要素の数の処理は出来たのですが、countの要素の合計の処理が 0となり、うまく処理出来ませんでした。
416 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:39:07 ] getcharじゃなきゃだめなの?
417 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:46:53 ] まあそれはいいとして atoi使わずに www.bohyoh.com/CandCPP/C/Library/strtol.html 使えば済む話だと思う
418 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:55:29 ] >>415 main()だけ修正 int main(void) { int i, *x, n, size, count[11] = { 0 }, sum; setp(&x, array(&size)); for (set(&i,0); less(i,size); inc(&i)) { set(&n,div(at(x,i),10)); if (less(10,n)) set(&n,10); inc(&count[n]); } for (set(&i,0); less(i,10); inc(&i)) printf("%3d台: %d\n", mul(i,10), at(count,i)); set(&sum,0); for (set(&i,0); less(i,11); inc(&i)) set(&sum,pls(sum,at(count,i))); printf("countの要素の合計は%d\n",sum); if (eq(sum,size)) printf("総和は正しいです\n"); else printf("総和が違います\n"); for (set(&n,0),set(&i,0); less(i,size); inc(&i)) if (and(less(34,at(x,i)),less(at(x,i),95))) inc(&n); printf("35以上でかつ95未満の要素の数は%d\n", n); return 0; }
419 名前:418 mailto:sage [2007/06/28(木) 10:57:07 ] すまん、化けたか? int main(void) { int i, *x, n, size, count[11] = { 0 }, sum; setp(&x, array(&size)); for (set(&i,0); less(i,size); inc(&i)) { set(&n,div(at(x,i),10)); if (less(10,n)) set(&n,10); inc(&count[n]); } for (set(&i,0); less(i,10); inc(&i)) printf("%3d台: %d\n", mul(i,10), at(count,i)); set(&sum,0); for (set(&i,0); less(i,11); inc(&i)) set(&sum,pls(sum,at(count,i))); printf("countの要素の合計は%d\n",sum); if (eq(sum,size)) printf("総和は正しいです\n"); else printf("総和が違います\n"); for (set(&n,0),set(&i,0); less(i,size); inc(&i)) if (and(less(34,at(x,i)),less(at(x,i),95))) inc(&n); printf("35以上でかつ95未満の要素の数は%d\n", n); return 0; }
420 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:02:03 ] >>414 後から細々と注文をつけるんなら、「正しい入力」を正確に定義汁。 最初に正確に仕様を述べないから、>>1 で言う >・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 の状況に結果的にはなっている。 正規表現で言うと、 ^-?[0-9]{0,5}$ 以外はエラーと思っていいのかな。 負値はどうする?マイナスの場合の桁数の処理は?スペースも許さない? 00004 は正常?
421 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:30:41 ] -0や00や-000はどうか?という問題もある。 ^(0|[1-9][0-9]{0,4}|-[1-9][0-9]{0,3})$ こうか?
422 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:01:40 ] >>374 >>382 早速のレスありがとうございます。ためしにやってみたのですが、うまくいきませんでした。 できれば、 1 /\ / \ 2 3 /\ /\ 4 5 6 7 このように表示できたらいいです。表示するデータは3桁の整数です。 おねがいいたします。
423 名前:デフォルトの名無しさん [2007/06/28(木) 12:36:11 ] [1] 授業単元:プロC [2] 問題文(含コード&リンク): コマンドライン引数から十進整数値として解釈できる文字列のみを選び、 値が小さい順に並べ替えて、一行に一つずつ標準出力に出力するプログラムを書け。 ただし、十進整数値として解釈できる文字列とは、正規表現 ^[-+]?[0-9]+$ に マッチするものとする。 ヒント:小さい順に並べ替えるには、 qsort()が便利です。 こちらも、使い方は、manコマンドで調べることができます。 コマンドライン引数すべてについて、 含まれるアルファベットすべてを対応する大文字に置き換えて、 一行にコマンドライン引数一つずつ標準出力に出力するプログラム。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4431.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4432.c [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:今週中 [5] その他の制限: 特になしです どうかよろしくお願いします。
424 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:44:31 ] >>419 さん、>>378 さんのプログラムと変更が無いようなのですが。 コンパイルしても変わりませんでした。
425 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:48:03 ] >>423 #include <stdio.h> int main(int argc, char **argv) { FILE *fp = popen("egrep '^[-+]?[0-9]+$' | sort -n", "w"); while (*++argv) fprintf(fp, "%s\n", *argv); pclose(fp); return 0; }
426 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:50:09 ] >>424 もう一度確認してみろ。
427 名前:デフォルトの名無しさん [2007/06/28(木) 13:53:21 ] [1]単元:プログラミング技術 [2]問題文:ローダーのNo.4433にアップしました。 [3]環境 OS:リナックス コンパイラ:cc 言語:C [4]期限:できれば本日14時30分ごろまでにお願いします。 どうぞよろしくお願いします。
428 名前:デフォルトの名無しさん [2007/06/28(木) 13:54:15 ] 授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題1 文字型の配列変数mojiに設定されている文字数を答えなさい char moji[] = "ABCDEFG"; 実行画面 文字数:7
429 名前:デフォルトの名無しさん [2007/06/28(木) 13:55:39 ] 授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題1 文字列を入力して偶数番目の要素数と奇数番目の要素を別の配列に格納し、文字列として表示しなさい 実行画面 文字列入力==>ABC123def 偶数要素:AC2df 奇数要素:B13e
430 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:40:31 ] >>427 #include <stdio.h> #include <string.h> void search(char *s1, char *s2) { int i; char *p = s1; while((p = strstr(p, s2)) != NULL){ *p++ = '#'; for(i = 0; i < strlen(s1) - 1; i++) *(p + i) = *(p + i + strlen(s2) - 1); } } int main(void) { char text[1024], word[1024]; printf("Please input text : "); gets(text); printf("text = %s\n", text); printf("Please input search word : "); gets(word); search(text, word); printf("text = %s\n", text); return 0; }
431 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:44:40 ] このスレでgets()使うと袋叩きにあうよ。
432 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:45:32 ] >>427 void search(char *s1, char *s2) { while((s1 = strstr(s1, s2)) != NULL){ *s1++ = '#'; strcpy(s1, s1 + strlen(s2) - 1); } }
433 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:46:56 ] >>431 俺だって使いたかねーけど、問題文に指定してあるからな。
434 名前:デフォルトの名無しさん [2007/06/28(木) 14:54:08 ] 授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題 文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換えなさい 実行画面 文字列(m1)入力==>ABCDEFAABCDABC 削除文字==>A 置換文字==>* 結果文字列(m1):BCDEF**BCD*BC
435 名前:デフォルトの名無しさん [2007/06/28(木) 15:06:21 ] 授業単元 関数 言語 C言語 引数の階乗(1*2*3*....*n)を関数を作れ お願いします
436 名前:デフォルトの名無しさん [2007/06/28(木) 15:09:45 ] int kaijo(int a) { if(a == 1){ return 1; } return a*kaijo(a-1); }
437 名前:デフォルトの名無しさん [2007/06/28(木) 15:13:47 ] int kaijo(int a) { int i, result=1; for(i=1; i<a; i++){ result *= i; } return result; }
438 名前:デフォルトの名無しさん [2007/06/28(木) 15:14:47 ] 授業単元 関数 言語 C言語 引数の階乗(1*2*3*....*n)を返す関数を作れ の間違いでした 申し訳ありません
439 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:20:43 ] >>378 はネタだろw
440 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:21:44 ] >>422 適当だし、エクスプローラ風の樹形図になっちゃうけど、それでよければ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4434.txt
441 名前:デフォルトの名無しさん [2007/06/28(木) 15:24:36 ] 428 429何方かお願いします
442 名前:デフォルトの名無しさん [2007/06/28(木) 15:30:51 ] >>428 int main() { char moji[] = "ABCDEFG"; int i; for(i=0; moji[i] != '\0'; i++); printf("文字数:%d\n", i); }
443 名前:デフォルトの名無しさん [2007/06/28(木) 16:11:45 ] マイナスの引数でエラーを出さない平方根を返す関数を作れ C言語でお願いします
444 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:14:43 ] >>443 >>1 嫁
445 名前:デフォルトの名無しさん [2007/06/28(木) 16:23:53 ] 授業単元 関数 問題文 マイナスの引数でエラーを出さない平方根を返す関数を作れ 環境 LINUX C言語 期限 いつでも >>1 よんでおらず申し訳ありませんでした
446 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:04 ] 負の数が入ったときの動作は?
447 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:05 ] >>439 もしネタだとしたら、真面目にお願いしたいのですが。
448 名前:デフォルトの名無しさん [2007/06/28(木) 16:30:52 ] >>446 例として2の 平方根 だと 1.4142135... ー2 の 平方根 だと -1.4142135... となるようにです
449 名前:デフォルトの名無しさん [2007/06/28(木) 16:33:41 ] マイミクしてください! mixi.jp/show_friend.pl?id=3356659
450 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:00:35 ] >>448 double exsqrt(double x) { if(x<0){ x=-x; return -sqrt(x); } return sqrt(x); }
451 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:01:37 ] >>447 まじめにやってもこの程度だが kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4435.txt
452 名前:デフォルトの名無しさん [2007/06/28(木) 17:14:08 ] あ〜〜fmod()を使って10進数を2進数に変えたいんです。C++
453 名前:デフォルトの名無しさん [2007/06/28(木) 17:17:17 ] [1] 授業単元:多次元配列 [2] 問題文(含コード&リンク): 以下のステップに従って,行列表示及び演算を行う関数群を作成し,3行3列の行列A,Bのかけ算を行い,結果を表示するプログラムを作成してください.なお,行列AとBは,キーボードから値を入力するようにしてください. 1.3行3列の行列を表示する関数hyoujiを作成 (メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてhyoujiを呼び出し,内容を表示させ,動作確認を行う) 2.3行3列の行列A,Bの足し算を行い,結果を行列Cに代入する関数tasizanを作成 (メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてtasizanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う) 3.tasizanをコピー・雛形にして,3行3列の行列A,Bのかけ算を行い,結果を行列Cに代入する関数kakezanを作成 (メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてkakezanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う) 4.キーボードから3行3列の行列に見立てた配列に数値を入力する関数nyuryokuを作成 (メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてnyuryokuを呼び出し,関数hyoujiにより行列Aを表示させ,動作確認を行う) kakezanのヒント:3重ループにすると効率よくプログラムできます [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:Borland [3.3] 言語:C [4] 期限:7月10日まで [5] その他の制限:多次元配列までならってます
454 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:30:44 ] >>451 迅速な返答ありがとうございます。無事実行の確認ができました。
455 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:00:07 ] >>453 void hyouji(int array[][3]) { int i,j; for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%3d",array[i][j]); putchar('\n'); } } void tasizan(int A[][3],int B[][3],int C[][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) C[i][j]=A[i][j]+B[i][j]; }
456 名前:455 mailto:sage [2007/06/28(木) 19:04:02 ] 続き void kakezan(int A[][3],int B[][3],int C[][3]) { int i,j,k; for(i=0;i<3;i++) for(j=0;j<3;j++) for(k=0;k<3;k++) C[i][j]+=A[i][k]*B[k][j]; } void nyuryoku(int A[][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++){ printf("A%d%d:",i,j); scanf("%d",&A[i][j]); } }
457 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:04 ] [1] 授業単元:C++ [2] 問題文: メイン関数で整数numに0が入力されるまでキー入力を繰り返し実行する。 負の値も有効とし、0も有効な値とする。 入力が終了した時点での入力値の最大値上位3つと最小値下位3つを画面に出力する。 [3] 環境 [3.1] OS:窓 [3.3] 言語:C++ [4] 期限:明日 [5] その他の制限:出力にはprintf、入力にはscanfの使用 習い始めなため、出来るだけ簡単な物にしてくれると助かる。 お願いします。
458 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:46 ] >>453 #include <stdio.h> void hyouji(double a[3][3]){ int i, j; for(i = 0; i < 3; i++){ for(j = 0; j < 3; j++) printf("%4.1f", a[i][j]); printf("\n"); } } void tasizan(double a[3][3], double b[3][3], double c[3][3]){ int i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) c[i][j] = a[i][j] + b[i][j]; } void kakezan(double a[3][3], double b[3][3], double c[3][3]){ int i, j, k; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++){ c[i][j] = 0; for(k = 0; k < 3; k++) c[i][j] += a[i][k]*b[k][j]; } } void nyuryoku(double a[3][3]){ int i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", &a[i][j]); } int main(void){ double a[3][3], b[3][3], c[3][3]; nyuryoku(a); nyuryoku(b); tasizan(a, b, c); hyouji(c); kakezan(a, b, c); hyouji(c); return 0; }
459 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:46:35 ] [1] 授業単元:C言語実習基礎 [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4436.txt 数字を昇順でソートできるようにする。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C [4] 期限: 6/29正午まで [5] その他の制限: 挿入ソート、選択ソートまで習っています。
460 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:04:14 ] それはソースコードであって問題文ではない。
461 名前:デフォルトの名無しさん [2007/06/28(木) 20:43:32 ] [1] 授業単元:C++研究 [2] 問題文 あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。 このとき、0と1の並びに着目し、データを圧縮することを考える。 ここでは、0と1のそれぞれが何個連続して並んでいるかを記録することで圧縮を行う。 たとえば、digit1.datというファイルに 111110000000000000000000000001E というように0と1が並んでいるとき、 7 1 24 0 1 1 と圧縮できる。このとき圧縮結果に空白を挟むことに注意する。 上記の圧縮方法に従って、任意の0と1から成るデータを圧縮するプログラムを作成せよ。 ただしデータはリダイレクションを使用し、char型変数の1文字ずつ繰り返し世も困れるものとする。 最後には「圧縮完了」と表示のこと。 3] 環境 [3.1] OS:windowsXP [3.2] cygwin [3.3] 言語:C++ [4] 期限:明日 [5] その他の制限:C++です。よろしくお願いします
462 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:51:54 ] [1] 授業単元: プログラミング序論 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4437.txt [3] 環境 [3.1] OS: Windows [3.3] 言語: C [4] 期限: 29日まで よろしくお願いします
463 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:52:00 ] >繰り返し世も困れる 読み込まれる?
464 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:58:31 ] >>460 申し訳ありませんでした。 このソースコードを昇順でソートできるように直しなさい。 という問題です。
465 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:07:00 ] >>462 (1) #include <stdio.h> int main(void) { int array[7] = {4, 5, 0, 6, 2, 2, 4}; int i, sum = 0; for(i=0;i<7;i++) sum += array[i]; printf("%d", sum); return 0; }
466 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:14:41 ] >>461 #include <iostream> using namespace std; int main() { streambuf *sb = cin.rdbuf(); int c, cc, n; const char *sep = ""; while ((c = sb->sbumpc()) >= 0 && c != 'E') { for (n = 1; (cc = sb->sbumpc()) >= 0 && cc == c; ++n) {} sb->sungetc(); cout << sep << n << " " << static_cast<char>(c); sep = " "; } cout << "\n圧縮完了\n"; }
467 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:20:17 ] >>462 (2) #include <stdio.h> int main(void) { int array[7] = {4, 5, 0, 6, 2, 2, 4}; int array2[7] = {0}; int i; for(i=0;i<7;i++) array2[i] = array[6-i]; for(i=0;i<7;i++) printf("%d", array[i]); putchar('\n'); for(i=0;i<7;i++) printf("%d", array2[i]); return 0; }