1 名前:デフォルトの名無しさん [2009/01/15(木) 23:21:27 ] あなたが解けない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++の宿題を片付けます 121代目 pc11.2ch.net/test/read.cgi/tech/1230678123/
47 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 03:08:02 ] >>46 スパコン甲子園かと思ったら、パソコン甲子園なんだな・・・
48 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 03:16:41 ] >>47 高校生が20分掛けずに解くことになっている問題じゃねーか!
49 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 03:20:20 ] 1問あたり20分?
50 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 03:49:05 ] >>49 予選の問題だろ? 180分で10問だってさ。
51 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 03:52:37 ] >>50 本選の問題で、240分で12題の配分。
52 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 04:38:32 ] >>46 こんな? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8791.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8792.txt
53 名前:デフォルトの名無しさん [2009/01/31(土) 05:13:15 ] >>52 iostreamライブラリ関数(習っていない)を使わないで 入力もscanfをつかって表現できませんか? 実際、C言語習って3か月しかたってないので 基礎しかわかりません・・。
54 名前:デフォルトの名無しさん [2009/01/31(土) 05:28:08 ] 46>> main関数以外と最後に書いてありますが main関数も使って結構です。 要するに二つの関数を用いれば結構です。 たびたび、すみません
55 名前:デフォルトの名無しさん [2009/01/31(土) 05:32:15 ] [1] 授業単元:while文 [2] 問題文:キーボードから入力された2以上の自然数nが素数であるかどうか繰り返し調べるプログラムを作ってみましょう。 1回終わるごとに「次の2以上の自然数を入力してください」と再入力 nに0以下の整数が入力された場合は 「0以下の整数が入力されました」 「次の2以上の自然数を入力してください」と再入力 nに1が入力されたら「終了します」として調べるのを終える [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Borland C++ Compiler、bcc developer [3.3] 言語: C++ [4] 期限:2009年2月2日10:30まで [5] その他の制限:while(1)で無限ループとか、goto文使えばできるんですが授業で扱ってません。。
56 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:35:30 ] >>53 C++なのにiostreamやってないの? Cなんじゃないの?
57 名前:デフォルトの名無しさん [2009/01/31(土) 05:48:28 ] >>56 まだ習ってないです・・汗
58 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:50:34 ] それは酷いな
59 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 06:23:56 ] >>55 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8793.cpp
60 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 09:34:30 ] >>53 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8794.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8795.txt 殆んど意味不明。 >>46 には一次元配列と書いてあるが使うところが無いし
61 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 09:50:08 ] 問3は配列を使いたいね
62 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:14:54 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8796.txt
63 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:06:46 ] 前スレで回答いただいた者(>>973 )ですが、 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8788.c をコンパイルしたところ、 59: 警告 return type of 'main' is not 'int' と表示されます。どう直せばよいのでしょうか?
64 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:20:04 ] >>63 やむを得まい、int main(void) { return0; } にするしかない。
65 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:37:57 ] >>64 ありがとうございました!
66 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:42:48 ] >>46 面白い問題だ 制限時間内に全問正解できる自信がないぜw
67 名前:デフォルトの名無しさん [2009/01/31(土) 15:34:18 ] >>46 高校レベルなの??
68 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:46:13 ] >>46 プログラムとしてはどうか知らんが 数学的には未解決問題の上に賞金もかけられていたはず
69 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:46:34 ] >>59 本当にありがとうございます! すっきりしててわかりやすいです!
70 名前:デフォルトの名無しさん [2009/01/31(土) 15:58:37 ] >>68 与えられた数字より、小さい数字に出来ることを示せばいい。 たとえば、100から始めたら、99以下になる事を示す。 そうすれば数学的帰納法で全ての数字で成り立つ。
71 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:59:47 ] >>70 言ってることは尤もなんだが 数学者を馬鹿にしてるのかw
72 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:06:39 ] >>70 たしかICMで我々人類がこれらの問題を解決するにはまだ十分な準備ができていない発言があったはず
73 名前:デフォルトの名無しさん [2009/01/31(土) 16:11:29 ] これって1から逆にたどったら、全ての数字が生成出来るのかな。 もし生成出来て、試行回数に応じた出現回数の上限が存在すれば解ける。
74 名前:デフォルトの名無しさん [2009/01/31(土) 16:12:21 ] 間違えた もし生成出来て、試行回数に応じた出現数字の上限が存在すれば解ける。
75 名前:デフォルトの名無しさん [2009/01/31(土) 16:16:33 ] 1から逆にたどったn回の試行で、f(n)以下の数字が全て生成出来る という関数f(n)が決定出来れば、解ける。
76 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:16:44 ] >>73 5 → 16 32 → 16 これを逆にたどるとすると枝が多すぎて解析不能
77 名前:デフォルトの名無しさん [2009/01/31(土) 16:20:27 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク): 自動販売機のオブジェクトを作成しないさい (商品はオレンジジュース、コーラ、サイダーの三つにする事)更に下記の条件を満たすこと <条件> 自動販売機で購入できる「商品」,「お金」,「自動販売機」は最低限クラス化すること。 「カプセル化」,「継承」,「多様性」を全て利用すること。 例外処理をすること(プログラムが頓挫した時点でNGとします)。 入出力は,下記のとおり行うこと。 【入力】 【出力】 ・お金(10円〜1000円)の個数(枚数) ・つり銭(10円〜100円)の個数(枚数)と総購入代金 ・購入商品選択(複数可) ・購入商品名(複数) 実現は,main()関数で「自動販売機」クラスのインスタンスを1つ作成し,そのクラスのbuy( )メンバ関数を呼び出したら全てが動作するようにする。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VB2005 [3.3] 言語: C++ [4] 期限: 2/1まで [5] その他の制限: 特になし。
78 名前:デフォルトの名無しさん [2009/01/31(土) 16:25:12 ] n回の試行でlog_10(n)以下の数字が全て生成出来るは合ってるか?
79 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:29:35 ] >>76 だな コラッツ予想の写像がN→Nへの全単射でないからな どうにもならん
80 名前:デフォルトの名無しさん [2009/01/31(土) 16:43:13 ] 別に、分岐があってもいいんだ。 全ての数字が生成出来るなら1へたどり着けるからな。 n回試行でlog_10(n)以下の数字生成出来るを証明すれば解けるぞ。 この評価は間違ってはいないと思うが。 10^4 = 10000 回試行で4以下を生成すればいいという余裕と思われる評価。
81 名前:デフォルトの名無しさん [2009/01/31(土) 16:50:01 ] 2進数だと、シフト(2倍する)と1を加えるで、全ての数字が生成出来るが 同じような理屈でできないか?
82 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:20:24 ] >>77 おいおいVBってなんだよw
83 名前:デフォルトの名無しさん [2009/01/31(土) 17:27:03 ] ろだのPOSシステムの問題どなたかお願いします。
84 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:43:24 ] >>83 >>1 くらいよめ 読む前に死ね
85 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:44:42 ] >>46 ハミング問題が15点とかきついな。
86 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:41:57 ] int isHamming(int n) { while(n % 2 == 0) n /= 2; while(n % 3 == 0) n /= 3; while(n % 5 == 0) n /= 5; return n == 1 ? 1 : 0; } この程度の関数で十分だろ
87 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:11:33 ] wwwwwwwwwwwwwwwwwwwwww
88 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:13:36 ] >>77 例外処理してない&動くかどうかしらんが、 class jusu{ public: virtual int p(){ return 0; } }; class orenji : public jusu{ public: int p(){ return 120; } }; class kora : public jusu{ public: int p(){ return 120; } }; class saida : public jusu{ public: int p(){ return 120; } }; class okane{ int _10, _50, _100, _500, _1000; public: okane(){} okane(int a, int b, int c, int d, int e){ _10=a; _50=b; _100=c; _500=d; _1000=e; } int p(){ return _10*10+_50*50+_100*100+_500*500+_1000*1000; } }; class hanbaiki{ public: okane Buy(okane kane, int o, int k, int s, jusu *syohin){ int out=0; for(int i=0; i<o; ++i, syohin[out++] = orenji()); for(int i=0; i<k; ++i, syohin[out++] = kora()); for(int i=0; i<s; ++i, syohin[out++] = saida()); int turi = kane.p()-o*orenji().p()+k*kora().p()+s*saida().p(); int _1000=turi/1000; turi-=_1000; int _500=turi/500; turi-=_500; int _100=turi/100; turi-=_100; int _50=turi/50; turi-=_50; int _10=turi/10; turi-=_10; return okane(_10, _50, _100, _500, _1000); }}; int main(){ jusu syohin[100]; okane oturi = hanbaiki().Buy(okane(1,1,1,1,1), 1, 1, 1, syohin); return 0; };
89 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:21:46 ] ちょっとなおした。でも多分まだ間違ってる。でもやるきないのでこれで終わり。 class jusu{ public: virtual int p(){ return 0; } }; class orenji : public jusu{ public: int p(){ return 120; } }; class kora : public jusu{ public: int p(){ return 120; } }; class saida : public jusu{ public: int p(){ return 120; } }; class okane{ int _10, _50, _100, _500, _1000; public: okane(){} okane(int a, int b, int c, int d, int e){ _10=a; _50=b; _100=c; _500=d; _1000=e; } int p(){ return _10*10+_50*50+_100*100+_500*500+_1000*1000; } }; class hanbaiki{ public: okane Buy(okane kane, int o, int k, int s, jusu *syohin){ int out=0; for(int i=0; i<o; ++i, syohin[out++] = orenji()); for(int i=0; i<k; ++i, syohin[out++] = kora()); for(int i=0; i<s; ++i, syohin[out++] = saida()); int turi = kane.p()-o*orenji().p()+k*kora().p()+s*saida().p(); int _1000=turi/1000; turi-=_1000*1000; int _500=turi/500; turi-=_500*500; int _100=turi/100; turi-=_100*100; int _50=turi/50; turi-=_50*50; int _10=turi/10; turi-=_10*10; return okane(_10, _50, _100, _500, _1000); }}; int main(){ jusu syohin[100]; okane oturi = hanbaiki().Buy(okane(1,1,1,1,1), 1, 1, 1, syohin); return 0; };
90 名前:デフォルトの名無しさん [2009/01/31(土) 20:30:39 ] 0TEN
91 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:03:02 ] >>89 1660円入れて、おつりが1780円?
92 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:06:48 ] _10とかの変数名見てふと思ったんだけど、 Javaの変数名って日本語文字使えるのん?
93 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:09:04 ] 使えない
94 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:12:49 ] 使えるよw
95 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:16:23 ] 試してみればいいよ
96 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:19:17 ] まじだ、JAVAのパーサはUNICODEで解釈するのか。
97 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:19:58 ] あ、やっぱりだめなのね。 わしの持ってる本にはウムラウトとかが許されるって書いてあるから 漢字もできるのかと思った。
98 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:20:43 ] あれw 使えるの? あはーん? Visual Studio 2008はJ++廃止されちゃったから試せない。
99 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:17:54 ] C#は使えるな
100 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:23:38 ] 1] 授業単元:数値計算演習 [2] 問題文:次の二階微分方程式を解け。初期値は適当にとれ。 dv_x/dt=x/(x^2+y^2) , dx/dt=v_x dv_y/dt=y/(x^2+y^2) , dy/dt=v_y [3.1] OS: Windows [3.2] コンパイラ名:Borland C++ Compiler、bcc developer [3.3] 言語: C [4] 期限:2月2日 [5] その他の制限:常微分方程式のルンゲクッタでググって調べたんですが、 この問題は変数が多くて応用できませんでした。どなたかよろしくお願いします。
101 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 01:04:09 ] >>100 まあ、この式をどう読むのかも知らん
102 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 01:05:40 ] >>98 J++でできるからといってJAVAでできると言ってしまうのはひどい 逆にJAVAで可能なのかどうかを調べる為にJ++を使用するのもひどい
103 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 01:06:35 ] >>91 おつり計算のところ、括弧忘れてるね
104 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 02:33:56 ] >>100 ルンゲクッタ使うならこんな感じでいい希ガス kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8797.txt
105 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 12:03:43 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8798.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC2005EE [3.3] 言語:C++ [4] 期限:09/02/03迄 [5] その他の制限:問4以外は#include <stdio.h> void main(){ ではじまること。 問1はttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8799.txt の続きでお願いします。最小値がどうも0になってしまいます。 それではよろしくお願いします。
106 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:10:04 ] >>105 問1はmin=1000ぐらいにしとけ それより問5が正常に動作していない件について
107 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 14:49:43 ] >>100 微分方程式の数値解としか言われてないならオイラー法で良かろう。一応1次のルンゲクッタだ。 >>105 問2 /* ヘッダとかdefineとか自分で考えてくれ。 */ int main(void){ char user_name[256]; int i,len; puts("Input User Name"); scanf("%s",user_name); len = strlen(user_name) - 1; if( len > 8 || len <= 0 ) { printf("ユーザー名入力エラーです :: len=%d\n",len); exit(1); } if( !isupper(user_name[0]) && !islower(user_name[0] ) { printf("ユーザー名の先頭文字が異常です :: %c\n", user_name[0]); exit(1);} for(i=0;i<8;i++) if( !isalnum(user_name[i])) { printf("ユーザー名の一部が異常です :: %s\n", user_name); exit(1);} sprintf(user_name,"メールアドレス : %s@%s",user_name,"helloworld.com"); puts(user_name); reutrn 0; }
108 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 15:10:38 ] if( !isupper(user_name[0]) && !islower(user_name[0] ) { if( !isalpha(user_name[0]) ) { for (i=0;i<8;i++) for (i=1;i<len;i++) sprintf(user_name, printf( puts(user_name);
109 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:19:22 ] >>105 問1に関して maxとminを0で初期化するのは適切ではない 2個目のfor文の前で max=a[0]; min=a[0]; のようにすべき
110 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:30:45 ] >>105 問4 #include <stdio.h> #include <math.h> void main(){ int a,b,c; double x1,x2; int D; printf("a = ");scanf("%d",&a); printf("b = ");scanf("%d",&b); printf("c = ");scanf("%d",&c); D = b*b - 4*a*c; if(D > 0){ x1 = (-b - sqrt(D))/ 2*a; x2 = (-b + sqrt(D))/ 2*a; printf("二次方程式 %d x^2 + %d x+ %d = 0 は相異なる2つの実数解を持ち、解の値は%.2fと%.2fです。\n",a,b,c,x1,x2); } else if(D == 0){ x1 = -b / 2*a; printf("二次方程式 %d x^2 + %d x+ %d = 0 は重解を持ち、解の値は%.2fです。\n",a,b,c,x1); } else{ printf("二次方程式 %d x^2 + %d x+ %d = 0 は実数解を持ちません。\n",a,b,c); } }
111 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 19:04:47 ] >>105 問5 #include <stdio.h> void main(){ int i; char str1[256]; char str2[256]; int count1 = 0; int count2 = 0; printf("文字列1:");fgets(str1,256,stdin); printf("文字列2:");fgets(str2,256,stdin); for(i = 0; str1[i] != '\0'; i++){if(str1[i] == ' ') count1++;} for(i = 0; str2[i] != '\0'; i++){if(str2[i] == ' ') count2++;} printf("文字列1中の英単語の数= %d\n",count1+1); printf("文字列2中の英単語の数= %d\n",count2+1); printf("英単語の数が多い方の文字列は 文字列%d です。\n",(count1 > count2) ? 1 : 2); }
112 名前:デフォルトの名無しさん [2009/02/01(日) 20:27:47 ] [1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8800.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: ([2009年02月2日 20:00まで] [5] その他の制限: よろしくお願いします。
113 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:47:23 ] >>112 式の長さの上限は?
114 名前:デフォルトの名無しさん [2009/02/01(日) 22:14:05 ] >>113 特にありません
115 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:40:06 ] >>112 括弧を対応させる方法が思い出せない #include <stdio.h> #include <stdlib.h> #include <ctype.h> char b[256], *p = b; double t(void){ double t = 0; while(1){ if(isspace(*p)) p++; else if(*p == '*'){ p++; t *= strtol(p, &p, 10);} else if(*p == '/'){ p++; t /= strtol(p, &p, 10);} else if(isdigit(*p)) t = strtol(p, &p, 10); else return t; } } double e(double r){ while(1){ if(isspace(*p)) p++; else if(*p == '\0') return r; else if(*p == '+'){ p++; r += t();} else if(*p == '-'){ p++; r -= t();} else r = t(); } } int main(int c, char *v[]){ FILE *in, *out; if(c < 3 || (in = fopen(v[1], "r")) == NULL || (out = fopen(v[2], "w")) == NULL) return 1; fscanf(in, "%255[^\n]", b); fprintf(out, "%g\n", e(t())); return fclose(in), fclose(out), 0; }
116 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:42:36 ] 【質問テンプレ】 [1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク): keisan.casio.jp/has10/SpecExec.cgi?path=07000000%2e%93%9d%8cv%8a%d6%90%94%2f01001000%2e%90%b3%8bK%95%aa%95z%2f11003100%2e%90%b3%8bK%95%aa%95z%2fdefault%2exml 上記のリンクの様に、 変数x、平均μ、標準偏差σを与えて 正規分布の確率密度 f(x)、下側累積確率 P(x)、上側累積確率 Q(x)を求める関数を実装したいです。 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (gcc 3.4.4) [3.3] 言語: (C/C++/どちらでも可) [4] 期限: 2009年02月02日12:00まで [5] その他の制限: 過去ログ等を漁りましたがありませんでした。 よろしくお願いします。
117 名前:116 mailto:sage [2009/02/01(日) 23:00:56 ] なお、以下のような、平均0、標準偏差1の場合に 下側累積確率、上側累積確率を求める関数を見つけたのですが、 どのように変更を加えて良いのかわかりませんでした。 ご教授お願いします。 #include <math.h> #define PI 3.14159265358979323846264 double p_nor(double z) /* 正規分布の下側累積確率 */ { int i; double z2, prev, p, t; z2 = z * z; t = p = z * exp(-0.5 * z2) / sqrt(2 * PI); for (i = 3; i < 200; i += 2) { prev = p; t *= z2 / i; p += t; if (p == prev) return 0.5 + p; } return (z > 0); } double q_nor(double z) /* 正規分布の上側累積確率 */ { return 1 - p_nor(z); }
118 名前:デフォルトの名無しさん [2009/02/01(日) 23:48:49 ] >>107-111 ありがとうございます。 問5はできたのですがそれ以外ができません。 問1は>>109 の通りにやったら最小値でました!ありがとうございます。 平均値はどのようにして出せばいいのでしょうか? それではよろしくお願いします。
119 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 23:53:00 ] >>118 > 平均値はどのようにして出せばいいのでしょうか? 値を全部足して、それを値の個数で割る
120 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 23:53:40 ] >>118 >問5はできたのですがそれ以外ができません。 難しくて全く理解できないのか、自分で作ってバグがでるのか、何を求めているのか。 言われなきゃ分からんとはな。
121 名前:デフォルトの名無しさん [2009/02/02(月) 00:12:12 ] >>119 >>120 ごめんなさい。質問する以前の問題でしたね・・・。 問1:全ての値の合計の仕方がわかりません。 問2:>>107 を見てやってみたのですがバグが出てしまって、自分で直そうとしたんですが難しくて手のつけようが・・・。 問3:問2を少し弄れば出来そうな気はします 問4:バグがでます
122 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:12:29 ] あぁ、またsage忘れたorz
123 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:21:37 ] これはひどい
124 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:39:39 ] >>121 合計の出し方 sumを0に初期化 2個目のfor文の中でsum+=a[i]; エラーメッセージを貼るなりしてくれないと どんなバグが出てるのかわからない
125 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:48:26 ] >>124 問2>>107 を実行すると 1>.\11.cpp(8) : error C3861: 'strlen': 識別子が見つかりませんでした 1>.\11.cpp(9) : error C3861: 'exit': 識別子が見つかりませんでした 1>.\11.cpp(10) : error C3861: 'isupper': 識別子が見つかりませんでした 1>.\11.cpp(10) : error C3861: 'islower': 識別子が見つかりませんでした 1>.\11.cpp(10) : error C3861: 'exit': 識別子が見つかりませんでした 1>.\11.cpp(11) : error C3861: 'isalnum': 識別子が見つかりませんでした 1>.\11.cpp(11) : error C3861: 'exit': 識別子が見つかりませんでした 1>.\11.cpp(14) : error C2065: 'reutrn' : 定義されていない識別子です。 1>.\11.cpp(14) : error C2143: 構文エラー : ';' が '定数' の前にありません。 講義で習ってないものばかりで・・・。 >>108 は一体? 問4>>110 を実行すると 1>.\11.cpp(12) : error C2668: 'sqrt' : オーバーロード関数の呼び出しを解決することができません。 1> D:\c++\VC\include\math.h(581): 'long double sqrt(long double)' の可能性があります。 1> D:\c++\VC\include\math.h(533): または 'float sqrt(float)' 1> D:\c++\VC\include\math.h(128): または 'double sqrt(double)' 1> 引数リスト '(int)' を一致させようとしているとき 1>.\11.cpp(13) : error C2668: 'sqrt' : オーバーロード関数の呼び出しを解決することができません。 1> D:\c++\VC\include\math.h(581): 'long double sqrt(long double)' の可能性があります。 1> D:\c++\VC\include\math.h(533): または 'float sqrt(float)' 1> D:\c++\VC\include\math.h(128): または 'double sqrt(double)' 1> 引数リスト '(int)' を一致させようとしているとき
126 名前:107 mailto:sage [2009/02/02(月) 01:10:16 ] ヘッダ自分で調べるくらいできるだろう。 strlen , exit , isupper , islower , isalnum ググれ。 returnのタイプミスはすまないが、気付かない方も考えてない証拠かと。 return 0; を 「reutrn 0;」と書けば、reutrnを変数などの識別詞とみなすから 「INTMAX 0;」とか「1 0;」と同等に扱われる。 returnに直せば問題解消。無意味だが「reutrn; 0;」とすれば、警告は片方減る。
127 名前:110 mailto:sage [2009/02/02(月) 01:15:20 ] >>125 VCでビルドしなかったのは俺のミスだ sqrt(D)をsqrt((double)D)に直してくれ
128 名前:デフォルトの名無しさん [2009/02/02(月) 01:19:33 ] >>126 仰るとおりです。申し訳ありません。 >>127 ありがとうございます できました!
129 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:24:31 ] >>125 >>108 は>>107 の修正分を書いてる。 if( !isupper(user_name[0]) && !islower(user_name[0] ) { を if( !isalpha(user_name[0]) ) { にする。 一行しかないものは削除
130 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 03:08:57 ] >>117 関数の引数を↓のようにして(muは平均sigmaは標準偏差) double p_nor(double z, double mu, double sigma) 変数を宣言しているすぐ下に z = (z-mu)/sigma; を追加すればおk
131 名前:116 mailto:sage [2009/02/02(月) 03:27:12 ] >>130 できました! こんな夜中にありがとうございます! t = p = z * exp(-0.5 * z2) / (sqrt(2 * PI) * sigma); のように、ここにもsigmaをかけなければいけないと思ってて 3日間ほどずっと悩んでました。 ほんとありがとうございます!
132 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 06:14:06 ] fprintfとfscanfを同時に使用する場合、fopenのモードは何にすれば良いのでしょうか? 当方初心者でかなり無知ですがよろしくおねがいします。
133 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 06:55:57 ] 自己解決したすまね。 fopenを別々ですね。
134 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:57:09 ] [1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8801.txt [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4] 期限: 2009年02月4日 まで [5] その他の制限: C言語の宿題だったのでお願いしました。 他の方と系統は違いますが、よろしくおねがいします。
135 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 11:47:57 ] フローチャートくらい・・・ って思ってしまう俺は疲れてるのかな。
136 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 11:49:01 ] 疲れているなら、風呂に入っちゃ〜
137 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 11:50:34 ] 一緒に入りませんか?
138 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:07:40 ] おれバイト&社会人でプログラム8年くらいやってるんだけど フローチャートって使ったことない。使うもんなの?
139 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:09:11 ] >>133 ふつうは "r+" とか "w+" だな 同時と言っても順序・タイミング考えないとぐちゃぐちゃになってしまうが
140 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:09:31 ] >>138 今はどうか知らんけど、パチンコやパチスロのソフトは認可通すのに必須だとか?
141 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:16:55 ] >>138 使う場合もあるしない場合もあるけど ISOなんちゃらの監査の時に資料がいるので一応作っている
142 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:39:06 ] >>140-141 そういう使い方なのか・・・ フローチャート書けるってことは、論理がわかってるってことだから 結局同じ手間でソースかけるような気がするんだよね。 だからフローチャートの必要性がわからんかった。
143 名前:デフォルトの名無しさん [2009/02/02(月) 13:30:04 ] [1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8800.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual Studio [3.3] 言語: C言語 [4] 期限: ([2009年02月3日 23:00まで] [5] その他の制限:
144 名前:デフォルトの名無しさん [2009/02/02(月) 13:47:15 ] [1] 授業単元:プログラミング応用 [2] 問題文(含コード&リンク):ttp://beatguiter.xxxxxxxx.jp/text.html [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: ([2009年2月2日0:00まで] [5] その他の制限: 特にないが構造体とファイル処理まで習いました。
145 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:10:00 ] [1] 授業単元: 人工知能演習 [2] 問題文(含コード&リンク): Hopfieldネットワークの連想う記憶に関する以下の2つの課題を行いなさい。 Hopfieldネットワークとしては、ニューロン数N=63のものを考える。また記憶さ せるパターンは、numbers.txtにある、0〜9までの数字のイメージをもちいる。 課題→kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8802.txt numbers.txt→kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8803.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2月4日23:59まで [5] その他の制限: 特になし
146 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:21:34 ] >>145 追記です よろしくお願いします。助けてください。
147 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:43:29 ] >>144 問1(exam01)を気まぐれにソースかいてみた。パーツに分けて書いた。 int main(void){ int Ary[5],i; int Sum,Max,Min; for(i=0;i<5;i++){ // 入力部 printf("Input Data Ary[%d] ?? ",i); scanf("%d",Ary+i); } for(i=Sum=0;i<5;i++){ // 最大値計算部 Sum += Ary[i]; } Max = Min = Ary[0]; // 0個目までの最小値最大値 for(i=1;i<5;i++){ // 1〜4個目までの最小値最大値 if(Ary[i]>Max) Max = Ary[i]; if(Ary[i]<Min) Min = Ary[i]; } // 結果出力 printf("\t合計値 = %5d (Sum)\n",Sum); printf("\t最小値 = %5d (Min), 最大値 = %5d (Max)\n",Min,Max); printf("逆順:"); for(i=4;i>=0;i--){ // 逆順(forのデクリメント使用) printf("%+5d ",Ary[i]); // インクリメントが良ければ書き直してくれ } return 0; }