1 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:28:30 ] あなたが解けない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++の宿題を片付けます 94代目 pc11.2ch.net/test/read.cgi/tech/1185452895/
136 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 12:52:11 ] >>33 の2ですが kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4888.txt 和がうまく求めたいのですが、どうすればいいのでしょうか?
137 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 13:00:10 ] >>136 > int iary[] ={0}; これだとそもそも一個しか入力できないわけだが。 入力ロジックは兎も角、積算ロジックはぱっと見良さそうだよ。
138 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 13:30:57 ] サイズの問題以外にも配列にEOAを入れないのはまずいだろ。
139 名前:136 mailto:sage [2007/08/31(金) 14:29:34 ] どのように入力を変えればよいのでしょうか?
140 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 14:46:34 ] int iary[数値] ={0}; ってやればいいんじゃない?
141 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 14:55:26 ] 入力の終了条件を-1が入力されたらにする。
142 名前:136 mailto:sage [2007/08/31(金) 15:04:55 ] ちょっとよくわからないので書いてくれませんか?
143 名前:デフォルトの名無しさん [2007/08/31(金) 15:23:51 ] >>136 のソース見て、usepointersumなんて言う情けない関数名 を見て、「あれ、どっかで俺、こんな関数名の入ったソースを張ったぞ」 と思って見返したら>>81 で>>33 に向けて張ったソースの一部じゃねぇか どおりで<ctype.h>が意味無くincludeされてるわ。 ファイルそのものUpしてあげる kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4889.txt それで、いったい何をしたいのか、事細かく質問しなよ 何が分からないのかがわからないの?まぁ、良いや。 ついでに>>33 よ、まるで自分が書いたようにソースファイルをupしちゃだめだよ
144 名前:136 mailto:sage [2007/08/31(金) 15:31:29 ] >>143 すいませんでした。 ソースから数値を読み取るんじゃなくて、コンパイラから入力したいのですが
145 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 15:36:13 ] >>144 もう我慢ならねえ!!!! コマンドラインから受け取るようにしろよ、この穀つぶしが!!!!!!!
146 名前:143 mailto:sage [2007/08/31(金) 16:06:11 ] 「コンパイラから入力したいのですが」の意味が俺にはわからない。
147 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 16:30:45 ] コンパイラが対話式とみた
148 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 16:48:30 ] コンパイルオプションで -Dxxx=yyy とか付けるんじゃない?
149 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 17:41:01 ] 統合開発環境で、デバッグ時に、引数を与えたいが、やり方がわからない。 こうなんじゃないか?
150 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 19:59:35 ] 最近のコンパイラは賢いな。ESP機能がある。
151 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:14:10 ] >>132 #include <stdio.h> #define EOA -1 #define ARRMAX 1024 int arr_thre_all(int* arr, int thre){ while(*arr != EOA) if(*(arr++) < thre) return 0; return 1;} int main(void){ int i; int arr[ARRMAX]; unsigned int thre; scanf("%d", &thre); for(i = 0; i != ARRMAX; i++){ scanf("%d", &arr[i]); if(arr[i] == EOA) break;} i = arr_thre_all(arr, thre); printf("%d\n", i); return 0;}
152 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 02:18:00 ] #include <stdio.h> int main(){ int u,l; while(1){scanf("%d",&u);if(u<11 && u>0){break;}} while(1){scanf("%d",&l);if(l<u && l>0){break;}} //printf("%d +%s%d = %d\n", u, (u-l>2)?" ... + ":" ", l, ( u + l )*( u - l + 1 ) / 2); printf("%u\n", ( u + l )*( u - l + 1 ) / 2); return 0;}
153 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 15:53:36 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): C#でクラスを用いてシューティングゲームを作れ。 スタート・中断・再開ボタン機能を必ず入れ、敵味方と弾は全てオブジェクトとする [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Windows visual studio2005 [3.3] 言語: C# [4] 期限:9月4日 [5] その他の制限: なし C#は駄目でしょうか。 C#のソース付きのゲームとかがあればそれを参考にやれるんですが・・・
154 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 15:54:59 ] C/C++のみです。C#は他言語です。
155 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 16:30:32 ] C#のソース付きのゲームのサンプルってテトリスぐらいしかしらんな〜
156 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:03:05 ] >>153 夏休み中に何をしていたんだ
157 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:14:24 ] >>153 ガンシューにしてみたら?
158 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:58:00 ] 1対1のガンマンシューティングなんてどうだ?
159 名前:デフォルトの名無しさん [2007/09/01(土) 20:50:01 ] [1] 授業単元:C言語 [2] 問題文: 文字列に含まれるすべての文字を、1つ後のASCUコードをもつ文字に置き換えるプログラムを作成する。 例:Nurupo → Ovsvqp [3] 環境 [3.1] OS:Windows [3.2] コンパイラ: bcc [3.3] 言語: C [4] 期限: 9月4日 [5] その他の制限: 特にありません。 よろしくお願いします。
160 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:07:52 ] >>159 #include <stdio.h> #define MAX_LENGTH 512 int main(void) { char str[MAX_LENGTH] = "Nurupo", buf[MAX_LENGTH]; int i; for(i=0; str[i]; i++) buf[i] = str[i] + 1; buf[i] = '\0'; printf("%s → %s", str, buf); return 0; }
161 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:08:52 ] ああ、置き換えるのか・・・仕様とは違うなorz
162 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:16:12 ] do *p+=1; while(*++p); 適当に置き換えておいてくれ
163 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 22:39:03 ] アスキーコード最後の文字はどうするん?
164 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 22:45:54 ] 何も考えずに1つ後のASCUコードをもつ文字にするんだろ
165 名前:デフォルトの名無しさん [2007/09/01(土) 22:56:37 ] [1] 授業単元:C言語 [2] 問題文: 長方形の縦と横の長さ(double型)を引数として受け取り、その長方形の面積(double型)を 返す関数Xを作り、mainから呼び出して動作を確認するプログラムの作成 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月3日 21時 [5] その他の制限: なし
166 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 23:02:06 ] #include <stdio.h> double X(double width, double hight) { return width * hight; } int main(void) { printf("%g", X(10.0, 8.0)); return 0; }
167 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 23:50:03 ] >>155 テトリスでもいいんで教えてもらえないでしょうか。要領さえ分かれば何とかなるんで >>156 全然違う事の勉強です。
168 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 00:11:21 ] >>162 これって1文字目が\0だとPC爆発しないか?
169 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 00:21:51 ] しないよ
170 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 05:25:19 ] >>167 school.topposystem.co.jp/SampleCode/PictureList.asp のフリーサンプル集のどっかにあったよ。 っていうか、俺もサンプルとして見たかったからダウンしたので それをupしますね kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4891.zip
171 名前:デフォルトの名無しさん [2007/09/02(日) 20:09:48 ] >>160 お早い回答ありがとうございます!! おかげで助かりました! >>162 どこを置き換えればいいかもおしえていただけると助かるのですが おしえていただけないでしょうか?
172 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 20:53:33 ] >>171 void replaceFollower(char * foo) { for (unsigned ic = 0; foo[ic] != '\0'; ++ic) { ++foo[ic]; } } #include <stdio.h> int main() { char str[] = "Nurupo"; printf("%s\n", str); replaceFollower(str); printf("%s\n", str); return 0; }
173 名前:36 [2007/09/02(日) 22:49:56 ] >>36 です. 遅くなりましたが,答えてくださった方ありがとうございます. 無事に課題提出を行うことができました. 実は>>36 で書いた課題にはオプション問題がありまして, 自分には全く分からなかったので手を出さなかったのですが…. どのように解答するか気になるので, もし分かる方がいたらよろしくお願いします. [1] 授業単元:C言語 [2] 問題文: 二次座標平面において,ランダムに4〜5個ほど点が与えられる. そのような複数の点の最近傍を通る円の方程式を求めよ. ただし,中心座標(x_0,y_0)は (1)一番低いy座標よりも下にある. (2)一番低いx座標よりも左にある.または,一番高いx座標よりも右にある. {if((x_0<=xmin||x_0<=xmax)&&y_0<=ymin) true;} を満たすものとする. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限:期限なし [5] その他の制限:計算速度が速い方が好ましい.
174 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 22:55:35 ] >>173 最近傍の評価はどうするの? 円と点 n の距離を Dn と置く時 Σ(Dn) Σ((Dn)^2) とかそういうのが無いと解けないっぽ
175 名前:36 [2007/09/02(日) 23:28:37 ] >>174 評価関数は各自で任意に設定すると言われているのですが…. 今回は Σ(Dn^2) の最小二乗法でお願いします.
176 名前:デフォルトの名無しさん [2007/09/03(月) 00:47:20 ] [1] 授業単元:C言語 [2] 問題文: 整数aと自然数nを入力してaのn乗を求める。入力は正しく行われるものとする。 [3] 環境 [3.1] OS:Win [3.2] コンパイラ:Win visual studio2005 [3.3] 言語: C [4] 期限: 9月5日 [5] その他の制限: --nを使うところまではわかるのですが、どうも上手くできません。 お力を貸していただけると助かります。
177 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:04:59 ] int factorial(int a,int n){ long int buf=a; while(n!=0){ buf *=a; n--; } return buf; } ただし少しnを大きくしただけでオーバーフローする
178 名前:デフォルトの名無しさん [2007/09/03(月) 07:13:30 ] [1] 授業単元:C言語 [2] 問題文:掛け算の九九の表をファイルprod99.txtに書き込むプログラムを作成する。 [3.1] OS:Windows [3.2] コンパイラ:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月5日 12時 [5] その他の制限: 特にありません
179 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:34:13 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 仕事は「納期 T、作業時間 W、ペナルティ C」の 三つの情報で特徴付けられるとする。 N 個の仕事が与えられる。これらの仕事を適当に並び替えて 「納期から遅れた時間×ペナルティ」の総和を最小にせよ。 なお、開始の時刻は 0 とする。 入力: 一行目は仕事の総数 N (正の整数、N ≦ 50 としてよい) 二行目から n+1 行目までは仕事の情報 T W C (すべて正の整数) 出力: 最小の「納期から遅れた時間×ペナルティ」の総和。 例: (入力) 2 1 2 3 1 1 1 (出力) 5 (1番目の仕事をやってから2番目の仕事をやる。両方納期には遅れるが ペナルティ 5。逆にすると2番目の仕事は納期に間に合うがペナルティ 6) [3] 環境:特に指定なし(OS環境問わず、C/C++どちらでも可) [4] 期限:9月10日 [5] その他の制限:特になし
180 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:40:41 ] >>173 付帯条件がよくわからんのだけど、つまり円の右上だけ(or 左上だけ)で 他の点に近い円を描けってことでよいのかね?
181 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:43:42 ] >>178 #include <stdio.h> int main() { int i, j; FILE *fp = fopen("prod99.txt", "w"); for (i = 1; i <= 9; ++i) { for (j = 1; j <= 9; ++j) { fprintf(fp, "%2d ", i*j); } fprintf(fp, "\n"); } fclose(fp); }
182 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:45:10 ] >>178 #include <stdio.h> int main(void){ FILE *file; if(({file=fopen("prod99.txt","r"))==NULL){ fputs("エディタを開いて、ファイル名 prod99.txt に以下を書き込んでください\n" " 1 2 3 4 5 6 7 8 9\n" " 1 1 2 3 4 5 6 7 8 9\n" " 2 2 4 6 81012141618\n" " 3 3 6 9121518212427\n" " 4 4 812162024283236\n" " 5 51015202530354045\n" " 6 61218243036424854\n" " 7 71421283542495663\n" " 8 81624324048566472\n" " 9 91827364554637281\n",stderr); return 1; } fputs( " 1 2 3 4 5 6 7 8 9\n" " 1 1 2 3 4 5 6 7 8 9\n" " 2 2 4 6 81012141618\n" " 3 3 6 9121518212427\n" " 4 4 812162024283236\n" " 5 51015202530354045\n" " 6 61218243036424854\n" " 7 71421283542495663\n" " 8 81624324048566472\n" " 9 91827364554637281\n",file); fclose(file); return 0; }
183 名前:182 mailto:sage [2007/09/03(月) 09:01:27 ] if(({file=fopen("prod99.txt","r"))==NULL){ → if(({file=fopen("prod99.txt","w"))==NULL){
184 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 09:11:13 ] {
185 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 12:02:13 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 逆ポーランド記法に変換してから計算する四則演算の電卓プログラムを作れ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: c [4] 期限: 2007年9月4日 よろしくおねがいします。
186 名前: ◆kRtmRcQ9ak [2007/09/03(月) 12:41:26 ] [1] 授業単元: コンピュータプログラミング [2] 問題文: 名前&身長&体重の入力&ファイルに記録&読み出し&BMI計算(BMI=体重kg/(身長m)^2)&身長順に並び替え [3] 環境 [3.1] windows [3.2] コンパイラ名とバージョン:C++Compiler5.5 [3.3] 言語: C [4] 期限:2007 9/5まで [5] その他の制限:無し。 よろしくお願いします。
187 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 13:35:05 ] >>185 エラーチェックはしていない 二桁以上の数が入力される場合にも対応していない kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4893.c
188 名前:billy [2007/09/03(月) 14:58:50 ] 構造体に入っている値を32個ずつ別のテキストファイルに出力したいのですが、どうしたらいいのですか?
189 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:00:11 ] >>188 スレ違い
190 名前:デフォルトの名無しさん [2007/09/03(月) 16:19:38 ] 〔1〕C言語 〔2〕問題(下記) #include<stdio.h> void main() { int ia; printf("整数を入力してください:"); scanf("%d",&ia); if(○○) printf("偶数です"); else printf(”奇数です”); } 問 上記に示したのは、入力した整数が偶数か奇数かを判断するプログラムである。 if(○○)の○○を埋めよ。 〔3〕WinXP 9月4日〆 よろしくお願い致します。
191 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:23:52 ] >>190 (ia+191)%2
192 名前:デフォルトの名無しさん [2007/09/03(月) 16:35:44 ] >>191 協力感謝です。 有難うございました!
193 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:47:42 ] [1] 授業単元:C言語 [2] 問題:引数として渡された2つの整数の小さい方の値を返す関数である。 〔 〕のを埋めて関数を完成させよ。 〔 〕imin(int ia,int ib) { if(ia<ib) 〔 〕 else 〔 〕 } [3] 環境 [3.1] OS:WindowsXP [3.3] 言語:C++ [4] 期限: 9月4日まで [5] その他の制限: なし 葬式で1週間授業休んだらおいてかれた\(^o^)/
194 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:52:28 ] >>193 〔int〕imin(int ia,int ib) { if(ia<ib) 〔return ia;〕 else 〔return ib;〕 }
195 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:54:22 ] 〔/* 〕imin(int ia,int ib) { if(ia<ib) 〔; 〕 else 〔*/int imin(int ia,int ib){return ia<ib?ia:ib;〕 }
196 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:55:12 ] >>193 馬鹿?これよんどけ。 ttp://www5c.biglobe.ne.jp/~ecb/c/07_01.html ttp://www5c.biglobe.ne.jp/~ecb/c/07_01_02.html ttp://www5c.biglobe.ne.jp/~ecb/c/07_01_03.html int return ia; return ib;
197 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:55:22 ] >195の勝ち。
198 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:56:07 ] >>195 この発想はなかったわ
199 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:52:39 ] [1] 授業単元:パターン認識 [2] 問題: 問題の概要はwww.uploda.org/uporg1000429.txt にかきました。 問題は、入力データを正規分布のデータで評価し確率をもとめてほしいのです。 長くなりましたがお願いします。 計算がめんどうだったらlogで出してくれてもいいです。 [3] 環境 [3.1] OS:LINUX [3.3] 言語:C [4] 期限: いつでもいいです。
200 名前:36 [2007/09/03(月) 21:35:18 ] >>180 そうです,右上または左上となる円を描くイメージです. もしお時間ありましたらよろしくお願いします.
201 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:49:05 ] >>199 「正規分布のデータで『評価』」ってなに? アップローダにあるほうもグダグダかかれてて 結局問題でやるべきことがよくわからないんだが。
202 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:01:08 ] 評価するっていうのは平均と分散からできる分布のグラフ (横軸が数値で、縦軸が度数(ここでは確率))において 入力データと数値を見比べて一致したところの確率を出すことを評価するっていうんです。 1つのデータが9次元なんです。 9次元の入力データから9次元の平均をひいたものを2乗して 9次元の分散でわる。そうすると9個の値がでますからそれをたせばexpの中身になって expの前にある変数とexpをかけると確率が出せるわけです。 それがfです。 すいませんfの式がここでかけなくて。
203 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:07:30 ] >>202 平均分散が与えられた多次元正規分布の式に、与えられた 20個のデータを突っ込んだときの値を出せと言っている? 『評価』は estimate じゃなくて evaluate だということ?
204 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:12:00 ] そうです。まさしくそうです
205 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:19:08 ] しかしこの正規分布で出した確率があまりに小さくなってあってるかどうかもわからないまま 他のアルゴリズムに用いないといけないから困る。
206 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:32:06 ] >>204 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4894.c 205 のいうとおり、値があまりに小さくなったがこれでいいのかね。
207 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:35:07 ] 値いくらになりました? logで表示してくれるとありがたいです。 検算させていただきます。
208 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:37:44 ] >>173 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4895.c ファイル point.dat に次のように記述し、実行ファイルを実行する 4 1.0 0.0 0.0 1.0 -0.5 0.0 0.0 -1.0
209 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:50:46 ] >>208 目的関数の性質が悪そうなんだけど、単純な降下法でうまくいくの?
210 名前:208 mailto:sage [2007/09/04(火) 07:23:05 ] >>209 多分うまくいかない 局所解にはまってしまうと思う でも、数学はもう解けない頭になってしまった (仕事ならやるけどね)
211 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 07:45:43 ] 数式で表すと、適当な平行移動と反転をして min. Σ| (x-x_i)^2 + (y-y_i)^2 - r^2 | s.t. x ≧ 0, y ≧ 0, r ≧ 0 を解く、という問題に落ちるんだけど、この目的関数は 凸でないし、滑らかでもないので非常に面倒な問題になるはず。 ただ、関数が綺麗だから逐次二次緩和くらいで十分解けそう。 とても実装する気にはならないけど。
212 名前:デフォルトの名無しさん [2007/09/04(火) 15:02:44 ] [1] 授業単元: ランダム関数 [2] 問題文(含コード&リンク): トランプをランダムで表示させる [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Borland [3.3] 言語:C++ 表示が○○(マーク)の○(数字)と表示させたいのです
213 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 15:58:55 ] >>212 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { enum {MK_HEART, MK_DIAMOND, MK_CLOVER, MK_SPADE}; int mark, num; srand(time(NULL)); mark = rand() % 4; num = rand() % 13 + 1; switch(mark) { case MK_HEART:printf("ハート");break; case MK_DIAMOND:printf("ダイヤ");break; case MK_CLOVER:printf("クローバー");break; case MK_SPADE:printf("スペード");break; } if(1 < num && num < 11) printf("%d", num); else { switch(num) { case 11:putchar('J');break; case 12:putchar('Q');break; case 13:putchar('K');break; case 1:putchar('A');break; } } return 0; }
214 名前:デフォルトの名無しさん [2007/09/04(火) 21:20:09 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3967.txt 以前提出した物:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4897.txt [3] 環境 [3.1] OS: Windows/Linux [3.2] コンパイラ名とバージョン: MicrosoftFramework/gcc [3.3] 言語: C [4] 期限:なるべく早く [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 以前もこのスレで質問し、教えていただいたものを用いて形にし、 提出はしたのですが結果がおかしく再提出を求められました フィボナッチ数(fib)の値がおかしいのですが、 提出した物の最後の print(b3); printf("\n");を直前のfor文の中に入れて確認したところ、 8+13の結果(fib(8))が21でなく121になってしまっているため以降の全ての値がおかしくなっているようです。 おそらくpaddがおかしいのだと思うのですが、いろいろ変えてみても上手くいきません おかしい箇所の指摘や改善方法のご教授をお願いします
215 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:25:30 ] MMXでも使ってんのかと思った
216 名前:デフォルトの名無しさん [2007/09/04(火) 21:26:26 ] [1] 授業単元:C言語 [2] 問題文:文字列を入力し、その文字列を縦に並べて表示するプログラムの作成。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月5日 21時 [5] その他の制限: ないです。 よろしくお願いします。
217 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:29:45 ] >>216 #include <stdio.h> int main(void) { char buf[512], *p = buf; scanf("%s", buf); while(*p) { printf("%c\n", *p); p++; } return 0; }
218 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:37:52 ] >>216 2バイト文字対応は不要?
219 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:50:15 ] 海栗に書き換えればいいだけ
220 名前:214 mailto:sage [2007/09/04(火) 22:13:01 ] 自己解決しました。 スレ汚しすみませんでした。
221 名前:デフォルトの名無しさん [2007/09/04(火) 23:04:34 ] 授業単元:C 問題文(含コード&リンク): テーマ:文字配列の操作 1問目:キーボードより表示開始文字と表示終了文字を入力開始〜終了までの文字を表示しなさい char moji[]="ABCDEF〜XYZ"; /*大文字26文字*/ 実行画面 moji:ABCDEF〜XYZ 開始位置==>B 終了位置==>F 表示:BCDEF moji:ABCDEF〜XYZ 開始位置==>D 終了位置==>D 表示:D moji:ABCDEF〜XYZ 開始位置==>E 終了位置==>B 表示:EF〜XYZAB 環境: OS:WindowsXP コンパイラ名とバージョン:ボーランド 言語:C 期限:
222 名前:デフォルトの名無しさん [2007/09/04(火) 23:06:43 ] 授業単元:C 問題文(含コード&リンク): テーマ:文字配列の操作 問題2:文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換え なさい 実行画面 文字列(m1)入力==>ABCDEFAABCDABC 削除文字==>A 置換文字==>* 結果文字列(m1):*BCDEF**BCD*BC 環境: OS:WindowsXP コンパイラ名とバージョン:ボーランド 言語:C 期限:
223 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:20:30 ] >>211 #include <stdio.h> #include <ctype.h> int main(void) { char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; /*大文字26文字*/ char start, end, *p; printf("moji:%s\n", moji); printf("開始位置==>"); scanf("%c", &start); fflush(stdin); printf("終了位置==>"); scanf("%c", &end); fflush(stdin); if(!isalpha((int)start) || !isalpha(end)) return 1; start = (char)toupper(start); end = (char)toupper(end); p = moji + start - 'A'; for(;;) { putchar(*p); if(*p == end) break; if(*(++p) == '\0') p = moji; } return 0; }
224 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:24:39 ] >>222 #include <stdio.h> #include <ctype.h> int main(void) { char m1[512]; char del, rplc, *p = m1; printf("文字列(m1)入力==>"); scanf("%s", m1); fflush(stdin); printf("削除文字==>"); scanf("%c", &del); fflush(stdin); printf("置換文字==>"); scanf("%c", &rplc); fflush(stdin); for(; *p; p++) { if(*p == del) { *p = rplc; } } printf("結果文字列(m1):%s", m1); return 0; }
225 名前:デフォルトの名無しさん [2007/09/05(水) 00:32:04 ] [1] 授業単元:C言語 [2] 問題文: 文字(char型)を引数として受け取り、その文字が英小文字ならば大文字に、英大文字なら小文字に変換して返す関数toulを作り、 mainから呼び出して動作を確認するプログラムの作成する。ただし、引数はスペース、英字、数字のみとし、スペースや字数はそのまま変更しない。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月6日 22時 [5] その他の制限: なし
226 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:46:54 ] >>225 mainは省略 動作確認も省略 char toul(char buf){ int dif='A'-'a'; if(buf >= 'a' && buf <='z'){ return char + dif; }else if(buf >= 'A' && buf <='Z'){ return char - dif; }
227 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:50:15 ] >>225 #include <stdio.h> #include <ctype.h> char toul(char ch) { if(isupper(ch)) return tolower(ch); else if(islower(ch)) return toupper(ch); else return ch; } int main(void) { printf("'%c' → '%c'\n", 'a', toul('a')); printf("'%c' → '%c'\n", 'B', toul('B')); printf("'%c' → '%c'\n", ' ', toul(' ')); printf("'%c' → '%c'\n", '2', toul('2')); return 0; }