1 名前:デフォルトの名無しさん [2009/06/24(水) 23:28:21 BE:454421568-DIA(282072)] あなたが解けない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++の宿題片付けます 127代目 pc12.2ch.net/test/read.cgi/tech/1244449887/
820 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:18:20 ] お願いします。 [1] 授業単元: 論理設計 [2] 問題文: 3入力のクワイン・マクラスキー法のプログラムを作成せよ [3] 環境 特に無し(紙に書いて提出) 言語:C++ [4] 期限:07月13日(月)まで [5] その他の制限:特にないです。
821 名前:812 [2009/07/09(木) 17:07:41 ] 812での追記 4目並べ 重力は無しです、盤面サイズは10×10。 駒黒1 駒白−1 っと設定しています。これで、作っていただきたいです。
822 名前:デフォルトの名無しさん [2009/07/09(木) 17:34:59 ] 何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理するプログラムを作る。 (1)科目別の最高点、最低点を表示する。 (2)各学生の3教科の平均点を表示する。 (3)各教科の平均点を表示する。 ただし Ctrl+zが押されるまで次々と整数値を読み込んでいくものとする。 以上の問題お願いします m(__)m
823 名前:デフォルトの名無しさん [2009/07/09(木) 17:49:24 ] >>812 >>449 のプログラムを流用で kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9717.txt
824 名前:デフォルトの名無しさん [2009/07/09(木) 18:32:51 ] >>822 質問テンプレ忘れてました。 [1] 単元:プログラミング工学1 [2] 問題文:下記にあります。 [3] 環境 :Windows [3.3] 言語: C++ [4] 期限:あと40分位でお願いします。 何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理するプログラムを作る。 (1)科目別の最高点、最低点を表示する。 (2)各学生の3教科の平均点を表示する。 (3)各教科の平均点を表示する。 ただし Ctrl+zが押されるまで次々と整数値を読み込んでいくものとする。 以上の問題お願いします m(__)m
825 名前:デフォルトの名無しさん [2009/07/09(木) 19:20:54 ] 〔1〕授業単元:C言語 〔2〕問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9718.txt 〔3〕環境 [3.1] OS: Windows [3.3] 言語: C言語 〔4〕期限:7月10日 18時 〔5〕コマンド引数、再帰呼び出しまで習いました よろしくお願いします
826 名前:デフォルトの名無しさん [2009/07/09(木) 20:13:56 ] 1] 授業単元: 宿題 [2] 問題文(含コード&リンク): 整数を入力し、奇数か偶数かを判断するプログラム(switch文で [3] 環境 [3.1] OS: (Windows/Linux/等々) XP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) borland [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 明日まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
827 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 20:41:18 ] [1] 授業単元:オペレーティングシステムT [2] 問題文(含コード&リンク):exp7.cのプログラムを応用し、コマンドの引数xxxxで指定したファイルが更新されたら直ちに "Modified xxxxfile on Day Month date hh:mm:ss yyyy" というメッセージを表示するプログラム(ファイル更新を監視する常駐プログラム)を作成せよ。常駐プログラム(バックグランドで起 動され一般に広義のデーモンと呼ばれる)は、kill pid コマンドが入力されるまで、動き続けるように作成すること。 exp7.cは kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9720.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 09年7月13日正午 [5] その他の制限: プログラミング能力を問う科目でないため、特に制限はありません。 ですが、添付したソースに適したレベルでお願いします。 <実行結果> $ gcc -o exp8 exp8.c $ exp8 exp8 & $ ps PID TTY TIME CMD 3028 pts/1 00:00:00 bash 3073pts/1 00:00:00 exp8 3074 pts/1 00:00:00 ps $ touch exp8 $ Modified exp8 file on Sun May 25 14:20:26 2008 touch exp8 $ Modified exp8 file on Sun May 25 14:20:26 2008 kill 3073 $
828 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:19:28 ] >>827 #include <stdio.h> #include <unistd.h> #include <sys/stat.h> int main(int argc, char **argv) { char *file_name = argv[1]; struct stat sb; time_t old_mtime; stat(file_name, &sb); old_mtime = sb.st_mtime; while (1) { usleep(500000); stat(file_name, &sb); if (old_mtime != sb.st_mtime) { printf("'%s'が書き換えられた!%s", file_name, ctime(&sb.st_mtime)); old_mtime = sb.st_mtime; } } }
829 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:46:36 ] >>826 switch文で判定するとか問題がカス過ぎるだろ #include <stdio.h> int main(){ int n; printf("input number > "); scanf("%d",&n); switch(n){ default: printf("%s",n&1 ? "odd" : "even"); } return 0; }
830 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:51:11 ] #include <stdio.h> int main(){ int n; printf("input number > ");scanf("%d",&n); switch(n%2){ case 0: printf("even¥n");break; case 1: printf("odd¥n");break; default: printf("Bug of processor??¥n");break; } return 0; } としたらBug of processorと表示されることは内と言える?
831 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:07:22 ] >>829 ひどい奴だなwww もっとこう出題者の意向をくんでやれよ。いいよ俺が答えてやる >>826 #include <stdio.h> int main(){ int n; printf("input number > "); scanf("%d",&n); switch(n){ case 0: case 2: printf("偶数です!\n"); break; case 1: case 3: printf("奇数です!\n"); break; default: printf("わかりません!\n"); break; } return 0; }
832 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:32:39 ] >>831 「わかりません」ってなんだよ >>826 下のプログラムを実行したら、ちゃんとintの範囲なら全部判定できるプログラムができるからやってみなw #include <stdio.h> #include <limits.h> int main(){ int i; printf("#include <stdio.h>\n" "int main(){\n" "\tint n;\n" "\tprintf(\"input number > \");\n" "\tscanf(\"%%d\",&n);\n" "\tswitch(n){\n" "\tcase %d:\n", INT_MIN); for(i = INT_MIN + 2; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i); printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1); for(i = INT_MIN + 3; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i); printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n", INT_MIN % 2 ? "偶数" : "奇数"); printf("\t}\n" "\treturn 0;\n" "}\n"); return 0; }
833 名前:832 mailto:sage [2009/07/09(木) 22:41:20 ] わりぃ、1箇所ばぐっとった printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1); ↓ printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d:\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1); これで完璧。 期限までに間に合わんかったらごめんな。
834 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:48:06 ] 2009/7/9 24:00 締め切り埋め祭り >>830 &yen;以外で文字化け #include <stdio.h> int main(){ int n; printf("input number > "); scanf("%d",&n); switch( (n&1) == 0 ) { // 最下位ビットは0か case 0: printf("奇数です!\n"); break; // いいえ case 1: printf("偶数です!\n"); break; // はい } switch( (n&1) != 0) { // 最下位ビットは1か case 0: printf("偶数です!\n"); break; // いいえ case 1: printf("奇数です!\n"); break; // はい } return 0; }
835 名前:デフォルトの名無しさん [2009/07/09(木) 22:49:40 ] パスカルの三角形を出力するのに #include <stdio.h> #define N 10 int main(void){ int i, j = 1, x, y; int d[N][N]={}; /* 三角形を作成 */ for (i = 1 ; i < N ; i++){ d[i][0] = 1; while (j <= i - 1){ d[i][j] = d[i-1][j-1] + d[i-1][j]; j ++; } } /* 三角形の表示 */ for (y = 0; y < N; y++) { for (x = 0; x < N-y; x++) printf(" "); for (x = 0; x < y; x++) printf("%3d ", d[x][y]); printf("\n"); } return 0; } と書きましたが、すべての要素がゼロになってしまいます。 どこがまちがっているのでしょうか??
836 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:58:02 ] >>835 while文の前にj=1の初期化が抜けてる 表示部分でd[x][y]のxとyが逆
837 名前:836 mailto:sage [2009/07/09(木) 23:01:01 ] >>835 おま、Cなら俺に聞けスレとのマルチポストじゃねえか! しかもあっちで答もらってんじゃんよ! >>836 は取り消す。答えなかったことにする
838 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:02:35 ] やっぱテンプレ守れんやつは 守れんやつだけのことはあるってことか ご愁傷様
839 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:06:16 ] >>835 マルチポスト乙。 マルチポスト - Wikipedia ttp://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
840 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:07:56 ] >>830 CPUにバグなんてあるわけないだろ プログラムが仕込まれているわけでもあるまいし
841 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:09:11 ] >>840 CPUの場合はバグとはいわずエラッタという言葉で予定してない動きをさすのはあるよ インテルとかAMDもたまにやらかしてる
842 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:09:16 ] いやいやwww
843 名前:842 mailto:sage [2009/07/09(木) 23:10:15 ] >>842 は>>840 にっすよ念のため
844 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:34:09 ] >>835 別のスレに回答しておいた。 出力結果のサンプルはこんな感じ。 1 1 1 1 2 1 1 3 3 1
845 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:36:07 ] ・3・3・3・3・3・3・)v
846 名前:842 mailto:sage [2009/07/09(木) 23:39:12 ] ネタにマジレスして恥ずかしいので軽く吊ってくる
847 名前:デフォルトの名無しさん [2009/07/09(木) 23:43:14 ] デフォルトの名無しさん:2009/07/09(木) 20:13:56 1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): LLLアルゴリズムをCでプログラミング [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: C言語 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2009年7月17日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) Webや本を見ているのですが、 二次行列で書いてあったり一次行列で書いてあったりしてよく分かりません。 よろしくお願いします
848 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:19:21 ] [1] 授業単元:C++ [2] 問題文(含コード&リンク):日曜日から土曜日までの曜日を表す列挙型Dayが定義されている.このとき,2つの曜日を引数として与えると,その曜日間の最短距離を計測する関数day_distanceを作成せよ. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:C++ [3.3] 言語: C++ [4] 期限: 2009年7月10日午前9時半 なので午前5時ぐらいまでにやっていただければ・・・ [5] その他の制限: 関数distanceの呼び出しは↓ #include <iostream> using namespace std; enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat}; int main(){ cout << day_distance(Sun, Tue) << endl;//2が出力される cout << day_distance(Mon, Fri) << endl;//3が出力される cout << day_distance(Sun, Sat) << endl;//1が出力される return 0; } 以下,続きへ
849 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:21:47 ] >>848 の続きです #include <iostream> using namespace std; enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};//曜日を表す列挙型の定義 void day_load(Day a, Day b){ if(a<b){ Day temp; temp=a,a=b,b=temp;} switch(a-b){ case 1: cout << "1" << endl; break; case 2: cout << "2" << endl; break; case 3: cout << "3" << endl; break; } } int main(){ cout << day_distance(Sun, Tue) << endl;//2が出力される cout << day_distance(Mon, Fri) << endl;//3が出力される cout << day_distance(Sun, Sat) << endl;//1が出力される return 0; } のように作ったら,day_distanceが宣言されないと言われます どうすればいいでしょうか?
850 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:25:35 ] day_loadじゃないの?
851 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:27:35 ] voidの横をday_distanceにすると,voidとcoutの3つにエラーが出てしまいます ちなみにEclipseでやってます
852 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:38:58 ] >>849 cout << day_distance(Sun, Tue) << endl;//2が出力される cout << day_distance(Mon, Fri) << endl;//3が出力される cout << day_distance(Sun, Sat) << endl;//1が出力される を day_load(Sun, Tue); day_load(Mon, Fri); day_load(Sun, Sat); に変える
853 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:40:17 ] とりあえず答えだけ。いろいろアレ過ぎるんで、ネットじゃなくリアルで指導してもらった方が良い。 int day_distance(Day a, Day b){ return a > b ? a - b > 7 - a + b ? 7 - a + b : a - b : b - a > 7 - b + a ? 7 - b + a : b - a; }
854 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:42:05 ] >>849 >のように作ったら,day_distanceが宣言されないと言われます >どうすればいいでしょうか? day_distanceを宣言する #include <iostream> #include <cmath> using namespace std; enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat}; int day_distance(Day d1,Day d2){ int table[]={0,1,2,3,3,2,1};//,{1,0,1,2,3,3,2}, return table[abs(d2-(d1-Sun))%7]; } int main(){ cout << day_distance(Sun, Tue) << endl;//2が出力される cout << day_distance(Mon, Fri) << endl;//3が出力される cout << day_distance(Sun, Sat) << endl;//1が出力される return 0; } そのswitch-case
855 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:43:17 ] は汎用性無いからやめた方がいい 途中で書き込んでしまったorz
856 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:47:39 ] >>854 すみません,includeの<cmath>って何でしょうか・・・? <iostream>しか使ったこと無いので・・・
857 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:09:13 ] math.hのC++版。数学関連の関数を使うために入れてる。ここではabs
858 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:10:36 ] 追記 iostreamをなぜ使っているかを理解してれば、そのような疑問は出てこないと思うんだけどね。 おまじないの犠牲者じゃないことを祈る。
859 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:25:55 ] >>857 すみません,習ってないので分からないです・・・ もしswitchでやる場合は,どこをいじればいいでしょうか?
860 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:30:25 ] >>857 だけど、>>854 は別人ね。 iostreamは習ったから使ってるという認識でいいのかな。 何のためにiostream使ってるの?
861 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:33:10 ] >>860 すみません、恥ずかしながら分からないです・・・ ただ「プログラミング演習」という授業で、プリントなどに最初からinclude<iostream>と書いていたので・・・
862 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:34:23 ] 問題点1 ・day_load関数を定義した ・day_distance関数を呼び出した という名前の矛盾 問題点2 day_(load|distance)関数の戻り値がvoidであるにも関わらず、 main関数で cout に放り込んでしまっていること switchがどうとかよりも、根本的な問題点はここなので、 そこを解決すればとりあえずは動くようになると思うし、 これまで通りロジックを考えることに専念できると思う
863 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:39:40 ] #include <iostream> using namespace std; enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat} と int main(){ cout << day_distance(Sun, Tue) << endl;//2が出力される cout << day_distance(Mon, Fri) << endl;//3が出力される cout << day_distance(Sun, Sat) << endl;//1が出力される return 0; } は最初から問題で定義されているので,この状況でswitchを使う場合はどうすればいいでしょうか?
864 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:40:03 ] 問題点1について>>850 が解決方法を提案し >>851 で問題点1を解決した結果、問題点2が表面化した。 >>852 は問題点2の解決方法を提案してくれたが>>849 はそれを無視している。 問題解決は目前であるにも関わらず、全く別の解決方法である>>854 に目を向けて cmathがなんであるかなどと悩んでいる。
865 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:42:21 ] day_distance関数が数値を返すようにすればいい。
866 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:44:41 ] >>864 あ、すみません coutの3つをday_loadに変更してもエラーが発生したもので・・・ >>865 すみません、分かりません・・・ 本当に無知で申し訳ないです・・・
867 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:53:15 ] >>866 int day_distance(Day a, Day b){ // 戻り値をintに変えた 中略 case 1: return 1; // コンソール出力をするのではなく、数値を返却するように変えた case 2: return 2; // コンソール出力をするのではなく、数値を返却するように変えた case 3: return 3; // コンソール出力をするのではなく、数値を返却するように変えた } return -1; // どれにも当てはまらない場合は不正とみなして-1を返却するようにした } そもそも、main関数の記述が指定されている以上、>>852 の提案をはねつけるべき。
868 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:59:25 ] >>867 共に3と1が出力されるはずの2行目と3行目で-1が出力されてしまいます・・・
869 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:02:05 ] >>848 >>849 に質問があるけど >>859 switchを使うのは必須なの? 題意を満たすプログラムの制約をちゃんと示さないと無駄な回答が増えるだろ >>868 よくわかんないけど今まで言ってた条件満たしたプログラム書いてやるから待ってろ
870 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:03:38 ] >>868 それはあなたがこだわっていたswitchのロジックがおかしいだけ。 >>862 の、 > これまで通りロジックを考えることに専念できると思う はそれを指しているんじゃないの。
871 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:04:55 ] >>869 作ってくれなんて言われてないのに親切なお方
872 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:05:12 ] >>869 学校で友人に聞いたプログラミングの中にswitchが入っていたのですが、時間の都合上途中までしか聞けなかったもので・・・
873 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:08:25 ] #include <iostream> using namespace std; enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat}; int day_distance(Day d1,Day d2){ int table[]={0,1,2,3,3,2,1};//,{1,0,1,2,3,3,2}, int distance=d2-(d1-Sun); distance=(distance<0)?-distance:distance; return table[distance%7]; } int main(){ cout << day_distance(Sun, Tue) << endl;//2が出力される cout << day_distance(Mon, Fri) << endl;//3が出力される cout << day_distance(Sun, Sat) << endl;//1が出力される return 0; }
874 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:13:25 ] >>873 ありがとうございます! ちゃんと出力されました! 他の皆さんも多大な迷惑をかけて申し訳ないです・・・
875 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:24:10 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 文字列xに文字列yが含まれるかどうかを判定する関数str_comp(char[],char[])を作成せよ. 出力例: 文字列x(64字まで)? University 文字列y(64字まで)? sity "University"に"sity"は含まれます。 文字列x(64字まで)? University 文字列y(64字まで)? city "University"に"city"は含まれません。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 7/17 [5] その他の制限:文字列まで. お願いします
876 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:36:23 ] >>875 /* 含まれる場合は1 含まれない場合は0を返却 */ int str_comp(char src[],char dst[]) { return (strstr(src, dst) != NULL); }
877 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:38:31 ] 変数名がおかしすぎた。 /* 含まれる場合は1 含まれない場合は0を返却 */ int str_comp(char target[],char search[]) { return (strstr(target, search) != NULL); }
878 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 03:13:47 ] [1] 授業単元:プログラミング言語 [2] 問題文(含コード&リンク): char型配列xに格納された文字列を一文字ごとに空白を開けて逆順に出力する関数 reverse_array(char[])を以下のように出力されるよう作成せよ。 処理前:Tokyo 関数reverse_array()を呼び出しました 処理後:"o y k o T" [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 7/14 [5] その他の制限:おねがいします。
879 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 03:49:22 ] >>878 void reverse_array(char s[]) { int i, len = strlen(s); printf("処理前:%s\n", s); puts("関数reverse_array()を呼び出しました"); printf("処理後:\""); for(i=len-1; i>=0; --i){ putchar(s[i]); if(i) putchar(' '); } puts("\""); }
880 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 04:20:26 ] >>877 ありがとう それ使って書いてみたんだけどエラーが出てしまう・・・。 関数勉強し直します……。 誰か暇だったらでいいので例をつくってください。
881 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 04:47:24 ] >>880 877じゃないけどどんなエラーがでたのか書こうぜ 例ってなにを作って欲しいんだ?
882 名前: ◆/91kCCQXBo mailto:sage [2009/07/10(金) 07:20:19 ] エラーはこれを定義すれば直ると思う。 #include <string.h> main(スタブ)からは、関数パラメータを2個付けて呼び出すだけでいいだろう。
883 名前:デフォルトの名無しさん [2009/07/10(金) 11:10:12 ] すいません、どなたか>>825 をお願いします 厚かましくて申し訳ありません・・・
884 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:32:07 ] >>883 課題1 #include <stdio.h> int main(int argc, char **argv) { if (argc < 3) { fprintf(stderr, "Error: too few arguments\n"); return 1; } if (argc > 3) { fprintf(stderr, "Error: too many arguments\n"); return 1; } printf("My name is %s %s\n", argv[1], argv[2]); return 0; }
885 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:37:46 ] >>883 課題2 #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(int argc, char **argv) { int s = 0; int i; if (argc < 3) { fprintf(stderr, "Error: too few arguments\n"); return 1; } for (i = 1; i < argc; i++) { char *c; for (c = argv[i]; *c; c++) { if (!isdigit(*c)) { fprintf(stderr, "Error: %s is illegal arguments\n", argv[i]); return 1; } } s += atoi(argv[i]); } printf("%d\n", s); return 0; }
886 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:37:59 ] >>882 ありがとう、それ入れたらコンパイルできた。 >>881 コンパイルできる状態のプログラムが見たかったんだ。
887 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:42:37 ] >>883 課題3 実行例3の結果は4になるんじゃないかな #include <stdio.h> int sum(int n, int m) { return (n >= m)? n: n + sum(n + 1, m); } int main(int argc, char **argv) { int n, m; printf("n m: "); scanf("%d %d", &n, &m); if (n > m) { fprintf(stderr, "n should be smaller than m.\n"); return 1; } printf("%d\n", sum(n, m)); return 0; }
888 名前: ◆/91kCCQXBo mailto:sage [2009/07/10(金) 11:50:27 ] 3連続投球終わったか? //>>863 >>848 の先生は、なんで火曜から月曜が1日なんて常識はずれな。 enum Day {Sun,Mon,Tue,Wed,Thr,Fri,Sat}; // Sun=0 int day_load[7][7] = {{0,1,2,3,3,2,1},{1,0,1,2,3,3,2},{2,1,0,1,2,3,3},{3,2,1,0,1,2,3},{3,3,2,1,0,1,2},{2,3,3,2,1,0,1},{1,2,3,3,2,1,0}}; int table[]={0,1,2,3,3,2,1}; int day_distance(enum Day st, enum Day en){  int work,a=st,b=en;  switch(0) { /* ここには 1 から 4 の数字を入れる。どれでも同じ結果になる。 */  case 1: /* compact cost > speed cost */    work = st<en?en-st:st-en;    return work<=3?work:7-work;  case 2: /* compact cost < speed cost */    return day_load[st][en];  case 3: /* >>853 */    return  (a > b) ?        (  (a - b > 7 - (a - b)) ?            (7 - (a - b)) :            (a - b)        ):( (b - a > 7 - (b - a)) ?            (7 - (b - a)) :            (b - a)        );  case 4: /* >>854 */    work = st<en?en-st:st-en;    return table[work%7];  default: /* NORMAL */    return (en-st+7)%7;  } }
889 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 12:00:07 ] >>762 これもできればよろしくお願いします。
890 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 12:35:51 ] >>889 よくわからんけどなんとなくそれっぽいものを書いてみた #include <stdio.h> #define A 3 #define M 65535 #define N 128 #define S 17 int main(void) { int a[N]; int x0, x1; int i; x0 = S; for (i = 0; i < N; ++i) { x1 = (A * x0) % M; a[i] = x1; x0 = x1; } for (i = 0; i < N; ++i) { printf(" %8d", a[i]); if ((i + 1) % 8 == 0) puts(""); } return 0; }
891 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 14:54:16 ] >>890 ありがとうございます。助かります。
892 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 17:01:55 ] yaccとlexですがどなたか>>747 よろしくお願いします。
893 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 18:14:31 ] >>892 fabs,cosはlogを参考にすればいいし。 キャストは簡単だよね。
894 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 18:21:51 ] >>893 すいません、やってもらうことはできませんか?
895 名前:505 [2009/07/10(金) 19:44:39 ] 未解決問題 >>847 LLLアルゴリズムをCでプログラミング 7月17日 >>827 (9720) コマンドの引数xxxxで指定したファイルが更新されたら直ちにメッセージを表示する 7月13日正午 >>824 >>822 何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理する 7月9日 19:10 >>820 3入力のクワイン・マクラスキー法のプログラム 7月13日 >>799 指定された点x,yを含む指定された境界色C2で囲まれた平面領域を指定された色C1で塗りつぶす 7月17日 正午 >>791 (9708,9709,DLL_BMP_C) 歌詞を暗号鍵Kとして読み込み、画像 NewYear2003.bmpを暗号化した画像Cを生成する。 7月15日 >>790 入力したtxtファイルをFFT、IFFTせよ 7月8日 24:00 >>772 2問。4次のルンゲ−クッタ法を用いて連立微分方程式を解く 7月28日 >>749 配列を用いた計算機のプログラム 7月12日 >>747 (9696)>>892 yacc,lex 7月14日 >>681 (down11.ddo/1246872574) DirectX マップチップ 7月9日 >>660 (fukushima.jp) パソコン甲子園 2008 予選問題 問7 ふしぎな虫 7月6日 >>607 簡単なデータベース機能を持つプログラム 7月13日 >>451 (9656)>>504 (9661,9662) 最短路問題を解くアルゴリズムとしてベルマンフォード法がある。 7月6日
896 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 22:36:21 ] [1] 授業単元: プログラミングW [2] 問題文(含コード&リンク): オブジェクト指向を使って何でも良いのでプログラム を書け [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 7月17日(金) [5] その他の制限: メソッドを5個以上使う 変数はpublicとprivateを使いわける
897 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:02:41 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):この続きからC言語でベルマンフォードをお願いしたいです。 #include <stdio.h> #include <stdlib.h> main(void) { int n, s; /*頂点数、始点*/ int M; /*辺のないところを指定する数*/ int i, j, k; int W[100][100] /*重みを指定した行列*/ FILE *infile; /*入力ファイル*/ infile = fopen("data1.txt", "r"); /*入力ファイル名はdata1.txt*/ fscanf(infile, "%d %d", &n, &s); /*頂点数、始点の読み込み*/ for ( i=1 ; i<=n ; i++ ){ for ( j=1; j<=n; j++){ fscanf(infile,"%d\n",&W[i][j]); /*読み込み部分*/ } } fclose(infile); /*ファイルを閉じる*/ [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: c [4] 期限: 2009年7月31日 [5] その他の制限:一番簡潔な書き方でお願いします@@;
898 名前:デフォルトの名無しさん [2009/07/10(金) 23:17:25 ] コンパイルしてアスタリスクがダイヤ形になるプログラムを教えてください。
899 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:35:21 ] >>897 ・問題文は、出題されたまま全文を書いてください。
900 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:42:12 ] >>886 文字列まで習ったって書いてあったから。。。
901 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:50:52 ] [1] 授業単元: C言語プログラミング演習 [2] 問題文(含コード&リンク): プログラムを実行すると 行列1: 1,2,3 4,5,6 7,8,9 行列2: 3,4,5 6,7,8 9,10,11 と表示する。最後に行列1と行列2の積を計算し、以下のように表示 するプログラム。 [行列1と行列2の積は ?,?,? ?,?,? ?,?,?] 課題2 配列のサイズを大きくして、時間を計測する。配列の内容は、各自指定すること。1から順に値を入れていってもよい [3] 環境 [3.1] OS: Windows/vista [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C++ [4] 期限: ([2009年7月15日まで] [5] その他の制限: この流れの通りにやること kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9721.txt お願いします。
902 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:51:59 ] >>827 #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h> #define SLEEP_TIME 1 int main(int argc, char *argv[]) { struct stat file; time_t prev_mtime; if (argc != 2) { printf("Usage: exp7 file1 file2\n"); exit(1); } if (stat(argv[1], &file) != 0) { printf("%s not found\n", argv[1]); exit(1); } prev_mtime = file.st_mtime; while (1) { stat(argv[1], &file); if (file.st_mtime != prev_mtime) { printf("\nModified %s %s", argv[1], asctime(localtime(&file.st_mtime))); prev_mtime = file.st_mtime; } sleep(SLEEP_TIME); } }
903 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:53:35 ] >>897 すみません >>896 問題:与えられた重みつき有向グラフGと指定された頂点sに対してベルマンフォード法を実行するプログラムをC言語を用いて作りなさい。 ・入力は以下の形式で記述されたテキストファイルによるものとする。 Gの頂点数、頂点s(番号) Gの各辺の重みを指定した行列(辺のないところは値を100とする) 例 5 1 100 2 1 100 100 100 100 100 -1 100 100 -1 100 100 1 100 100 3 4 100 100 100 100 100 100 ・頂点数は最大100まで対応できるようにする ・入力ファイルから読み込む形式にする
904 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 00:12:47 ] >>901 課題1 #include <stdio.h> int main(void) { int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int b[3][3] = {{3, 4, 5}, {6, 7, 8}, {9, 10, 11}}; int ans[3][3]; int i, j, k; puts("行列1:"); for (i = 0; i < 3; ++i) { for (j = 0; j < 2; ++j) printf("%d,", a[i][j]); printf("%d\n", a[i][j]); } puts("行列2:"); for (i = 0; i < 3; ++i) { for (j = 0; j < 2; ++j) printf("%d,", b[i][j]); printf("%d\n", b[i][j]); } for (i = 0; i < 3; ++i) for (j = 0; j < 3; ++j) ans[i][j] = 0; for (i = 0; i < 3; ++i) for (j = 0; j < 3; ++j) for (k = 0; k < 3; ++k) ans[i][j] += a[i][k] * b[k][j]; puts("[行列1と行列2の積は"); for (i = 0; i < 2; ++i) { for (j = 0; j < 2; ++j) printf("%d,", ans[i][j]); printf("%d\n", ans[i][j]); } for (j = 0; j < 2; ++j) printf("%d,", ans[i][j]); printf("%d]\n", ans[i][j]); return 0; }
905 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 00:34:56 ] >>903 アンカミス?だよね
906 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 00:47:17 ] >>898 #include <stdio.h> int main(int argc, char **argv) { if (argc > 1) { char *c; for (c = argv[1]; *c; c++) if (*c == '*') printf("◇"); else putchar(*c); } return 0; }
907 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 01:00:04 ] わざと誤読すんなw
908 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 01:00:49 ] >>896 オブジェクト指向?それっておいしいの??と思ってる人間が書いたソース。 継承しないで委譲って感じになってると思う。 あと、動作は保障しない。うちの環境はVC9EEだ。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9722.zip
909 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 01:41:23 ] >>896 >>908 さんとかぶったが一応やってみた 俺はC++本当にど素人なので何も保障できない 参考までに使ってくれ ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/15-16
910 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 03:37:06 ] 901ですが>>904 ありがとうございます じつは自分でもやっていたのですがkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9723.txt この文の最初のfor(j=0;j<3;j++)の後ろにfor(l=0;l<3;l++) main文の中のj=0;j<3;j++)の後ろにfor(l=0;l<3;l++)をつけたい 場合(答えはつける前と同じで)各 ans[i][j]=○○をどうやって書いたらいいのでしょうか?
911 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 03:40:06 ] >>910 >>904 見ればわかるだろ
912 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 03:52:28 ] と突き放しつつ ans[i][j]=ans[i][j]+a[i][l]*b[l][j];
913 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 03:56:22 ] >>911 >>912 911のコメントの後、作ったらできました。ありがとうございました!またそのあとのフォローのコメントもうれしかったです!
914 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 05:51:46 ] >>905 間違えました!すみませぬ。。。 >>903 は>>897 の修正です。よろしくお願いします。
915 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 11:17:40 ] >>898 ダイヤマークは周囲だけ?つまりダイヤマークの中は半角空白? 問題 >>前953(9534) 解答 >>014 (9548)
916 名前:デフォルトの名無しさん [2009/07/11(土) 14:08:29 ] 【質問テンプレ】 [1] 授業単元:情報基礎B [2] 問題文(含コード&リンク):(1) 平均、標準偏差 (2) 得点の高い順の点数のリスト [3] 環境 [3.1] OS:Linux [3.2] 不明です [3.3] 言語: C++ [4] 期限: 7・18まで [5] その他の制限:基本的なやつでお願いします。(2)はバブルソート
917 名前:デフォルトの名無しさん [2009/07/11(土) 14:09:57 ] 連投すいません 問題文に「試験の点数10人分をキーボードから入力」が抜けていました
918 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:10:35 ] >>916 丸投げもできないのか?
919 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:13:29 ] >916 しね
920 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:16:40 ] >>916 おまえはカスだ