1 名前:デフォルトの名無しさん [2008/10/30(木) 07:49:39 BE:113605834-PLT(24065)] あなたが解けない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++の宿題を片付けます 116代目 pc11.2ch.net/test/read.cgi/tech/1222813731/
403 名前:デフォルトの名無しさん [2008/11/08(土) 04:13:21 ] 質問なのですが、ここでは問題文が英語の宿題もやって頂けますか?
404 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 04:23:06 ] >>403 何度かそういうのあったよ。
405 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 04:29:47 ] >>402 #include <stdio.h> #include <string.h> int main() { char str[100], needle[50], *p; int i = 0; printf("検索対象文字列を入力:"); scanf("%s", str); printf("検索文字列を入力:"); scanf("%s", needle); printf("検索対象文字列→%s\n", str); printf("検索文字列→%s\n", needle); printf("検索結果\n%s\n", str); p = str; while(strstr(p, needle) != NULL){ if(p == strstr(p, needle)){ i++; printf("*"); } else printf(" "); p++; } printf("\n%d個発見しました\n", i); return 0; }
406 名前:デフォルトの名無しさん [2008/11/08(土) 04:30:45 ] >>403 そうなんですか。それでは英語の問題文のまま載せても大丈夫ですか? それとも和訳したほうが良いですか? あまり自分の英語力に自信ないんで変な和訳になってしまったらと思ってるのですが。
407 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 04:42:37 ] 構わん、載せろ。 多分俺はできないが。
408 名前:デフォルトの名無しさん [2008/11/08(土) 05:24:42 ] >>407 ありがとうございます。それでは載せさせて頂きます。 [1] 授業単元:C++ [2] 問題文: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7970.txt [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: Visualstudio 2005 [3.3] 言語:C++ [4] 期限:2008年11月10日 [5] xtxの中の図は自分が作って物です。図を載せようとしたのですが載せれなかったので。 わかりにくくてすいません。 英語の問題文ですがよろしくお願いします。
409 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 05:39:34 ] >>408 単なる C のプログラムになっちまったが kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7971.txt
410 名前:409 mailto:sage [2008/11/08(土) 05:41:20 ] ぐは 偶数奇数判定逆だった if(*in_val % 2 == 0) ↓ if(*in_val % 2 != 0)
411 名前:デフォルトの名無しさん [2008/11/08(土) 05:57:20 ] >>408 本当に助かりました。ありがとうございました。
412 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 06:00:05 ] うまいこと図を書くなあ。 ただのCだから今までの授業で習ったものと毛色が随分と異なる場合はばれちゃうね。
413 名前:デフォルトの名無しさん [2008/11/08(土) 07:18:54 ] >>412 図が文字化けしてましたね。すいません。 やはりCとC++とではだいぶ異なるんですか? 最近授業でプログラミング始めたばかりなんでわからないことだらけで。
414 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 07:41:14 ] すみません。ポインタが苦手なC初心者です。教えて下さい。パイプ相当の機能を つくろうとしているのですが、まずは前段として以下のようなものをつくりたいです。 例えば「./a.out "cat -n test.c" "grep a"」 と引数を与えてプログラムを実行すると、 str1[0]=cat, str1[1]=-n, str1[2]=test.c, str1[3]=NULL, str2[0]=grep, str2[1]=a, str2[2]=NULL, のように格納させたいです。つまり、argv[1]の内容とargv[2]の内容をそれぞれstrtokで空白で 区切って格納させていき、最後にNULLを入れる。思うように出来ません。宜しくお願いします。
415 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 07:54:07 ] >>413 図はエンコード指定すればだいじょうぶ。 今までの授業で教えてもらったソースコードと雰囲気が似てるならいいよ。 授業でcinとかcoutとか使わなかった?
416 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 07:55:18 ] >>414 pipe や popen 使わずにどうやってパイプ相当の機能を作るのかわからないけど kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7972.txt
417 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 08:11:34 ] シェル使えば標準入力に入ってくるからいいんじゃないの
418 名前:414 mailto:sage [2008/11/08(土) 08:11:58 ] >>416 有り難うございます。popenはわからないのですがpipeを使ってやってみようと思います。 ひょっとして全然とんちんかんなことやっているのかも知れませんがもう少しやってみて 駄目だったらまたご質問させて頂きます。
419 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 08:12:49 ] ってパイプ自体を作ろうとしてるんじゃないよね。 foo | ./a.out ってやりたいだけだよね
420 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 08:17:00 ] 作ってみた。でおじゃる、とは言わない(というと出てくるかしら) #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char *str1[10]; char *str2[10]; char **p; p = str1; *(p++) = strtok(argv[1], " "); while ((*(p++) = strtok(NULL, " ")) != NULL); for (p=str1; *p!=NULL; p++) { printf("%s\n", *p); } return 0; } インデント確認用アンカー >>420
421 名前:414 mailto:sage [2008/11/08(土) 08:19:53 ] >>417 >>419 パイプ自体を作ろうとしています。シェルだとcat -n test.c | more と打つところを、./a.out "cat -n test.c" "more"と打たせることで、 forkした親子プロセスでファイルディスクリプタなんちゃらというのを 使って(すみません勉強したてです)処理を渡すようなCプログラムを作ろうとしています。 自分の限界は恐らく1時間前後で見えてくると思いますのでしばしお待ち下さい。
422 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 08:22:39 ] アラヤダ。 そっか。がんばってねー。 またなんかあると聞くといい、、、けど宿題スレはちょと違うかもだ
423 名前:414 mailto:sage [2008/11/08(土) 08:38:11 ] 出来ました!思ったより随分あっけなく。。というか、ウェブでみっけたソースがほとんど そのまま流用出来たので。皆様、有り難うございました。 >>422 すみません。宿題は宿題なのですが、初心者なのに毎週難易度がぐんと上がるので、ある程度は 自分でやってみないと次から全くわからなくなってしまうので。。わからないところだけ小出しに 質問させて頂きました。スレに反していたら申し訳ないです。 あ、でも匿名パイプの次の宿題は名前付きパイプなのですが、こちらはちょっと読んだところ手も足も 出なそうなので、丸投げさせて頂くと思います。またちょっとしたら投稿します。ぐだぐだすみません。
424 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 08:49:57 ] 名前付きパイプはファイルの読み書きと変わらないからむしろ簡単かも
425 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 08:51:24 ] >>423 の、「でも匿名パイプの次の宿題は名前付きパイプなのです」 から察するに、pipeを使って2つのプロセスを繋げろという課題、 次の課題はsocketを使ってAF_UNIXのパイプを作って〃とみた。
426 名前:デフォルトの名無しさん [2008/11/08(土) 10:45:59 ] vectorで自分で作ったクラスをタイプとして持たせるにはどうすればいいんですか? たとえばABCとDEFという二つのクラスがあるとします。 DEFというクラスがABCから作られたオブジェクトを無制限に持つようにしたいんです。 この際にDEFのメンバやコンストラクターはどんな感じに作ればいいのでしょうか?
427 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 11:02:34 ] class DEF { std::vector<ABC> abc; }; メンバとして持たせたいなら、これだけじゃないの?
428 名前: ◆Mn9bS1g7Ng mailto:sage [2008/11/08(土) 11:15:46 ] [1] 授業単元: プログラミング実習2 [2] 問題文(含コード&リンク): ニュートン法を利用して入力データの平方根を求めるプログラムを作りなさい. -解を求めたい実数aを入力 -解を求めるための初期値x0を入力 ・なんでもよいが普通はaの平方根に近い値を入力 -ニュートン法を用いた計算 ・x1=(x0+a/x0)*0.5を計算 ・x1-x0の絶対値がe以下ならばx1が求める平方根 - eは収束判定に用いる値でここでは1.0E-10を使用する -差が-eからeの範囲に入れば繰り返し終了 -入らなければx1をx0に代入して再度繰り返してx1の計算 [3] 環境 Visual C++ [3.1] OS:Windows [3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ [3.3] 言語: C言語 [4] 期限: 2008年11月10日(月)までお願いします。 [5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数 逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、 繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=) インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)は習いました。 お願いします。
429 名前: ◆Mn9bS1g7Ng mailto:sage [2008/11/08(土) 11:21:54 ] >>428 のプログラムの実行例 平方根を求めたい数を入力してください: 5.0 ↓ 解を求めるための初期値を入力してください: 2.0 ↓ 5.000000 の平方根は 2.236068 です. 平方根を求めたい数を入力してください: 123.456 ↓ 解を求めるための初期値を入力してください: 10.0 ↓ 123.456000 の平方根は 11.111076 です.
430 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 11:36:00 ] >>428 そこまで計算式や判定法が分かってるなら、すぐに解けそうなものだけど。。。 #include <stdio.h> #include <math.h> int main(int argc, char *argv[]) { static const double e = 1.0e-10; double x0, x1, a; printf("平方根を求めたい数を入力してください: "); scanf("%lf", &a); printf("解を求めるための初期値を入力してください: "); scanf("%lf", &x0); x1 = (x0 + a/x0)*0.5; while (fabs(x1-x0) > e) { x0 = x1; x1 = (x0 + a/x0)*0.5; } printf("%f の平方根は %f です\n", a, x1); return 0; }
431 名前: ◆Mn9bS1g7Ng mailto:sage [2008/11/08(土) 12:01:33 ] >>430 本当に有難う御座いました。 大変助かりました。
432 名前:354 ◆zeyvxEAaZQ [2008/11/08(土) 15:07:01 ] >>359 >>370 >>395 ありがとうございました! >>370 さんのやり方も試してみます。 >>395 さん 「こうすると楽だよ」的な流れだと思います。他にもやりたい事はあるのですが、teki.hとel.hいうファイルが何なのかよくわかりません。消しても平気でしょうか?
433 名前:354 ◆zeyvxEAaZQ mailto:sage [2008/11/08(土) 15:07:43 ] すみません、sage忘れました。
434 名前:414 mailto:sage [2008/11/08(土) 16:17:14 ] 名前付きパイプの方も自力で一応出来ました!ありがとうございました。 >>425 今週の宿題は完了しました。次回はメッセージキューと共有メモリみたいです。 次次回がソケット関連みたいでした。また困ったら投稿させて頂きます。 疲れた。。寝ます。
435 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 17:02:52 ] [1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): キーボードから自分の学生番号を半角小文字整数で、氏名を半 角小文字のローマ字で、身長(cm)を実数で、体重(kg)を実数で入力し、 学生番号と氏名・身長・体重・身長(cm)+体重(kg)を表 示するプログラムを作成しなさい。 [3] 環境 [3.1] OS:XP [3.2] VC 6.0等 [3.3] 言語: C [4] 期限: ([2008年mm月11日11まで [5] その他の制限:やってまもないです 少しやってみたんですがここで詰まっています #include<stdio.h> void main(void) { int x,y; printf("学生番号を半角小文字整数で入力;\t"); scanf("%d",&x); printf("10進数表示 ; DEC(x)=%d\n",x); printf("氏名を入力する;\t"); }
436 名前:435 mailto:sage [2008/11/08(土) 17:04:02 ] 訂正 11月11日までです
437 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 17:11:44 ] >>435 #include<stdio.h> int main(void) { int x; char s[1000]; double h, w; printf("学生番号を半角小文字整数で入力;\t"); scanf("%d",&x); printf("氏名を入力する;\t"); scanf("%s", s); printf("身長を入力する;\t"); scanf("%lf", &h); printf("体重を入力する;\t"); scanf("%lf", &w); printf("学生番号: %d\n", x); printf("氏名: %s\n", s); printf("身長: %f\n", h); printf("体重: %f\n", w); printf("身長 + 体重: %f\n", h + w); return 0; }
438 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 17:32:54 ] >>435 せめてBMI判定くらいはしてやれwwww
439 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 17:58:46 ] >>435 単位の違うものを足すの?
440 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 18:31:03 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7973.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:11/10 [5] その他の制限:おそらく実行例の関数にさえ対応していれば大丈夫だと思います よく分からない問題だと思いますがよろしくお願いします
441 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 21:58:45 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 文字列str1の中身が半角から全角に切り替わる箇所にはその文字の前に16進数の{0x40}を 全角から半角に切り替わる箇所には16進数の{0x41}を挿入し その結果をテキストtest1.txtに出力をするプログラムを作成しなさい。(結果の確認はバイナリエディタで行うように) なお、文字列str1の文字コードはSJISとする。 ※問題文では触れられておりませんが 文字列の1文字目が全角の場合は最初に{0x40}を 最後の文字が全角の場合は一番最後に{0x41}を付加しなければならないようです。 出力例: 挿入前の文字列str1:スレタイ C/C++の宿題を片付けます117代目 テキストに出力される文字列:{0x40}スレタイ {0x41}C/C++{0x40}の宿題を片付けます{0x41}117{0x40}代目{0x41} リンク:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7974.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:11/11 [5] その他の制限: 全角文字と半角文字を区別する箇所までは出来たのですが 文字列の中に16進数を挿入する過程で詰まってしまいました。 特に制限は無く、私が作った部分の改変をするのもおkですのでよろしくお願い致します。
442 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 22:04:34 ] 0x40は@、0x41はAのことか? そもそも宿題なのか?
443 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 22:25:41 ] >>442 ソースコート上では単純に文字として挿入するのではなく16進で挿入しなければならないようです memcpyの使い方に関する宿題です(;´Д`)
444 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:00:20 ] >>441 挿入してるのは ASCII だからべつにバイナリエディタでなくても確認できるな kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7975.txt あ、test1.txt に出す部分作るの忘れたからそれはご自分で。最後の printf を fprintf に置き換えるだけだね
445 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:12:21 ] >>444 ばっちりです!ありがとうございました あとは自分で改変してみます
446 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 01:02:30 ] >>437 ありがとうございます。 >>439 そういう適当な課題なんです
447 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 02:20:57 ] 440の問題微妙に難しくない?コンパイラ?
448 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 02:40:51 ] [1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7976.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:11/12 [5] その他の制限:特になし よろしくお願いします
449 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 02:52:06 ] [1] 授業単元:C [2] 問題文 初期設定された任意の整数配列内のデータを,大きい順に並べ換えるプログラム をつくりなさい。ただし,並べ換える部分を関数にして,配列とデータ数を引数として 渡しなさい。例として,次の10 個の整数を格納した配列に適用してみなさい。 static int dd[10] = { 27, 89, 45, 18, 55, 64, 92, 73, 34, 88 }; 出力例: ソート後 = 92 89 88 73 64 55 45 34 27 18 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 2008年11月10日 24:00 [5] その他の制限:次のようなプロトタイプ宣言をもつ関数isort を定義しなさい。 void isort(int *, int); できましたら、C言語の基本的な関数のみでお願いします。
450 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 03:15:08 ] >>447 関数の名称その他の抽出って感じだろう 構造体を誤認識しないようにしつつ
451 名前:450 mailto:sage [2008/11/09(日) 03:16:42 ] ごめんたしかにかなり面倒ですね どのくらいまでやればいいんだろ
452 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 03:25:55 ] >>449 void isort(int * ary, int nelem) { int i; for ( i = 1; i < nelem; ++i ) { int j; int tmp = *(ary + i); for ( j = i - 1; j >= 0 && *(ary + j) < tmp; --j ) { *(ary + j + 1) = *(ary + j); } *(ary + j + 1) = tmp; } } 適当に作ってみた。
453 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 04:05:41 ] >>448 シンプレックス法だね。でもコードにするのめんどい・・・
454 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 04:06:41 ] >>440 途中までやってみた。 ・ 基本的に改行を取り除くため1つの char 配列に読み込む ・ // は行単位の処理が必要なので読み込み時に処理 ・ /* 〜 */ は未対処 ・ void, int, char, float, double のいずれかとマッチするところを探す → データ型を省略した関数定義は取りこぼす ・マッチしたらそれぞれの直後が ' ' か '\t' か '\n' の条件に絞る ・ '(' が来るまでに ',' か ';' か ')' か '{' か '}' が来たら関数ではない ・以上の条件に合致したら、型名と関数名を出力 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7978.txt
455 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 04:16:44 ] >>452 ありがとうございましt!
456 名前:454 mailto:sage [2008/11/09(日) 05:20:37 ] >>440 short が抜けてたので改良を加えてみた。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7980.txt 検索の順序の関係上お手本とは順番は異なるが、いちおう関数は拾えている
457 名前:354 ◆zeyvxEAaZQ mailto:sage [2008/11/09(日) 05:42:14 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク): 敵が一周回ったら再び中央へ移動して、波を描きながら画面外へ消える。これをクラスを使わないで作って欲しいです。 中央へ移動までは、>>395 さんに作っていただきました。www.dotup.org/uploda/www.dotup.org20438.zip.html 最終的にこのような感じの動きです。www.dotup.org/uploda/www.dotup.org20441.bmp.html あと、敵の当たり判定もお願いします。これがサンプルです。www.dotup.org/uploda/www.dotup.org20440.zip.html [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC2005またはVC2008 [3.3] 言語: C++ [4] 期限: ([2008年11月9日22:00まで [5] その他の制限: クラスについてどのようなものかまだ習っていなかったのに、曖昧な返事をしてしまって申し訳ございません。 プログラムに関しては、自機の表示と弾を出すのはできましたが、それ以降ができません。どうかお願いします。
458 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 05:43:08 ] >>457 構造体はつかってもいいですか?
459 名前:デフォルトの名無しさん [2008/11/09(日) 06:16:06 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク):数個のポイントを含むクラスポリゴンを定義しなさい。 (a) デストラクター・コピーコンストラクター・アサインメントオペレーターを作成し、クラスを定義しなさい。ディフォルトコンストラクターは空のポリゴンを作成すると仮定しなさい。 (b)Pointクラスがプライベートメンバー、また、(x,y)を返すコンストラクタPoint(int, int)を持つように変更しなさい。そうすることによってポリゴンクラスがコンパイルしなくなります。問題点を発見し、修正しなさい。 (一応骨組みは作ってみました。) class Point { public: float x; float y;} class Polygon { Point * points; //the points int size; //number of points public: Polygon() {...}; Polygon(const Point * pts, int n) {...}; Point getPoint(int n)const { //n番目のポイントを返す} void setPoint(const Point& p, int n) { //sets the nth point} int getSize()const { return size;}}; [3.1] OS: linux redhat [3.2] コンパイラ名とバージョン: VC2005またはVC2008 [3.3] 言語: C++ [4] 期限: ([2008年11月11日22:00まで [5] その他の制限:ポリゴンを作成するプログラムを作る課題を出されました。 日本の皆さまのお力をお借りしたく、投稿させて頂きます。 上の骨組みで作成することが、条件として出されました。 よろしくお願いいたします。
460 名前:デフォルトの名無しさん [2008/11/09(日) 07:49:14 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): void Wa(int a,int b); …2つの引数の和を計算し、結果を表示する(xとyの和) int abs_Sa(int a, int b); …2つの引数の差を計算し、その絶対値を返す(xとyの差の絶対値) double Heikin(int a,int b, int c, int d int e); …5つの引数の平均値を返す(num[5]の平均値) このような演算を行う関数をそれぞれ定義し、下記のプログラムに処理を追加せよ #include<stdio.h> void Wa(int a,int b); int abs_Sa(int a, int b); double Heikin(int a,int b, int c, int d int e); int main(void){ int k,x,y,num[5]={19,51,100,32,6}; double z; printf("xを入力してください:") scanf("%d",&x); printf("yを入力してください:") scanf("%d",&y); /* これ以降に処理を追加する */ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual stdio 2005 [3.3] 言語: C [4] 期限: 11/11 18:00 [5] その他の制限: 関数習いたてです。よろしくお願いします
461 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 08:35:36 ] >>460 main 残り printf("x + y = "); Wa(x, y); printf("\n"); k = abs_Sa(x, y); printf("|x - y| = %d\n", k); z = Heikin(num[0], num[1], num[2], num[3], num[4]); printf("average of %d, %d, %d, %d, and %d = %f\n", num[0], num[1], num[2], num[3], num[4], z); return 0; 関数 void Wa(int a, int b) { printf("%d", a + b); } int abs_Sa(int a, int b) { if (a >= b) return a - b; else return b - a; } double Heikin(int a, int b, int c, int d, int e) { return (a + b + c + d + e) / 5.0; }
462 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 09:35:58 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 長くなったので↓にアップします。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7981.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: VC2005またはVC2008 [3.3] 言語: c++ [4] 期限: 11月12日 [5] その他の制限: for文、if文、配列等まで習いました。よろしく御願いします。
463 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 10:09:10 ] [1] 授業単元:演習 [2] 問題文: 数値が何(バラバラ)行2列でかかれた複数のファイルがあり それぞれのファイルを読み込み、表示させるプログラムを書きなさい。 何行かはファイルを開かないとわからないのでプログラムで行数をはかる。 [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:2008年11月9日
464 名前:460 [2008/11/09(日) 10:10:41 ] >>461 ありがとうございます、助かりました
465 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 10:58:28 ] >>462 メインのループの部分だけ int pos = 0; for(i = 0; i < 20; i++) { x = rnd(); if (x < 0.3) { pos--; printf("左に進みました。"); } else { pos++; printf("右に進みました。"); } printf("現在位置 "); if(pos > 0) printf("右に %d ", pos); else if(pos < 0) printf("左に %d ", pos); else if(pos > 0) printf("原点"); printf("です。\n"); }
466 名前:465 mailto:sage [2008/11/09(日) 11:04:45 ] ちょっと読み違えてたので訂正 double x; int i, pos = 2; char *place[] = {"盗賊", "湖", "入り口", "森", "宝"}; srand((unsigned int)time(NULL)); for(i = 0; i < 20; i++) { x = rnd(); if (x < 0.3) { pos--; printf("左に進みました。"); } else { pos++; printf("右に進みました。"); } if(pos >= 4){ printf("宝を見つけました。"); pos = 2; } else if (pos <= 0){ printf("盗賊に会いました。"); pos = 2; } printf("現在位置 %s です。\n", place[pos]); }
467 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 12:53:26 ] >>466 ありがとうございました!
468 名前:デフォルトの名無しさん [2008/11/09(日) 13:16:10 ] [1] 授業単元:数値計算法1 [2] 問題文(含コード&リンク): gyoretu[n][n]に格納された、n次の行列の逆行列を求め、出力するプログラムを作成せよ。 対角要素に0や0に近い要素があっても、正しく答えが求められるように工夫せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限:明日 [5] その他の制限: なし お願いいたします!!
469 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 13:18:27 ] >>463 ファイル読んでその場で表示するだけなら行数とか考える必要ないんだけど いったん全部読み込んだあとにまとめて表示するようにした方が良い? #include <stdio.h> #define MAX 256 int main(int argc, char **argv) { FILE *fp; double a, b; while(argc-- > 1){ fp = fopen(argv[argc], "r"); if(fp == NULL){ fprintf(stderr, "Cannot open %s\n", argv[argc]); continue; } while(fscanf(fp, "%lf %lf", &a, &b) != EOF) printf("%f %f\n", a, b); fclose(fp); } return 0; }
470 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 13:18:52 ] ライブラリ使ったほうが正確
471 名前:デフォルトの名無しさん [2008/11/09(日) 14:43:22 ] >>415 返信遅れてすいません。 cinとcoutはやりました。 でも授業が難しいのでなかなか理解できないんですよね。。。
472 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 15:00:33 ] [1] 授業単元: C,C++、データ圧縮LZ78符合 [2] 問題文:以下に与えたデータ列をLZ78符合で圧縮し、画面に表示するプログラムを作成せよ。 データ列:ABCBCBCDEBCDABCD コンソールアプリケーションで作成すること。 画面には最低限以下のものを出力すること。 【1】与えたデータ列 【2】作成した辞書の一覧 【3】符号化したデータ列 [3] 環境 [3.1] OS: WindousXP [3.2] コンパイラ名とバージョン: VisualStudio2005 [3.3] 言語: C,C++どちらでも可 [4] 期限:2008年11月13日まで [5] その他の制限: 標準ライブラリ可 よろしくお願いします。
473 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 15:13:53 ] >>458 構造体は使っても大丈夫です。
474 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:17:50 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 入力した値までの素数を列挙させるプログラムを作成せよ。 例)整数を入力:5 2は素数です 3は素数です 5は素数です [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VisualStudio2005 [3.3] 言語:C/C++/どちらでも可 [4] 期限: 2008年11月12日まで [5] その他の制限:for文まで。できるだけ簡潔に。 よろしくお願いします。
475 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:32:24 ] >>474 なにも考えないDQNメソッドだけど #include <stdio.h> int main() { int i, j, n; printf("整数を入力:"); scanf("%d", &n); for(i = 2; i <= n; i++) { for(j = 2; j < i; j++){ if (i % j == 0) break; } if (j >= i) printf("%d は素数です\n", i); } return 0; }
476 名前:学生 [2008/11/09(日) 16:46:51 ] 1から1000までの正の整数において、13の倍数の個数を出力するプログラム よろしくお願いします
477 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:47:53 ] >>456 ありがとうございます! 面倒だったようで申しわけないです
478 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:48:32 ] >>476 #include <stdio.h> main(){ printf("%d\n", 1000/13); }
479 名前:学生 [2008/11/09(日) 16:48:35 ] 訂正 マイクロソフトビジュアルベーシックC++で作成
480 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:50:17 ] >>479 >>476 #include <stdio.h> int main(){ printf("%d\n", 1000/13); return 0; }
481 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:01:36 ] >>472 C++です。VS2008で確認。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7982.txt
482 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:51:28 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7983xt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: [3.3] C [4] 期限:11月10 [5] その他の制限:出来るだけ簡単に よろしくおねがいします!!!
483 名前:482 mailto:sage [2008/11/09(日) 18:52:44 ] URL訂正します kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7983.txt
484 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 19:11:25 ] >>483 #include <stdio.h> int main(int argc, char *argv[]) { unsigned int i, n; char str[21]; puts("符号なし32ビット整数を入力してください。"); scanf("%u", &n); printf("%u が格納されている先頭アドレスは 0x%p です。\n", n, &n); puts("20文字以内の文字列を入力してください。"); scanf("%s", str); printf("%s が格納されている先頭アドレスは 0x%p です。\n", str, str); for (i = 0; str[i] != '\0'; i++) { printf("%c が格納されているアドレスは 0x%p です。\n", str[i], &str[i]); } return 0; }
485 名前:457 ◆zeyvxEAaZQ mailto:sage [2008/11/09(日) 21:08:03 ] 期限を11月9日23:30までにするので>>457 をどうかお願いします。
486 名前:デフォルトの名無しさん [2008/11/09(日) 22:53:54 ] 1] 授業単元:プログラム [2] 問題文(含コード&リンク):遺伝的プログラムで木構造に新しいノードを追加しなさい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年11月11日まで [5] その他の制限: お願いします。
487 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 22:59:03 ] >>486 遺伝的プログラムってだけ言われても困るぞwwwwwwww 他になんか情報はないのか
488 名前:デフォルトの名無しさん [2008/11/09(日) 23:17:23 ] >>487 例えばどういう情報があればいいですか?
489 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 23:22:37 ] >>485 cで書けと?
490 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 23:23:59 ] >>475 ありがとうございました。助かりました。
491 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:34:44 ] [1] 授業単元:C [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7984.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:11/11 [5] その他の制限:特になし よろしくお願いします
492 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:43:01 ] 宿題丸投げするつもりはないんだが質問させてくれないか bccコンパイラを使っているんだ。 プログラムの実行時間測定に #include <sys/time.h> を参照したいんだがtime.hがどうも入ってないみたいなんだ。 標準搭載されてる関数で少数点以下まで実行時間を計れるものってないかな?
493 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:52:26 ] #include <time.h> じゃねーの?
494 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:59:37 ] #include <sys/timeb.h> だと思うが、Linux使いなので詳しくはしらないが struct timeb now; int millisec; ftime(&now); millisec = now.millitm; /* これがミリ秒らしい */ こんな感じだと思う。 詳しくは、ググるかヘッダファイル読め。
495 名前:493 mailto:sage [2008/11/10(月) 01:01:04 ] 俺がいってたのは #include <time.h> のclock()ね
496 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:02:14 ] >>493 俺の探し方がアホなだけかもしれんが、#include <time.h>だと少数点以下まで測れる方法が見つからなかったんだorz >>494 ありがとう 参考にする
497 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:04:32 ] >>495 ΣΣclock!! 見落してた マジサンキュ やってみる
498 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:26:15 ] >>489 C++でお願いします。 10日の18:00まででいいのでどうかお願いします!
499 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:27:58 ] >>498 クラスを使うなと書いてあるが? そこだけ関数?
500 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:33:51 ] [1] 授業単元:C言語 [2] 問題文 初期設定された任意の文字列の順序を,逆に並べ換えるプログラムをつくりなさ い。ただし,並べ換える部分を関数にして,関数には文字列を引数として渡しなさい。 文字列の例としては, char str[] = "My name is Tarou Tanaka"; のように自分の名前を用いてみなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 2008年11月12日 24:00 [5] その他の制限: ・次のようなプロトタイプ宣言をもつ関数reverse を定義すること。 void reverse(char *); ・引数で渡された文字列自身が逆順になること。 C言語の基本関数のみでよろしくお願いします。
501 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:37:34 ] >>499 構造体はつかっていいらしいかららクラスと差し替えちゃえばいいんじゃね
502 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:57:40 ] >>499 クラスは使わず、構造体でお願いします。
503 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 02:10:50 ] >>502 ほんとうにいいんだな 構造体にコンストラクタとデストラクタとメンバ関数つけられるぞ?