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/
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; }
148 名前:デフォルトの名無しさん [2009/02/02(月) 15:17:00 ] >>147 課題1のすっごいわかりやすかったです!!! ありがとうございます、助かりました!!! @課題2・3誰か助けてください orz
149 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:47:11 ] >>144 ,148 課題2 #include<stdio.h> void put_n(char c,int n){ while(n--)printf("%c",c); printf("\n"); } int main(void){ int i,n; scanf("%d",&n); while(n<=0){ printf("正の整数を入力してください。\n"); scanf("%d",&n); } for(i=1;i<=n;i++)put_n('*',i); printf("\n"); for(i=n;i;i--)put_n('*',i); return 0; }
150 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:24:03 ] 課題3.コメントアウトつけなかったけど、ま分かるだろう。 #include <stdio.h> #include <string.h> int count_char(const char* s, char c){ int i,length,count=0; length = strlen(s)-1; for(i=0;i<length;i++) if( s[i] == c) count++; return count; } int main(void){ int Size,i,tmpCount; char strBuff[5][256]; for(i=0;i<5;i++){ printf("Input String (%d) ?? ",i); scanf("%s",strBuff[i]); } for(i=0;i<5;i++){ tmpCount = count_char(strBuff[i],'a'); if(tmpCount == 0) continue; printf("文字列[%s]に含まれる'a'の個数は%2dです\n",strBuff[i],tmpCount); } return 0; }
151 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:25:28 ] >>149 課題提出に問題ないと思うけど 問題文の解釈は自分ではこうなるけど、、、 while(n<=0){ printf("Input n ?? "); scanf("%d",&n); if(n>0) break; printf("正の整数を入力してください。\n"); //問題文から警告と読み取るとこの位置 } for文と条件演算子使うと1行で(簡単なんだか難解なんだか) // for(Size=0;Size<1;Size<1?puts("正の値を入力してください"):0 ) scanf("%d",&Size);
152 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:37:51 ] >>151 scanf("%d",&n); while(n<=0){ printf("正の整数を入力してください。\n"); scanf("%d",&n); } 入力部はこれでひと塊なんだ
153 名前:デフォルトの名無しさん [2009/02/02(月) 16:48:57 ] >>144 です >>150 を試してみましたが 色々入力してみて結果をみると a が含まれてるのに表示されないのがあります どう改善すればいいでしょうか;;;
154 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:51:16 ] >>153 fgets を使う
155 名前:デフォルトの名無しさん [2009/02/02(月) 17:03:33 ] >>154 fgets って言うのは習ってないので どこに組み込めばいいか分からないです…。
156 名前:150-151 mailto:sage [2009/02/02(月) 17:11:59 ] >>152 自分でコンパイルしてなかった。すまん。 >>153 >>155 strlenが改行コード含むと思ってプログラムしてたから、自作関数の-1を消してもらえば大丈夫だと思う。
157 名前:デフォルトの名無しさん [2009/02/02(月) 17:14:29 ] >>156 -1を消したらうまくできました!ありがとうございます^^ >>147 ,149,150,151,152,154,156 いい人が沢山居て本当に助かりました☆ 皆さんありがとうございました!!!
158 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 18:50:58 ] >>143 読んでないけど、>>115 で不満なのか?
159 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:53:12 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8804.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++Compiler 5.5 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語 [4] 期限: 2月5日まで [5] その他の制限:C言語は一通り習ってます。 (1)がさっぱりわかりません・・・・。よろしくお願いします。
160 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:01:55 ] (x^n) mod m
161 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:04:48 ] >>160 はええな マジで? おれより速い奴がいるなんて興奮して勃起しちゃった
162 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:10:20 ] >>160 すごいですね!ありがとうございます。
163 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:20:28 ] >>160 質問者じゃないんだけど y=1;z=x; for(i=n;i>0;i>>=1){ ←i>>=1これどういう意味ですか? if(i%2) y=(y*z)%m; ←これなんでiが偶数のときは処理しないんですか? z=(z*z)%m; } return y;
164 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:31:18 ] >>163 www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/power.html
165 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:36:58 ] >>163 >for(i=n;i>0;i>>=1){ ←i>>=1これどういう意味ですか? iを右に一つシフトした結果をiに代入する。 結果、iが二分の一になる。
166 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:38:49 ] >>165 >結果、iが二分の一になる。 端数切捨てね。 5(101)→2(10)
167 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:01:27 ] [1] 授業単元:DirectX研究2 [2] 問題文(含コード&リンク): サイコロを転がして目を決める。 ・テーブルとサイコロを作成する。 ・キー操作でサイコロを投げ下ろすように振る。 ・落下してきて,1つの目を上にして止まる。 ・何度でも遊べる ◎テーブルにサイコロの影がある ◎回転しながら落下してくる ◎自由な方向から見ることができる ◎テーブルの上でサイコロは跳ね,転がる。 ◎サイコロとして正しい pub.idisk-just.com/fview/_tILCoWWjdmUjpPFJTUxmAq6FeoO_tXOymM-2i9jWWI5H3mCxm9x4ARZUBR0TsUi を参考にしてよい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC8 or VC9 [3.3] 言語:C/C++どちらでも可 [4] 期限: 2月10日まで [5] その他の制限:DirectXの課題ですがよろしくお願いいたします。
168 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:37:41 ] ここって宿題じゃなくて単発の質問はいいのかな?
169 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:41:33 ] スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/
170 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:41:35 ] >>168 答えはNO スレ違い
171 名前:デフォルトの名無しさん [2009/02/02(月) 22:43:50 ] >>169-170 こっちか。ありがとう
172 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:48:04 ] 内容:[1] 授業単元: プログラミング [2] 問題文:Visual c++を使って大富豪を作りなさい。 ルールは、8切りのみです。ペア、階段等は無しにします。 CPUは1名とします。 カード枚数は10枚ずつで、ジョーカーは無しです。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: [3.3] 言語:Visual c++ [4] 期限: できれば早めに・・・・ [5] その他の制限: まだ基礎段階なので、なるべく簡単なプログラムがいいです。 画像の取り込みとかはせずに、文章で表示すればいいらしいです。 Visual c++がよくわからないので、よろしくお願いします
173 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:49:49 ] >>166 スレ違いなのに質問に答えてくれてありがとうございます
174 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:14:27 ] >>172 CPUとの1対1でいいのか? ペアなしっていうのは、常に1枚ずつしかカード出せないってことでいい? ていうかCPUの思考ルーチン作るのって基礎段階を大幅に超える気がするんだが
175 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:21:42 ] どなたか>>134 をお願いいたします。
176 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:29:56 ] >>175 お願いされるWORDが無い
177 名前:105 mailto:sage [2009/02/02(月) 23:33:50 ] 問2をここまでやったのですが、どうも何かが違うようで7桁の数字を入力しても学番は7桁〜のほうがでてしまうんです。 #include<stdio.h> #include<string.h> #include<stdlib.h> void main(){ char x[100]; int y,z; printf("学番を入力:"); gets(x); y=strlen(x); z=atoi(x); if(y==7 && z==7){ printf("g%s@yahho\n",x); } else{ printf("学番は7桁の数字で入力して下さい\n"); } } どこがいけないのでしょうか? 何度も住みませんが、よろしくお願いします。
178 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:37:27 ] >>175 バブルソート フローチャート でググれ
179 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:40:46 ] >>177 Z==7がまずい というかそれ、問3じゃないのか?
180 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:44:31 ] >>179 あ、ごめんなさい。問3でした z==7がいけない、ということは y==7 か z==7 どちらかしか使用してはいけないということなのでしょうか 文字数が7、尚且つ数字であるとき、という風にしたいのですが・・・
181 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:57:45 ] >>172 仕様を、常に自分からで敵は出せる最小を必ず出す、とすれば楽になる。 が、10行20行で分かりやすく纏めるのやファイルうpはめんどい。 流れの案だけ、書いとく。 全体 [シャッフル]->[配布]->[スタート(自分の番)]->[ループ&終了判定]->[終了時コメント]->end ループ部分 自分の番:自分のカードを printf("%d:%d ",i%10,ME[i]);とかで表示 scanfでキーボードの1,2,3,...,9,0を選択。フラグ処理などしないと、同じカード捨てる事になる。 相手の番:場に出ている番号(初めは0)より大きい最小のカードのインデックスを計算 あればそのインデックス。無ければ自分の番に。 細かいシステム管理(枚数チェックとか、場のカードの数・切るとか)も必要だし、 [シャッフル]7行 [配布]2〜5行 [ループ&終了判定]30行位[終了時コメント]3行 整理して、こんなもんかな?
182 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:57:45 ] >>180 言ってることとやってることがめちゃくちゃだぞ 数字かどうか判断するにはxに格納された文字が '0'と'9'の間にあるかどうかを判断すべき それと宿題程度ならいいと思うが getsはなるべく使わない方がいい
183 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:00:57 ] >>182 よく使ってるscanfも曲者と聞きますし、fgets&sscanfが良いと聞きますが 宿題レベルでもでしょうか?実感ないのですが。
184 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:01:39 ] z = atoi(x) だから z==7だと zが7かどうかを判定してることになってしまう。 ほしいのは7桁かどうかだから、これはまずい。 あとはzが7桁の数字かどうか判定すればいいだけだよ。 それとgets()は使わない方がいい。 この辺参考に ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/getc.3.html
185 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:05:49 ] >>183 オーバーフローするような値を 敢えて入力するやつはいないと思うから 宿題レベルでとやかく言われることはないんじゃね? でもリスクは少なくしておくべき
186 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:05:57 ] y=strlen(x); bool b = true; int i; for( i = 0; i < 7; ++i ){ if( x[i] < '0' || x[i] > '9' ) b = false; } if(y==7 && b ){ printf("g%s@yahho\n",x); } else{ printf("学番は7桁の数字で入力して下さい\n"); }
187 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:06:50 ] >>174 出せるカードの中で一番弱いカードを出す程度で十分。 商用ゲームですらこれのことあるし。
188 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:07:33 ] >>174 常に1枚だすので大丈夫です。よろしくお願いします。
189 名前:デフォルトの名無しさん [2009/02/03(火) 00:17:01 ] C言語、プログラミング基礎の問題です。 整数型変数xに値16を代入文で直接代入する代わりに、ポインタ変数を用いて 間接的に行う方法を与えよ。 とても簡単だと思うのですがわからなくて。。。 お願いします
190 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:21:08 ] >>189 int x; int *px; px = &x; *px = 16; こういうことかな?
191 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:23:53 ] もしくは px[0] = 16 も。ポインタ理解できると→*(&px[1]-1)=16 でもできる事がわかる。
192 名前:デフォルトの名無しさん [2009/02/03(火) 00:24:34 ] >>182 >>184 ありがとうございます。おかげさまで無事できました! 授業ではgets()しか習っていませんでしたが使わないほうがいいのですね。勉強になります。
193 名前:181 mailto:sage [2009/02/03(火) 00:40:07 ] シャッフルだけ。 大富豪以外にもカードゲームボードゲームでも同じ事するはずだから、良いソース持ってる人いるだろうケド 山のシャッフルは、短絡的に実装しました。 バグさえなければ、大雑把にCARD_NUMの2乗オーダーの計算だと思うので 10000枚とかでなければ気にする事無いと思います。 #define CARD_NUM (13*4) int main(){ int cards[CARD_NUM];// カード番号とカードの数字を対応 int yama[CARD_NUM];// カードをシャッフルして代入 int i,j,ran; srand((unsigned) time(NULL)); for(i=0;i<CARD_NUM;i++){ cards[i]=i; yama[i]=-1; } for(i=0;i<CARD_NUM;i++){ ran = rand()%(CARD_NUM); if(yama[ran]==-1) yama[ran]=i; //トランプの数字にするには yama[ran] = i/4; else i--; //やり直し } /* シャッフル検査 */ for(i=0;i<4;i++){ for(j=0;j<13;j++) printf("%2d/",yama[i*13+j]); puts(""); } return 0; }
194 名前:デフォルトの名無しさん [2009/02/03(火) 00:49:48 ] >>190 >>191 ありがとうございます!! あと、while(条件){作業} を、if文とdo-while文を使って表現すると、どうなるのでしょうか・・・
195 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:57:24 ] マルチポスト 224 名前:デフォルトの名無しさん[] 投稿日:2009/02/02(月) 22:46:51 while文をif文とdo-while文を使って表現せよ という問題なんですが…ifも使わなきゃいけないというところがわかりません どうすればよいのですか??
196 名前:デフォルトの名無しさん [2009/02/03(火) 01:00:04 ] >>195 イタチといわれたので
197 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:02:24 ] それでも前のスレで答えてくれている人がいるだろ。 チェックしてないのかよ。
198 名前:デフォルトの名無しさん [2009/02/03(火) 01:03:38 ] 見たけどあってるかわからなかったんで
199 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:05:39 ] じゃあこのスレで答えても同じことになるだろ。
200 名前:デフォルトの名無しさん [2009/02/03(火) 01:08:58 ] 答え2つあったんですけど、どっちがあってるかわかりますか このスレは答え教えてくれるんで