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/
756 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:25:39 ] >>752 チェック用の関数と例外処理でcoutを使ってる。 だめそうなら、そこをprintfに書き換えて。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9699.txt
757 名前:デフォルトの名無しさん [2009/07/07(火) 23:28:24 ] 【質問テンプレ】 [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 二次元配列を使って以下のファイルを読み込み、同じように表示しなさい。 【test.dat】 ** ** ** ** ** ** ** ** ** ポインタを宣言; データを宣言; ポインタ=fopen("test.dat",r); if(ポインタ == NULL) return; for(i=0; i<3; i++){ for(j=0; j<3; j++){ fscanf(ポインタ,"%d"&sub[i][j]); }} /* 此処の printf() がどうしてもできません。ご協力お願い致します。 */ fclose(ポインタ); [3] 環境 [3.1] Windows [3.2] Visual Studio [3.3] 言語: C++ [4] 期限:2009年7月8日 09:00まで [5] その他の制限:特にありませんが、理解したいので比較的簡単なものでお願い致します。
758 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:33:26 ] >>757 test.datの内容それであってる?整数が3行3列=9個あるんじゃないのか?
759 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:37:20 ] >>757 "**"は整数なんじゃないかとエスパー #include <stdio.h> int main(void) { FILE *fp = fopen("test.dat", "r"); int sub[3][3]; int i, j; if (fp == NULL) return 1; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) fscanf(fp, "%d", &sub[i][j]); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf(" %d", sub[i][j]); printf("\n"); } fclose(fp); return 0; }
760 名前:757 [2009/07/07(火) 23:39:56 ] >>758 さま すみません間違えていました;; 指摘していただいて確認したところ、 【test.dat】 ** ** ** ** ** ** ** ** ** ** ** ** でした。 そうなると、 for(i=0; i<4; i++){ for(j=0; j<3; j++){ fscanf(ポインタ,"%d"&sub[i][j]); } } になると思います・・・すみませんでした><
761 名前:757 [2009/07/07(火) 23:43:19 ] >>759 さま あ!そういう意味でしたか・・・すみません、おっしゃるとおりです! しかも早急にご回答ありがとうございます!! printf()は普通に書けばよかったんですね・・・なるほど。 >>758 さま >>759 さま お二方、ありがとうございました。
762 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 00:19:10 ] [1] 授業単元: 情報処理T [2] 問題文: 乗算合同法で整数乱数を生成.。 区間(0.1)の一様にして、1以上、ある特定の整数の乱数を生成する。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: TurboC [3.3] 言語: C [4] 期限: 2009年7月20日00:00まで [5] その他の制限: #include <stdio.h>で始まるようにお願いいたします。 よろしくお願いします。
763 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 02:15:09 ] >>624 で質問し、>>677 で答えていただいた者ですが、 プログラムにコメント文も付けていただけますでしょうか?
764 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 03:19:26 ] [1] 授業単元:プログラミング入門 [2] 問題文(含コード&リンク): 問1:フィボナッチ数列を23番目まで計算して配列fibに格納した後、キーボードから何番目かを指定して表示するプログラムを作成せよ。 要素を表示する処理は何回も繰り返し行えるようにし、キーボードから1〜23以外の数値が入力されたら終了する。 実行例 数の入力:2 fib[2]:1 数の入力:23 fib[23]:28657 数の入力:24 終了 問2:(1)キーボードから半角英数で文字列を2つ入力し、これを比較して同じか否かを判定するプログラムを作成せよ。 実行例 文字列1:ABC 文字列1:ABc 文字列2:ABC 文字列2:ABC 2つの文字列は同じです 2つの文字列は違います (2)(1)のプログラムを、strcmpを使って書き換えなさい。 問3:1週間の売り上げ一覧を表示するプログラムを作成せよ。 実行例 野菜の1週間の売り上げた合計数量と合計金額 合計 合計 種類 単価 月 火 水 木 金 土 日 数量 金額 レタス 150 50 55 60 65 70 75 80 455 68250 トマト 50 20 25 30 35 40 45 50 245 12250 もやし 20 10 15 20 25 30 35 40 175 3500 ナスビ 40 5 10 15 20 25 30 35 140 5600 [3] 環境 [3.1] OS:(Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009/7/9 [5] その他の制限: C言語の基本くらいしかやっていません。
765 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 08:50:32 ] [1] 授業単元: 数値計算プログラミング [2] 問題文(含コード&リンク): (1)√57を求めよ (2)三乗根の7を求めよ (3)f(x)=3x^3+2x^2+5x-15=0の解を求める [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C++ [4] 期限: ([2009年07月10日まで] [5] その他の制限:ニュートン法を用いる 初期値 x0=1 お願いします
766 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:24:58 ] >>764 問1 #include <stdio.h> #define N 23 int main() { int fib[N + 1], i, n; fib[0] = 0, fib[1] = 1; for(i = 2; i <= N; i++) fib[i] = fib[i - 2] + fib[i - 1]; while(1){ printf("数の入力:"); scanf("%d", &n); if(n < 1 || n > N) break; printf("fib[%d]:%d\n", n, fib[n]); } printf("終了\n"); return 0; }
767 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:34:17 ] >>764 問2 #include <stdio.h> #define SIZE 1024 int main() { char s1[SIZE], s2[SIZE]; int i; printf("文字列1:"), fgets(s1, SIZE, stdin); printf("文字列2:"), fgets(s2, SIZE, stdin); for(i = 0; s1[i] != '\0' && s2[i] != '\0' && s1[i] == s2[i]; i++); if(s1[i] != s2[i]) printf("2つの文字列は違います\n"); else printf("2つの文字列は同じです\n"); return 0; }
768 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:36:12 ] >>764 問2(2) #include <stdio.h> #include <string.h> #define SIZE 1024 int main() { char s1[SIZE], s2[SIZE]; printf("文字列1:"), fgets(s1, SIZE, stdin); printf("文字列2:"), fgets(s2, SIZE, stdin); if(strcmp(s1, s2) != 0) printf("2つの文字列は違います\n"); else printf("2つの文字列は同じです\n"); return 0; }
769 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:59:42 ] 問3 #include <stdio.h>> struct weekly_sales_t{ char kind[1024]; int price; int daily_sales[7]; }; int main() { struct weekly_sales_t sales[4] = { {"レタス", 150, {50, 55, 60, 65, 70, 75, 80}}, {"トマト", 50, {20, 25, 30, 35, 40, 45, 50}}, {"もやし", 20, {10, 15, 20, 25, 30, 35, 40}}, {"ナスビ", 40, { 5, 10, 15, 20, 25, 30, 35}}, }; return 0; } 時間ないので誰か任せた
770 名前:デフォルトの名無しさん [2009/07/08(水) 10:06:09 ] >>765 www.geocities.jp/supermisosan/newtonhou.html ↑元のソースはここ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9700.txt ↑今回の課題に合わせた変更
771 名前:デフォルトの名無しさん [2009/07/08(水) 11:11:32 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):下記に [3] 環境 [3.1] OS:VistaSP1 [3.2] コンパイラ名とバージョン: Visual Studio2008 [3.3] 言語:C [4] 期限:2009年7月8日23時まで [5] その他の制限:できるだけ基本で 登録番号"int no"と名前"char *name"と年齢"int age"を含む構造体person型の配列を定義し初期化せよ. なお, 最後のデータの名前にはNULLを入れておく. 登録番号は入力順に1,2,3,4,5とする. そして, 登録されている人の平均年齢を計算する関数を作成せよ. 引数は, 配列の先頭アドレスを指す構造体person型のポインタとする.
772 名前:デフォルトの名無しさん [2009/07/08(水) 11:57:37 ] [1] 授業単元: 4次のルンゲ−クッタ法を用いて連立微分方程式を解く [2] 問題文:システムの状態x = (x, y, z) が、以下の連立微分方程式に従う場合の挙動をシミュレーション する. dx/dt= −y − z dy/dt= x + ay dz/dt= b + (x − c)z 【課題1】4 次のルンゲ-クッタ法を用いて上記方程式を数値的に解くプログラムreport.c を完 成させよ.report.c には3 つの関数が定義されている.ルンゲ-クッタ法を1 ステップ行う関数 rungekutta() は完成しているが、導関数を求める関数deriv() とプログラム全体を制御する関 数main() は不完全である.各関数に適切な実行文等を記述し、プログラムを実行できるよう完 成させよ. 【課題2】課題1で完成させたプログラムreport.c を用い、シミュレーションを実行する.シス テムパラメータが 1. (a, b, c) = (1.0, 0.2, 1.0) 2. (a, b, c) = (1.0, 0.2, 8.0) の2つの場合に、時刻t = 200.0 からt = 400.0 の間にx が位相空間に描く軌跡を図に表せ.シ ミュレーションの時間刻みはdt = 0.02 とし、初期値x(0) = (x(0), y(0), z(0)) は適当な値を選ぶ こと.またそれぞれの場合について、初期値をわずかに変化させた場合に軌跡がどのように変化 するかを、同様に図に表して比較せよ. [3] 環境 Vine Linux [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:2009年7月28日 [5] その他の制限:ソースは長いので次レスに投稿します。できれば理解したいのでコメント付きで解説して戴けると助かります。面倒臭い場合は結構です。 どうか宜しくお願いします。
773 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 11:58:52 ] ろだつかえよ
774 名前:デフォルトの名無しさん [2009/07/08(水) 12:07:00 ] >>772 です。ソースを三つに分けます。ややこしくてすみません。 #include <stdio.h> #include <math.h> #define N 3 //システムの次元 double a = 0.20; double b = 0.20; double c = 10.0; /* 導関数 */ /* x における dx/dt を求める */ void derivs(double t, double x[], double dxdt[]) { /* dx/dt = f(x) */ dxdt[0] = ; dxdt[1] = ; dxdt[2] = ; }
775 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:07:29 ] >>765 ニュートン法を用いる 問題>>540 解答>>543 (CODE) 長い解答なら、ろだつかえよ
776 名前:デフォルトの名無しさん [2009/07/08(水) 12:09:24 ] >>774 の続き /* ルンゲクッタ法を1ステップ行う関数 */ /* x(t)=xin から x(t+h)=xout を求める */ void rungekutta(double xin[], double xout[], double t, double h) { int i; double th2,h2,h6; double dxdt0[N], dxdt1[N], dxdt2[N], dxdt3[N], xt[N]; double deriv(double, double [], double []); h2=h*0.5; h6=h/6.0; th2=t+h2; derivs(t,xin,dxdt0); for(i=0;i<N;i++) xt[i] = xin[i] + h2*dxdt0[i]; derivs(th2,xt,dxdt1); for(i=0;i<N;i++) xt[i] = xin[i] + h2*dxdt1[i]; derivs(th2,xt,dxdt2); for(i=0;i<N;i++) xt[i] = xin[i] + h*dxdt2[i]; derivs(t+h,xt,dxdt3); for(i=0;i<N;i++) xout[i] = xin[i] + h6*(dxdt0[i]+2.0*(dxdt1[i]+dxdt2[i])+dxdt3[i]); }
777 名前:デフォルトの名無しさん [2009/07/08(水) 12:11:11 ] >>776 の続き int main() { int i; double t, tmax, dt; double x[N], x_next[N]; FILE *fp; void rungekutta(double [], double [], double, double); /* 諸変数を初期化 */ tmax = ; dt = ; /* システムの状態を表すベクトルx(N次元)の初期化 */ /* 計算結果を書き出す為のファイルを開く */ fp = fopen("result.dat","w"); /* 時間tを刻み幅dtずつ増加させながら時間発展 */ for(t=0.0;t<tmax;t+=dt){ /* 時刻tとxの各要素をファイルに書き出す */ fprintf(fp,"%lf %lf %lf %lf\n ", t, x[0], x[1], x[2]); /* xを更新 */ x += } /* ファイルを閉じる */ fclose(fp); return 0; }
778 名前:デフォルトの名無しさん [2009/07/08(水) 12:12:14 ] >>773 すいませんロダってどう使うのですか?
779 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:16:16 ] ハタチになると分かる。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
780 名前:デフォルトの名無しさん [2009/07/08(水) 12:29:36 ] >>779 ありがとうございます。今投稿してみたのですがファイルが添付されてませんでしたorz 参照にファイルを添付したら良いんですよね?こんな馬鹿に詳しく教えて貰えないでしょうか?
781 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:50:51 ] >>780 ここのうpろだはいちおう制限があるよ # 添付可能ファイル : TEXT, LHA, ZIP, C, CPP # 最大投稿データ量 : 100 KB
782 名前:デフォルトの名無しさん [2009/07/08(水) 14:08:18 ] >>775 そのプログラムをコンパイルしたらエラーが出ちゃったので出来ませんでした すいません
783 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:56:26 ] >>782 そうですか
784 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 16:20:34 ] [1] 授業単元:アルゴリズム入門 [2] 問題文(含コード&リンク): 課題1: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9702.txt 課題2: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9703.txt 課題3: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9704.txt [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限:7月9日 15:00まで [5] その他の制限: 特になし。どうかよろしくお願いします
785 名前:>>772 [2009/07/08(水) 17:18:53 ] >>781 さんありがとうございます。それで容量も1.5kでファイル形式もCなんでいけると思ってもう一度投稿しましたが無理でした... すいませんが>>772 を問題文、>>774 >>776 >>777 をソースファイルとしてどなたかお願いできますか?
786 名前:デフォルトの名無しさん [2009/07/08(水) 17:32:59 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9706.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VisualC++ [3.3] 言語: C [4] 期限: 7月13日 [5] その他の制限:一つ目の課題はテキストファイルからバイナリファイルの作成
787 名前:769 mailto:sage [2009/07/08(水) 17:53:28 ] >>764 問1 >>766 問2(1) >>767 問2(2) >>768 問3 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9707.txt
788 名前:デフォルトの名無しさん [2009/07/08(水) 18:12:28 ] Dijkstra法の課題が出たのですが全く分かりません。助けてください。 (課題) Dijkstra法のプログラムを完成せよ。 (Dijkstraのアルゴリズムの擬似コード) #include <stdio.h> #define M 8 //ノードの数 #define Z 300 //無限大 int c[M][M] = { 0, Z, Z, Z, Z, Z, 7, 2},{ Z, 0, 8, 7, Z, Z, Z, 1},{ Z, 8, 0, Z, Z, Z, Z,10},{ Z, 7, Z, 0,10, 3, Z, Z},{ Z, Z, Z,10, 0, 8, Z, 5}, { Z, Z, Z, 3, 8, 0, 2, Z}, { 7, Z, Z, Z, Z, 2, 0, 9}, { 2, 1,10, Z, 5, Z, 9, 0}; //隣接行列 int main(void){ int start; //ソースのノード int d[M]; //ノードまでのコスト int v[M]; //確定フラグ int p[M]; //前のノードへのポインタ printf("start\n"); scanf("%d",&a);//ソースノードstartを指定する for (j=0; j<M; j++){ //最小コストのノードを探す、最小コストのノードを確定する for(k=0; k<M; j++){ //wを経由してkにいたるコストがそれまでの最短路のコストより小さければd(k)を更新 } } //ソースノードから各ノードへの最小コストと最短路を表示する }
789 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 18:17:16 ] >>788 1>>嫁。テンプレ使おうぜ。
790 名前:デフォルトの名無しさん [2009/07/08(水) 19:28:29 ] [1] デジタル信号処理 [2] 入力したtxtファイルをFFT、IFFTせよ [3] 環境 [3.1] Windows [3.2] gcc 3.4 [3.3] C [4] 期限:7月8日 24:00まで よろしくお願いします
791 名前:デフォルトの名無しさん [2009/07/08(水) 19:39:21 ] [1] 授業単元:画像処理 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9708.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9709.txt u9.getuploader.com/himajinn/download/219/Dll_BMP_C.dll u9.getuploader.com/himajinn/download/220/Dll_BMP_C.h u9.getuploader.com/himajinn/download/221/Dll_BMP_C.lib [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:7月15日まで [5] その他の制限: お願いします
792 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:54:59 ] >>791 通報しようかどうしようか悩むな。 アウアウなことはガチなんだけど。
793 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:59:01 ] 某著作権寄生団体に見つかるまえに削除しとけー
794 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:23:22 ] >>786 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9710.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9711.c
795 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:24:16 ] バイナリと問題文で違いがあるの?
796 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:42:12 ] >>771 #include <stdio.h> struct person { int no; char *name; int age; }; double average_age(struct person *persons) { int n, sum = 0; for (n = 0; persons[n].name != NULL; n++) { sum += persons[n].age; } if (n == 0) { return -1; } else { return (double)sum / n; } } int main(void) { struct person persons[] = { {1, "ichiro", 30}, {2, "jiro", 27}, {3, "saburo", 23}, {4, "shiro", 19}, {5, NULL, 0} }; printf("平均年齢は%g\n", average_age(persons)); return 0; }
797 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:45:00 ] [1] C言語を使って計算を簡略化する: [2] XY平面上の3点P1(x1,y1)P2(x2,y2)P3(x3,y3)の座標を順に入力した時、3点が同一直線上にあるかどうかを調べて 結果を表示するプログラムを作成せよ。: [3] 環境 [3.1] Windows [3.2] Borland [3.3] C: [4] 2009年7月10日8:35まで: [5] その他制限: 入力される座標はすべて第一象限です。 よろしくお願いします。
798 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 22:15:37 ] >>797 #include <stdio.h> int main() { int x1,y1,x2,y2,x3,y3; printf("x1>"); scanf("%d", &x1); printf("y1>"); scanf("%d", &y1); printf("x2>"); scanf("%d", &x2); printf("y2>"); scanf("%d", &y2); printf("x3>"); scanf("%d", &x3); printf("y3>"); scanf("%d", &y3); if ((x3 - x1) * (y2 - y1) == (x2 - x1) * (y3 - y1)) printf("同一直線上にあります\n"); else printf("同一直線上にありません\n"); return 0; }
799 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 22:26:35 ] [1]C言語中級 [2] int bitmap[640][480]はビットマップ画像の画素を表すものとする。 指定された点x,yを含む指定された境界色C2で囲まれた平面領域を 指定された色C1で塗りつぶす関数 paint(int x,int y,int c1,int c2)を作成 [3] linux/gcc/C言語 ☆再帰(間接を含む)を使ってはならない。 ☆十分な速度が必要( 基準PC(PCセンター端末 Cerelon 800MHz)で100回/秒以上) ☆三角形、四角形、円、楕円、放物線で囲まれた領域、それぞれ5つのケース について実行前のbitmapと実行後の配列をバイナリファイルとして triangle.pre.bitmap triangle.post.bitmap rectangle.pre.bitmap rectangle.post.bitmap circle.pre.bitmap circle.post.bitmap ellipse.pre.bitmap ellipse.post.bitmap parabora.pre.bitmap parabora.post.bitmap という名称で保存したものとソースコード、これをコンパイルしたものを work20090717.xxxxxx.zipという形式でzip圧縮したものをメール添付 (xxxxxxは学籍番号下6桁) [4] 7/17 正午まで
800 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 22:26:48 ] >>798 ありがとうございます!できました
801 名前:デフォルトの名無しさん [2009/07/09(木) 04:59:49 ] [1] 授業単元: コンピュータネットワーク [2] 問題文(含コード&リンク):(課題) Dijkstra法のプログラムを完成せよ。 (Dijkstraのアルゴリズムの擬似コード) #include <stdio.h> #define M 8 //ノードの数 #define Z 300 //無限大 int c[M][M] = { 0, Z, Z, Z, Z, Z, 7, 2},{ Z, 0, 8, 7, Z, Z, Z, 1},{ Z, 8, 0, Z, Z, Z, Z,10},{ Z, 7, Z, 0,10, 3, Z, Z},{ Z, Z, Z,10, 0, 8, Z, 5}, { Z, Z, Z, 3, 8, 0, 2, Z}, { 7, Z, Z, Z, Z, 2, 0, 9}, { 2, 1,10, Z, 5, Z, 9, 0}; //隣接行列 int main(void){ int start; //ソースのノード int d[M]; //ノードまでのコスト int v[M]; //確定フラグ int p[M]; //前のノードへのポインタ printf("start\n"); scanf("%d",&a);//ソースノードstartを指定する for (j=0; j<M; j++){ //最小コストのノードを探す、最小コストのノードを確定する for(k=0; k<M; j++){ //wを経由してkにいたるコストがそれまでの最短路のコストより小さければd(k)を更新 } } //ソースノードから各ノードへの最小コストと最短路を表示する } [3] 環境 [3.1] OS: Windows [3.3] 言語: C++ [4] 期限: 2009年7月9日16:00まで [5] その他の制限:なし 488です。焦りすぎて規約を読まずに投稿してしまいました。すみません。 期限ギリギリなのですがお力を貸していただけると嬉しいです。よろしくお願いします。
802 名前:784 mailto:sage [2009/07/09(木) 09:35:23 ] 784です。 一晩やってみたのですが、結局まったく出来ずに朝を迎えてしまいました・・・orz どなたか、どうかお願いします。
803 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 09:56:18 ] >>802 少し簡単にしてみた char* getword(FILE* f){ char buffer[MAXSIZE]={0}, firstchar[10]={0}; fscanf(f, "%*[^a-zA-Z]"); if(fscanf(f, "%1[a-zA-Z]%1022[0-9a-zA-Z]", firstchar, buffer+1)>=1){ buffer[0]=firstchar[0]; return strdup(buffer); } return NULL; }
804 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:47:17 ] [1] 授業単元:確率論 [2] 問題文(含コード&リンク): ・正規乱数の発生 (ボックスミュラー法) ボックス・ミュラー法により,区間[0, 1) の一様乱数から標準正規分布N(0, 1) に従う 正規乱数を100,000 個発生し,そのデータから得られる以下の各項目を報告せよ。 なお、一様乱数の生成は合同式法を用い,また正規乱数の生成はBox-Muller 法 を用いて,いずれもC言語プログラムで実現すること.(既存のRAND関数などを用いてはならない) 1. 正規乱数の平均値. 2. 正規乱数の標準偏差. 3. 正規乱数のヒストグラム.区間[-5, 5] を100 分割したものとする. (ヒストグラムはhistgram[100]の様に宣言し、100個それぞれの出現個数を足していったものです) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2009年7月10日12:00まで] [5] その他の制限: 既存のRAND関数使用不可 先日>>251 で教えていただいた中心極限定理を書き換えて作成していたのですが、 上手くできませんでした。 宜しくお願いします。
805 名前:デフォルトの名無しさん [2009/07/09(木) 11:53:21 ] >>804 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9712.txt RAND_MAXがダメだって話だったから、INT_MAXに書き換えておいた。
806 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:19:34 ] [1] 授業単元: 情報処理 [2] 問題文(含コード&リンク): 二つの複素数 α、βの実数部、虚数部の値(実数)をそれぞれ入力し、 α/β (αをβで割った商)を求めて表示せよ。(表示方法は複素数らしくなるよ うに工夫せよ。) ただし、複素数を、実数部と虚数部に対応するメンバで構成される構造体 として表し、複素数の除算用関数c_div()を作成して、これを利用すること。 この関数は、sとtを複素数を表す構造体としたとき、c_div(s,t)と呼び出 すと、戻り値としてsをtで除算した結果である複素数の構造体を返すものと する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: c++Builder [3.3] 言語: C [4] 期限: 2009年7月10日12:00まで [5] その他の制限: なし お願いします。
807 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:28:34 ] >>806 あれ?デジャブ・・・
808 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:28:30 ] >>802 こんなんでいいかい? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9713.zip
809 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:29:10 ] >>801 もう見てないかも試練がクソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9714.c
810 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:46:45 ] >>805 ありがとうございました。
811 名前:デフォルトの名無しさん [2009/07/09(木) 14:52:22 ] >>809 ありがとうございました。 助かりました!
812 名前:デフォルトの名無しさん [2009/07/09(木) 14:58:07 ] [1] 授業単元:C言語で簡単なゲーム [2] 4目並べの勝ち負け判定 [3] 環境 [3.1] OS: UNIX [3.2] gcc [3.3] cのみ [4] 期限: 7/9 18:00 [5] その他の制限:できるだけ簡単な作りにしていただきたいです。中高生なみの。 お願いします。
813 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:08:12 ] >>812 4目並べにもいろいろあるぞ。重力の有無、盤面サイズ、その他もろもろを教えれ
814 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:19:41 ] >>806 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9716.txt 思いっきりデジャブだけど、その時に作ったソースがそのまま 残っているのでそのままうpした
815 名前:784 mailto:sage [2009/07/09(木) 15:23:16 ] >808 すいません、今見に来ました。 何とか今日の夜まで猶予をもらったので、 もう一度zip落とさせてもらえないでしょうか。 落としてみたら、ファイルが無かったようなので・・・。
816 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:24:11 ] >>815 今やってみたら普通に落とせたけど?
817 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:24:37 ] >>815 まだ残ってるぞ
818 名前:784 mailto:sage [2009/07/09(木) 15:30:02 ] すいません、今もう一度やってみたらできました!! >>816 >>817 失礼しました。 >>784 本当にありがとうございました!大感謝です。 これで単位がもらえる・・・ 皆様、ありがとうございました。
819 名前:784 mailto:sage [2009/07/09(木) 15:31:08 ] 興奮して間違えたorz 改めて >>808 ありがとうございました!
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>しか使ったこと無いので・・・