C/C++の宿題片付けます 122代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/01/15(木) 23:21:27【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題を片付けます 121代目
http://pc11.2ch.net/test/read.cgi/tech/1230678123/
0002デフォルトの名無しさん
2009/01/16(金) 00:52:45本当にありがとうございます
これからは人に頼らずできるかぎり自分の力で頑張っていきたいです
0003デフォルトの名無しさん
2009/01/16(金) 01:09:15http://pc11.2ch.net/test/read.cgi/tech/1232001038/
重複
0004デフォルトの名無しさん
2009/01/16(金) 17:24:48ところで何で122題目じゃなくて122代目なの?
0005デフォルトの名無しさん
2009/01/17(土) 21:05:231.書き込みウィンドウを出し半角入力に切り替える
2.Wキーを押しっぱなしにする
3.Wキを押しっぱなしにしながらsageのチェックするところをおもむろにクリック
0006デフォルトの名無しさん
2009/01/17(土) 21:15:180007デフォルトの名無しさん
2009/01/17(土) 23:40:290008デフォルトの名無しさん
2009/01/27(火) 08:45:050009デフォルトの名無しさん
2009/01/27(火) 11:08:410010デフォルトの名無しさん
2009/01/30(金) 10:49:330011デフォルトの名無しさん
2009/01/30(金) 10:50:170012デフォルトの名無しさん
2009/01/30(金) 11:00:120013デフォルトの名無しさん
2009/01/30(金) 16:05:21C/C++の宿題を片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232001038/705
→解析と言うのも良く知らないが、これってどう言う処理結果を期待してるんだろ?
C/C++の宿題を片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232001038/891
→オレには、「きのこのやまはたべざかり」も解析できないが、多分、ここの学生にも出来ないような・・・
0014デフォルトの名無しさん
2009/01/30(金) 16:56:070015デフォルトの名無しさん
2009/01/30(金) 20:57:380016デフォルトの名無しさん
2009/01/30(金) 20:58:140017デフォルトの名無しさん
2009/01/30(金) 21:32:00[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C言語
[4] 期限:1月31日まで
[5] その他の制限:変わった問題ですが、誰かお願いします!!
0018デフォルトの名無しさん
2009/01/30(金) 21:35:160019デフォルトの名無しさん
2009/01/30(金) 21:50:10これで、しかも、マルチ
0021デフォルトの名無しさん
2009/01/30(金) 23:17:450022デフォルトの名無しさん
2009/01/30(金) 23:26:01すみません、どうゆうことですか(><)?
0023デフォルトの名無しさん
2009/01/30(金) 23:26:52>>17から出発して、自分で問題文を探してみろよって言ってんだ
0024デフォルトの名無しさん
2009/01/30(金) 23:39:40私の問題はNo.8780ですが、どうしたらいいかわからないんです。。。
0025デフォルトの名無しさん
2009/01/30(金) 23:45:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=8780
0026デフォルトの名無しさん
2009/01/30(金) 23:50:45その問題なんですけど、問題の意味がわからないってことですか?
0027デフォルトの名無しさん
2009/01/30(金) 23:57:00問題文が長いときはzipに入れとこうね。
0028デフォルトの名無しさん
2009/01/30(金) 23:59:04すみません(><)やり方がいまいちわからなかったもんで。。。
ありがとうございます!!
0029デフォルトの名無しさん
2009/01/31(土) 00:10:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8742.txt
これと同じ問題だよね。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8743.txt
0030デフォルトの名無しさん
2009/01/31(土) 00:11:31オマエ以外の誰がそれを知ってんだよ、バカ
0031デフォルトの名無しさん
2009/01/31(土) 00:12:22マルチったレッドで回答ついてるだろ。
死ね。
0032デフォルトの名無しさん
2009/01/31(土) 00:22:16それとおんなじ問題です。
0034デフォルトの名無しさん
2009/01/31(土) 00:29:04近い都市どおしをまとめて、n個のグループに分ける。
これわかる人いますか?
0035デフォルトの名無しさん
2009/01/31(土) 00:34:370036デフォルトの名無しさん
2009/01/31(土) 00:35:24>>1くらい読め
一刻も早く死ね
0037デフォルトの名無しさん
2009/01/31(土) 00:40:59スレタイと>>1嫁
まともに訊く気があるなら”近い都市どおしをまとめて”って辺りを詳しく
0038デフォルトの名無しさん
2009/01/31(土) 00:43:59よく見ると、日本語でおkだ・・・
ねたか・・・
0039デフォルトの名無しさん
2009/01/31(土) 01:05:08都市は円形同サイズで、中心間の距離が記録されています。
2つにわれる場合は、同程度サイズになるようにします。
合併後の都市の中心から橋が離れすぎないようにします。
0040デフォルトの名無しさん
2009/01/31(土) 01:06:58>>1くらい読め
死ね
0041デフォルトの名無しさん
2009/01/31(土) 01:10:08スレタイ嫁
あと、書いた文を人が読んで理解できるかどうかを考えて文を書け
3行目以下が意味不明
0042デフォルトの名無しさん
2009/01/31(土) 01:23:320043デフォルトの名無しさん
2009/01/31(土) 01:38:02zipじゃなかったことについて怒られたんだと思ってるよきっと。
0044デフォルトの名無しさん
2009/01/31(土) 01:42:58テンプレも読ませないと
0045デフォルトの名無しさん
2009/01/31(土) 01:43:01重複スレだから仕方ない
0046デフォルトの名無しさん
2009/01/31(土) 02:48:41[2] http://www.pref.fukushima.jp/pc-concours/2008/03/pdf/2007honsen.pdf(問2問3)
[[3] 環境
[3.1] OS:Windows XP
[3.2] visual C++
[3.3] C++
[4] 期限: 2009年2月3日まで]
[5] main関数以外にユーザ定義関数を作成すること。
困ってます。誰か助けてください。
0047デフォルトの名無しさん
2009/01/31(土) 03:08:02スパコン甲子園かと思ったら、パソコン甲子園なんだな・・・
0048デフォルトの名無しさん
2009/01/31(土) 03:16:41高校生が20分掛けずに解くことになっている問題じゃねーか!
0049デフォルトの名無しさん
2009/01/31(土) 03:20:200050デフォルトの名無しさん
2009/01/31(土) 03:49:05予選の問題だろ?
180分で10問だってさ。
0051デフォルトの名無しさん
2009/01/31(土) 03:52:37本選の問題で、240分で12題の配分。
0052デフォルトの名無しさん
2009/01/31(土) 04:38:32こんな?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8791.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8792.txt
0053デフォルトの名無しさん
2009/01/31(土) 05:13:15iostreamライブラリ関数(習っていない)を使わないで
入力もscanfをつかって表現できませんか?
実際、C言語習って3か月しかたってないので
基礎しかわかりません・・。
0054デフォルトの名無しさん
2009/01/31(土) 05:28:08main関数以外と最後に書いてありますが
main関数も使って結構です。
要するに二つの関数を用いれば結構です。
たびたび、すみません
0055デフォルトの名無しさん
2009/01/31(土) 05:32:15[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文使えばできるんですが授業で扱ってません。。
0056デフォルトの名無しさん
2009/01/31(土) 05:35:30C++なのにiostreamやってないの?
Cなんじゃないの?
0057デフォルトの名無しさん
2009/01/31(土) 05:48:280058デフォルトの名無しさん
2009/01/31(土) 05:50:340059デフォルトの名無しさん
2009/01/31(土) 06:23:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8793.cpp
0060デフォルトの名無しさん
2009/01/31(土) 09:34:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8794.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8795.txt
殆んど意味不明。
>>46には一次元配列と書いてあるが使うところが無いし
0061デフォルトの名無しさん
2009/01/31(土) 09:50:080062デフォルトの名無しさん
2009/01/31(土) 10:14:540063デフォルトの名無しさん
2009/01/31(土) 13:06:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8788.c
をコンパイルしたところ、
59: 警告 return type of 'main' is not 'int'
と表示されます。どう直せばよいのでしょうか?
0064デフォルトの名無しさん
2009/01/31(土) 13:20:04やむを得まい、int main(void) { return0; } にするしかない。
0065デフォルトの名無しさん
2009/01/31(土) 13:37:57ありがとうございました!
0066デフォルトの名無しさん
2009/01/31(土) 13:42:48面白い問題だ
制限時間内に全問正解できる自信がないぜw
0067デフォルトの名無しさん
2009/01/31(土) 15:34:18高校レベルなの??
0068デフォルトの名無しさん
2009/01/31(土) 15:46:13プログラムとしてはどうか知らんが
数学的には未解決問題の上に賞金もかけられていたはず
0069デフォルトの名無しさん
2009/01/31(土) 15:46:34本当にありがとうございます!
すっきりしててわかりやすいです!
0070デフォルトの名無しさん
2009/01/31(土) 15:58:37与えられた数字より、小さい数字に出来ることを示せばいい。
たとえば、100から始めたら、99以下になる事を示す。
そうすれば数学的帰納法で全ての数字で成り立つ。
0071デフォルトの名無しさん
2009/01/31(土) 15:59:47言ってることは尤もなんだが
数学者を馬鹿にしてるのかw
0072デフォルトの名無しさん
2009/01/31(土) 16:06:39たしかICMで我々人類がこれらの問題を解決するにはまだ十分な準備ができていない発言があったはず
0073デフォルトの名無しさん
2009/01/31(土) 16:11:29もし生成出来て、試行回数に応じた出現回数の上限が存在すれば解ける。
0074デフォルトの名無しさん
2009/01/31(土) 16:12:21もし生成出来て、試行回数に応じた出現数字の上限が存在すれば解ける。
0075デフォルトの名無しさん
2009/01/31(土) 16:16:33という関数f(n)が決定出来れば、解ける。
0076デフォルトの名無しさん
2009/01/31(土) 16:16:445 → 16
32 → 16
これを逆にたどるとすると枝が多すぎて解析不能
0077デフォルトの名無しさん
2009/01/31(土) 16:20:27[2] 問題文(含コード&リンク):
自動販売機のオブジェクトを作成しないさい
(商品はオレンジジュース、コーラ、サイダーの三つにする事)更に下記の条件を満たすこと
<条件>
自動販売機で購入できる「商品」,「お金」,「自動販売機」は最低限クラス化すること。
「カプセル化」,「継承」,「多様性」を全て利用すること。
例外処理をすること(プログラムが頓挫した時点でNGとします)。
入出力は,下記のとおり行うこと。
【入力】 【出力】
・お金(10円〜1000円)の個数(枚数) ・つり銭(10円〜100円)の個数(枚数)と総購入代金
・購入商品選択(複数可) ・購入商品名(複数)
実現は,main()関数で「自動販売機」クラスのインスタンスを1つ作成し,そのクラスのbuy( )メンバ関数を呼び出したら全てが動作するようにする。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VB2005
[3.3] 言語: C++
[4] 期限: 2/1まで
[5] その他の制限: 特になし。
0078デフォルトの名無しさん
2009/01/31(土) 16:25:120079デフォルトの名無しさん
2009/01/31(土) 16:29:35だな
コラッツ予想の写像がN→Nへの全単射でないからな
どうにもならん
0080デフォルトの名無しさん
2009/01/31(土) 16:43:13n回試行でlog_10(n)以下の数字生成出来るを証明すれば解けるぞ。
この評価は間違ってはいないと思うが。
10^4 = 10000 回試行で4以下を生成すればいいという余裕と思われる評価。
0081デフォルトの名無しさん
2009/01/31(土) 16:50:01同じような理屈でできないか?
0082デフォルトの名無しさん
2009/01/31(土) 17:20:24おいおいVBってなんだよw
0083デフォルトの名無しさん
2009/01/31(土) 17:27:030084デフォルトの名無しさん
2009/01/31(土) 17:43:24>>1くらいよめ
読む前に死ね
0085デフォルトの名無しさん
2009/01/31(土) 17:44:42ハミング問題が15点とかきついな。
0086デフォルトの名無しさん
2009/01/31(土) 18:41:57{
while(n % 2 == 0) n /= 2;
while(n % 3 == 0) n /= 3;
while(n % 5 == 0) n /= 5;
return n == 1 ? 1 : 0;
}
この程度の関数で十分だろ
0087デフォルトの名無しさん
2009/01/31(土) 19:11:330088デフォルトの名無しさん
2009/01/31(土) 20:13:36例外処理してない&動くかどうかしらんが、
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; };
0089デフォルトの名無しさん
2009/01/31(土) 20:21:46class 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; };
0090デフォルトの名無しさん
2009/01/31(土) 20:30:390091デフォルトの名無しさん
2009/01/31(土) 21:03:021660円入れて、おつりが1780円?
0092デフォルトの名無しさん
2009/01/31(土) 21:06:48Javaの変数名って日本語文字使えるのん?
0093デフォルトの名無しさん
2009/01/31(土) 21:09:040094デフォルトの名無しさん
2009/01/31(土) 21:12:490095デフォルトの名無しさん
2009/01/31(土) 21:16:230096デフォルトの名無しさん
2009/01/31(土) 21:19:170097デフォルトの名無しさん
2009/01/31(土) 21:19:58わしの持ってる本にはウムラウトとかが許されるって書いてあるから
漢字もできるのかと思った。
0098デフォルトの名無しさん
2009/01/31(土) 21:20:43使えるの? あはーん?
Visual Studio 2008はJ++廃止されちゃったから試せない。
0099デフォルトの名無しさん
2009/01/31(土) 22:17:540100デフォルトの名無しさん
2009/01/31(土) 23:23:38[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] その他の制限:常微分方程式のルンゲクッタでググって調べたんですが、
この問題は変数が多くて応用できませんでした。どなたかよろしくお願いします。
0101デフォルトの名無しさん
2009/02/01(日) 01:04:09まあ、この式をどう読むのかも知らん
0102デフォルトの名無しさん
2009/02/01(日) 01:05:40J++でできるからといってJAVAでできると言ってしまうのはひどい
逆にJAVAで可能なのかどうかを調べる為にJ++を使用するのもひどい
0103デフォルトの名無しさん
2009/02/01(日) 01:06:35おつり計算のところ、括弧忘れてるね
0104デフォルトの名無しさん
2009/02/01(日) 02:33:56ルンゲクッタ使うならこんな感じでいい希ガス
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8797.txt
0105デフォルトの名無しさん
2009/02/01(日) 12:03:43[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になってしまいます。
それではよろしくお願いします。
0106デフォルトの名無しさん
2009/02/01(日) 13:10:04問1はmin=1000ぐらいにしとけ
それより問5が正常に動作していない件について
0107デフォルトの名無しさん
2009/02/01(日) 14:49:43微分方程式の数値解としか言われてないならオイラー法で良かろう。一応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;
}
0108デフォルトの名無しさん
2009/02/01(日) 15:10:38if( !isalpha(user_name[0]) ) {
for (i=0;i<8;i++)
for (i=1;i<len;i++)
sprintf(user_name,
printf(
puts(user_name);
0109デフォルトの名無しさん
2009/02/01(日) 17:19:22問1に関して
maxとminを0で初期化するのは適切ではない
2個目のfor文の前で
max=a[0];
min=a[0];
のようにすべき
0110デフォルトの名無しさん
2009/02/01(日) 18:30:45問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);
}
}
0111デフォルトの名無しさん
2009/02/01(日) 19:04:47#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);
}
0112デフォルトの名無しさん
2009/02/01(日) 20:27:47[2] 問題文(含コード&リンク): http://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] その他の制限:
よろしくお願いします。
0113デフォルトの名無しさん
2009/02/01(日) 21:47:23式の長さの上限は?
0114デフォルトの名無しさん
2009/02/01(日) 22:14:05特にありません
0115デフォルトの名無しさん
2009/02/01(日) 22:40:06#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;
}
0116デフォルトの名無しさん
2009/02/01(日) 22:42:36[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク): http://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] その他の制限:
過去ログ等を漁りましたがありませんでした。
よろしくお願いします。
0117116
2009/02/01(日) 23:00:56下側累積確率、上側累積確率を求める関数を見つけたのですが、
どのように変更を加えて良いのかわかりませんでした。
ご教授お願いします。
#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);
}
0118デフォルトの名無しさん
2009/02/01(日) 23:48:49ありがとうございます。
問5はできたのですがそれ以外ができません。
問1は>>109の通りにやったら最小値でました!ありがとうございます。
平均値はどのようにして出せばいいのでしょうか?
それではよろしくお願いします。
0119デフォルトの名無しさん
2009/02/01(日) 23:53:00> 平均値はどのようにして出せばいいのでしょうか?
値を全部足して、それを値の個数で割る
0120デフォルトの名無しさん
2009/02/01(日) 23:53:40>問5はできたのですがそれ以外ができません。
難しくて全く理解できないのか、自分で作ってバグがでるのか、何を求めているのか。
言われなきゃ分からんとはな。
0121デフォルトの名無しさん
2009/02/02(月) 00:12:12ごめんなさい。質問する以前の問題でしたね・・・。
問1:全ての値の合計の仕方がわかりません。
問2:>>107を見てやってみたのですがバグが出てしまって、自分で直そうとしたんですが難しくて手のつけようが・・・。
問3:問2を少し弄れば出来そうな気はします
問4:バグがでます
0122デフォルトの名無しさん
2009/02/02(月) 00:12:290123デフォルトの名無しさん
2009/02/02(月) 00:21:370124デフォルトの名無しさん
2009/02/02(月) 00:39:39合計の出し方
sumを0に初期化
2個目のfor文の中でsum+=a[i];
エラーメッセージを貼るなりしてくれないと
どんなバグが出てるのかわからない
0125デフォルトの名無しさん
2009/02/02(月) 00:48:26問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)' を一致させようとしているとき
0126107
2009/02/02(月) 01:10:16strlen , exit , isupper , islower , isalnum ググれ。
returnのタイプミスはすまないが、気付かない方も考えてない証拠かと。
return 0; を 「reutrn 0;」と書けば、reutrnを変数などの識別詞とみなすから
「INTMAX 0;」とか「1 0;」と同等に扱われる。
returnに直せば問題解消。無意味だが「reutrn; 0;」とすれば、警告は片方減る。
0129デフォルトの名無しさん
2009/02/02(月) 01:24:31>>108は>>107の修正分を書いてる。
if( !isupper(user_name[0]) && !islower(user_name[0] ) {
を
if( !isalpha(user_name[0]) ) {
にする。
一行しかないものは削除
0130デフォルトの名無しさん
2009/02/02(月) 03:08:57関数の引数を↓のようにして(muは平均sigmaは標準偏差)
double p_nor(double z, double mu, double sigma)
変数を宣言しているすぐ下に
z = (z-mu)/sigma;
を追加すればおk
0131116
2009/02/02(月) 03:27:12できました!
こんな夜中にありがとうございます!
t = p = z * exp(-0.5 * z2) / (sqrt(2 * PI) * sigma);
のように、ここにもsigmaをかけなければいけないと思ってて
3日間ほどずっと悩んでました。
ほんとありがとうございます!
0132デフォルトの名無しさん
2009/02/02(月) 06:14:06当方初心者でかなり無知ですがよろしくおねがいします。
0133デフォルトの名無しさん
2009/02/02(月) 06:55:57fopenを別々ですね。
0134デフォルトの名無しさん
2009/02/02(月) 10:57:09[2] 問題文(含コード&リンク): http://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言語の宿題だったのでお願いしました。
他の方と系統は違いますが、よろしくおねがいします。
0135デフォルトの名無しさん
2009/02/02(月) 11:47:57って思ってしまう俺は疲れてるのかな。
0136デフォルトの名無しさん
2009/02/02(月) 11:49:010137デフォルトの名無しさん
2009/02/02(月) 11:50:340138デフォルトの名無しさん
2009/02/02(月) 12:07:40フローチャートって使ったことない。使うもんなの?
0139デフォルトの名無しさん
2009/02/02(月) 12:09:11ふつうは "r+" とか "w+" だな
同時と言っても順序・タイミング考えないとぐちゃぐちゃになってしまうが
0140デフォルトの名無しさん
2009/02/02(月) 12:09:31今はどうか知らんけど、パチンコやパチスロのソフトは認可通すのに必須だとか?
0141デフォルトの名無しさん
2009/02/02(月) 12:16:55使う場合もあるしない場合もあるけど
ISOなんちゃらの監査の時に資料がいるので一応作っている
0142デフォルトの名無しさん
2009/02/02(月) 12:39:06そういう使い方なのか・・・
フローチャート書けるってことは、論理がわかってるってことだから
結局同じ手間でソースかけるような気がするんだよね。
だからフローチャートの必要性がわからんかった。
0143デフォルトの名無しさん
2009/02/02(月) 13:30:04[2] 問題文(含コード&リンク): http://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] その他の制限:
0144デフォルトの名無しさん
2009/02/02(月) 13:47:15[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] その他の制限: 特にないが構造体とファイル処理まで習いました。
0145デフォルトの名無しさん
2009/02/02(月) 14:10:00[2] 問題文(含コード&リンク):
Hopfieldネットワークの連想う記憶に関する以下の2つの課題を行いなさい。
Hopfieldネットワークとしては、ニューロン数N=63のものを考える。また記憶さ
せるパターンは、numbers.txtにある、0〜9までの数字のイメージをもちいる。
課題→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8802.txt
numbers.txt→http://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] その他の制限: 特になし
0146デフォルトの名無しさん
2009/02/02(月) 14:21:34よろしくお願いします。助けてください。
0147デフォルトの名無しさん
2009/02/02(月) 14:43:29int 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;
}
0148デフォルトの名無しさん
2009/02/02(月) 15:17:00課題1のすっごいわかりやすかったです!!!
ありがとうございます、助かりました!!!
@課題2・3誰か助けてください orz
0149デフォルトの名無しさん
2009/02/02(月) 15:47:11課題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;
}
0150デフォルトの名無しさん
2009/02/02(月) 16:24:03#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;
}
0151デフォルトの名無しさん
2009/02/02(月) 16:25:28課題提出に問題ないと思うけど
問題文の解釈は自分ではこうなるけど、、、
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);
0152デフォルトの名無しさん
2009/02/02(月) 16:37:51scanf("%d",&n);
while(n<=0){
printf("正の整数を入力してください。\n");
scanf("%d",&n);
}
入力部はこれでひと塊なんだ
0153デフォルトの名無しさん
2009/02/02(月) 16:48:57>>150 を試してみましたが
色々入力してみて結果をみると
a が含まれてるのに表示されないのがあります
どう改善すればいいでしょうか;;;
0154デフォルトの名無しさん
2009/02/02(月) 16:51:16fgets を使う
0155デフォルトの名無しさん
2009/02/02(月) 17:03:33fgets って言うのは習ってないので
どこに組み込めばいいか分からないです…。
0156150-151
2009/02/02(月) 17:11:59自分でコンパイルしてなかった。すまん。
>>153>>155
strlenが改行コード含むと思ってプログラムしてたから、自作関数の-1を消してもらえば大丈夫だと思う。
0157デフォルトの名無しさん
2009/02/02(月) 17:14:29-1を消したらうまくできました!ありがとうございます^^
>>147,149,150,151,152,154,156
いい人が沢山居て本当に助かりました☆
皆さんありがとうございました!!!
0158デフォルトの名無しさん
2009/02/02(月) 18:50:58読んでないけど、>>115で不満なのか?
0159デフォルトの名無しさん
2009/02/02(月) 20:53:12[2] 問題文(含コード&リンク):http://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)がさっぱりわかりません・・・・。よろしくお願いします。
0160デフォルトの名無しさん
2009/02/02(月) 21:01:550161デフォルトの名無しさん
2009/02/02(月) 21:04:48はええな
マジで?
おれより速い奴がいるなんて興奮して勃起しちゃった
0162デフォルトの名無しさん
2009/02/02(月) 21:10:20すごいですね!ありがとうございます。
0163デフォルトの名無しさん
2009/02/02(月) 21:20:28質問者じゃないんだけど
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;
0164デフォルトの名無しさん
2009/02/02(月) 21:31:18http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/power.html
0165デフォルトの名無しさん
2009/02/02(月) 21:36:58>for(i=n;i>0;i>>=1){ ←i>>=1これどういう意味ですか?
iを右に一つシフトした結果をiに代入する。
結果、iが二分の一になる。
0166デフォルトの名無しさん
2009/02/02(月) 21:38:49>結果、iが二分の一になる。
端数切捨てね。
5(101)→2(10)
0167デフォルトの名無しさん
2009/02/02(月) 22:01:27[2] 問題文(含コード&リンク):
サイコロを転がして目を決める。
・テーブルとサイコロを作成する。
・キー操作でサイコロを投げ下ろすように振る。
・落下してきて,1つの目を上にして止まる。
・何度でも遊べる
◎テーブルにサイコロの影がある
◎回転しながら落下してくる
◎自由な方向から見ることができる
◎テーブルの上でサイコロは跳ね,転がる。
◎サイコロとして正しい
http://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の課題ですがよろしくお願いいたします。
0168デフォルトの名無しさん
2009/02/02(月) 22:37:410169デフォルトの名無しさん
2009/02/02(月) 22:41:33http://pc11.2ch.net/test/read.cgi/tech/1232983248/
0170デフォルトの名無しさん
2009/02/02(月) 22:41:35答えはNO
スレ違い
0171デフォルトの名無しさん
2009/02/02(月) 22:43:50こっちか。ありがとう
0172デフォルトの名無しさん
2009/02/02(月) 22:48:04[2] 問題文:Visual c++を使って大富豪を作りなさい。
ルールは、8切りのみです。ペア、階段等は無しにします。 CPUは1名とします。
カード枚数は10枚ずつで、ジョーカーは無しです。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:
[3.3] 言語:Visual c++
[4] 期限: できれば早めに・・・・
[5] その他の制限: まだ基礎段階なので、なるべく簡単なプログラムがいいです。 画像の取り込みとかはせずに、文章で表示すればいいらしいです。 Visual c++がよくわからないので、よろしくお願いします
0173デフォルトの名無しさん
2009/02/02(月) 22:49:49スレ違いなのに質問に答えてくれてありがとうございます
0174デフォルトの名無しさん
2009/02/02(月) 23:14:27CPUとの1対1でいいのか?
ペアなしっていうのは、常に1枚ずつしかカード出せないってことでいい?
ていうかCPUの思考ルーチン作るのって基礎段階を大幅に超える気がするんだが
0175デフォルトの名無しさん
2009/02/02(月) 23:21:420176デフォルトの名無しさん
2009/02/02(月) 23:29:56お願いされるWORDが無い
0177105
2009/02/02(月) 23:33:50#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");
}
}
どこがいけないのでしょうか?
何度も住みませんが、よろしくお願いします。
0178デフォルトの名無しさん
2009/02/02(月) 23:37:27バブルソート フローチャート
でググれ
0179デフォルトの名無しさん
2009/02/02(月) 23:40:46Z==7がまずい
というかそれ、問3じゃないのか?
0180デフォルトの名無しさん
2009/02/02(月) 23:44:31あ、ごめんなさい。問3でした
z==7がいけない、ということは
y==7 か z==7 どちらかしか使用してはいけないということなのでしょうか
文字数が7、尚且つ数字であるとき、という風にしたいのですが・・・
0181デフォルトの名無しさん
2009/02/02(月) 23:57:45仕様を、常に自分からで敵は出せる最小を必ず出す、とすれば楽になる。
が、10行20行で分かりやすく纏めるのやファイルうpはめんどい。
流れの案だけ、書いとく。
全体 [シャッフル]->[配布]->[スタート(自分の番)]->[ループ&終了判定]->[終了時コメント]->end
ループ部分
自分の番:自分のカードを printf("%d:%d ",i%10,ME[i]);とかで表示
scanfでキーボードの1,2,3,...,9,0を選択。フラグ処理などしないと、同じカード捨てる事になる。
相手の番:場に出ている番号(初めは0)より大きい最小のカードのインデックスを計算
あればそのインデックス。無ければ自分の番に。
細かいシステム管理(枚数チェックとか、場のカードの数・切るとか)も必要だし、
[シャッフル]7行 [配布]2〜5行 [ループ&終了判定]30行位[終了時コメント]3行
整理して、こんなもんかな?
0182デフォルトの名無しさん
2009/02/02(月) 23:57:45言ってることとやってることがめちゃくちゃだぞ
数字かどうか判断するにはxに格納された文字が
'0'と'9'の間にあるかどうかを判断すべき
それと宿題程度ならいいと思うが
getsはなるべく使わない方がいい
0183デフォルトの名無しさん
2009/02/03(火) 00:00:57よく使ってるscanfも曲者と聞きますし、fgets&sscanfが良いと聞きますが
宿題レベルでもでしょうか?実感ないのですが。
0184デフォルトの名無しさん
2009/02/03(火) 00:01:39z==7だと zが7かどうかを判定してることになってしまう。
ほしいのは7桁かどうかだから、これはまずい。
あとはzが7桁の数字かどうか判定すればいいだけだよ。
それとgets()は使わない方がいい。
この辺参考に
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/getc.3.html
0185デフォルトの名無しさん
2009/02/03(火) 00:05:49オーバーフローするような値を
敢えて入力するやつはいないと思うから
宿題レベルでとやかく言われることはないんじゃね?
でもリスクは少なくしておくべき
0186デフォルトの名無しさん
2009/02/03(火) 00:05:57bool 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");
}
0187デフォルトの名無しさん
2009/02/03(火) 00:06:50出せるカードの中で一番弱いカードを出す程度で十分。
商用ゲームですらこれのことあるし。
0188デフォルトの名無しさん
2009/02/03(火) 00:07:33常に1枚だすので大丈夫です。よろしくお願いします。
0189デフォルトの名無しさん
2009/02/03(火) 00:17:01整数型変数xに値16を代入文で直接代入する代わりに、ポインタ変数を用いて
間接的に行う方法を与えよ。
とても簡単だと思うのですがわからなくて。。。
お願いします
0190デフォルトの名無しさん
2009/02/03(火) 00:21:08int x;
int *px;
px = &x;
*px = 16;
こういうことかな?
0191デフォルトの名無しさん
2009/02/03(火) 00:23:530192デフォルトの名無しさん
2009/02/03(火) 00:24:34>>184
ありがとうございます。おかげさまで無事できました!
授業ではgets()しか習っていませんでしたが使わないほうがいいのですね。勉強になります。
0193181
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;
}
0194デフォルトの名無しさん
2009/02/03(火) 00:49:48ありがとうございます!!
あと、while(条件){作業}
を、if文とdo-while文を使って表現すると、どうなるのでしょうか・・・
0195デフォルトの名無しさん
2009/02/03(火) 00:57:24224 名前:デフォルトの名無しさん[] 投稿日:2009/02/02(月) 22:46:51
while文をif文とdo-while文を使って表現せよ
という問題なんですが…ifも使わなきゃいけないというところがわかりません
どうすればよいのですか??
0196デフォルトの名無しさん
2009/02/03(火) 01:00:04イタチといわれたので
0197デフォルトの名無しさん
2009/02/03(火) 01:02:24チェックしてないのかよ。
0198デフォルトの名無しさん
2009/02/03(火) 01:03:380199デフォルトの名無しさん
2009/02/03(火) 01:05:390200デフォルトの名無しさん
2009/02/03(火) 01:08:58このスレは答え教えてくれるんで
0201デフォルトの名無しさん
2009/02/03(火) 01:15:05do{
if(!x){ break; }
/*処理*/
}while(x);
0202デフォルトの名無しさん
2009/02/03(火) 01:27:040203デフォルトの名無しさん
2009/02/03(火) 01:55:24if(!x) break;
/*処理*/
}while(1);
でもよくね?
0204デフォルトの名無しさん
2009/02/03(火) 01:58:34loop:
if (!x)
break;
/* 処理 */
goto loop;
} while (0);
0205デフォルトの名無しさん
2009/02/03(火) 01:59:27while(cnd){
/* ○処理 */
}
if(cnd?"GO"[0|0]:0x0)do{
/* ○処理 */
}while("yoru"['-'-'-']?cnd:69);
0206デフォルトの名無しさん
2009/02/03(火) 06:08:15[2] http://www.pref.fukushima.jp/pc-concours/2008/03/pdf/2007honsen.pdf 問6 問7
[3] 環境
[3.1] OS:Windows
[3.2]visual C++
[3.3] 言語:C++
[4] 期限: 2009年2月4日まで
[5] main関数を使いそれ以外にもユーザ定義関数を1つ以上作成すること。
入力はscanf 出力はprintfでお願いします。
>>46の時は、ほんと助かりました。
今回もお願いします。
0207デフォルトの名無しさん
2009/02/03(火) 06:57:53実行できなかったもので・・・
0208デフォルトの名無しさん
2009/02/03(火) 07:38:52問6
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8805.txt
0209デフォルトの名無しさん
2009/02/03(火) 07:48:04>入力はscanf 出力はprintfでお願いします。
ってかいてあるべ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8806.txt
0210デフォルトの名無しさん
2009/02/03(火) 08:16:43問7
#include <stdio.h>
#define COUNT_OHAJIKI 32
#define MAX_JIRO 25
int main(){
int n;
scanf("%d",&n);
while(n!=0){
int i,rest=COUNT_OHAJIKI,jiro[MAX_JIRO];
for(i=0;i<n;i++)scanf("%d", jiro+i);
i=0;
while(rest!=0){
rest-=(rest-1)%5;
printf("%d\n", rest);
rest-=jiro[i];
if(rest<0)rest=0;
printf("%d\n", rest);
i=(i+1)%n;
}
scanf("%d",&n);
}
return 0;
}
0211デフォルトの名無しさん
2009/02/03(火) 10:13:29[2] 問題文(含コード&リンク):
・2つの分数の分子と分母を入力すると,それらの和・差・積・商を
出力する.データは構造体で表現すること.
・分数計算では通分・約分には最大公約数が必要になる.通分には分母の最小公倍数が,
約分には最第公約数が必要である.したがってこれらを計算する関数をそれぞれ作る.
・最大公約数を求めるには,次のアルゴリズムを使うとよい(ユークリッドの互除法).
�@ mをnで割る (ただしm>n).
�A �@の割る数を�@の余りで割る.
�B �Aの割る数を�Aの余りで割る.
�C 以下同様に,余りが0になるまで繰り返し,そのときの「割る数」が最大公約数になる.
・2つの数,m,nの最小公倍数は,m*n/(mとnの最大公約数)で求めることができる.
(実行例)
1つめの分数の分子・分母の入力―>3 4
2つめの分数の分子・分母の入力―>1 6
和:11 / 12
差: 7 / 12
積: 1 / 8
商: 9 / 2
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 今週中ぐらい
[5] その他の制限: 繰り返し文、条件判断文、構造体を勉強しました。
初心者なので、初心者にもわかるようなプログラムをお願いします。
0212デフォルトの名無しさん
2009/02/03(火) 11:25:26[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8807.txt
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: ([2009年02月04日17:00まで]
[5] その他の制限:
0213デフォルトの名無しさん
2009/02/03(火) 11:28:51[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8808.txt
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: ([2009年02月04日17:00まで]
[5] その他の制限:
0214デフォルトの名無しさん
2009/02/03(火) 11:36:27これ見てから考えな。あと、これくらい一つのファイルにまとめろ。
0215デフォルトの名無しさん
2009/02/03(火) 11:40:08#include <stdio.h>
int main(void) {
int i, j, n;
printf("段数を入力してください: ");
scanf("%d", &n);
for(i = 0; i < n; i++) {
for(j = 0; j < i + 1; j++) printf("*");
printf("\n");
}
return 0;
}
0216デフォルトの名無しさん
2009/02/03(火) 11:41:04構造体はどういう形で作ればいいんだ?
指定なし?
なしなら授業で作った構造体を1つ晒してくれ
0217デフォルトの名無しさん
2009/02/03(火) 11:42:41#include <stdio.h>
int main(void) {
int i, j, n;
printf("段数を入力してください: ");
scanf("%d", &n);
for(i = 0; i < n; i++) {
for(j = 0; j < i; j++) printf(" ");
for(j = 0; j < (n - i) * 2 - 1; j++) printf("*");
printf("\n");
}
return 0;
}
0218デフォルトの名無しさん
2009/02/03(火) 12:48:06どう?
#include <stdio.h>
typedef struct bunsu{int bunshi,bunbo;} BUNSU;
int main(){
BUNSU bunsu1,bunsu2;
printf("1つめの分数の分子・分母の入力->\n");scanf("%d%d",&(bunsu1.bunshi),&(bunsu1.bunbo));
printf("2つめの分数の分子・分母の入力->\n");scanf("%d%d",&(bunsu2.bunshi),&(bunsu2.bunbo));
int bunbo=bunsu1.bunbo*bunsu2.bunbo;int bunshi=bunsu1.bunshi*bunsu2.bunbo+bunsu2.bunshi*bunsu1.bunbo;
int GCD = gcd(bunshi,bunbo);
printf("和:%d / %d\n",bunshi/GCD,bunbo/GCD);
//
bunshi=bunshi=bunsu1.bunshi*bunsu2.bunbo-bunsu2.bunshi*bunsu1.bunbo;
GCD = gcd(bunshi,bunbo);
printf("差:%d / %d\n",bunshi/GCD,bunbo/GCD);
//
bunshi=bunshi=bunsu1.bunshi*bunsu2.bunshi;
GCD = gcd(bunshi,bunbo);
printf("積:%d / %d\n",bunshi/GCD,bunbo/GCD);
//
bunshi=bunshi=bunsu1.bunshi*bunsu2.bunbo;
bunbo=bunsu1.bunbo*bunsu2.bunshi;
GCD = gcd(bunshi,bunbo);
printf("商:%d / %d\n",bunshi/GCD,bunbo/GCD);
return 0;
}
int gcd(int m,int n){
if(m<n){int temp=m;m=n; n=temp;}
int amari;
while((amari=m%n)!=0){m=n;n=amari;}
return n;
}
0219デフォルトの名無しさん
2009/02/03(火) 13:18:18編集してみた。
#include <stdio.h>
typedef struct bunsu{int son,mom;} BUNSU;
int main(){
BUNSU A,B;
int new_mom,GCD;
printf("1つめの分数の分子・分母の入力-> \t"); scanf("%d %d",&(A.son), &(A.mom));
printf("2つめの分数の分子・分母の入力-> \t"); scanf("%d %d",&(B.son), &(B.mom));
GCD = gcd(A.mom,B,mom); new_mom = (A.mom*B.mom)/GCD; // 通分
GCD = gcd(new_mom,A.son+B.son);
printf("和:%d / %d\n",(A.son+B.son)/GCD,new_mom/GCD);
GCD = gcd(new_mom,A.son-B.son);
printf("差:%d / %d\n",(A.son-B.son)/GCD,new_mom/GCD);
GCD = gcd(A.son*B.son,A.mom*B.mom);
printf("積:%d / %d\n",(A.son*B.son)/GCD,(A.mom*B.mom)/GCD);
GCD = gcd(A.son*B.mom,A.mom*B.son);
printf("商:%d / %d\n",(A.son*B.mom)/GCD,(A.mom*B.son)/GCD);
return 0;
}
int gcd(int m,int n){
if(m<n){int temp=m;m=n; n=temp;}
int amari;
while((amari=m%n)!=0){m=n;n=amari;}
return n;
0220デフォルトの名無しさん
2009/02/03(火) 13:28:11そんなのを気にするくらいなら
BUNSU bunsu_add(BUNSU a, BUNSU b);
的なのを作ったほうがよくないか?
0221デフォルトの名無しさん
2009/02/03(火) 13:32:37ツッコミドコロは、そこじゃないな。
0222デフォルトの名無しさん
2009/02/03(火) 13:39:36文字数 896 -> 680。実にソースの24%がbun成分です。もはやネタソースだろ。
0223デフォルトの名無しさん
2009/02/03(火) 13:39:52しかも一文字
0224デフォルトの名無しさん
2009/02/03(火) 13:47:100225デフォルトの名無しさん
2009/02/03(火) 13:49:17一文字変数にしてご満悦って、70年代の世界からでも来たのかよ?
0226デフォルトの名無しさん
2009/02/03(火) 13:50:00通分が分からないって、ありえないだろ。
いじらなくても変数名だけ変えられたし。
0227219
2009/02/03(火) 13:50:29a,c,i,xは基本の型で、行列や構造体等A,Ary,Array場合によるが大文字も使う。
特にVBとか別言語触れてからは、使い分けるようになった。
>>224 ソースコードで変な想像したら負け組(new_mom?A.mom*B.son:A.son*B.momとか)
0228デフォルトの名無しさん
2009/02/03(火) 13:50:52ばかか
0229デフォルトの名無しさん
2009/02/03(火) 13:52:31バカだから、テストどころかコンパイルもしないで貼ってみたわけね・・・
0230デフォルトの名無しさん
2009/02/03(火) 13:52:55小学校からやり直せよ
0231デフォルトの名無しさん
2009/02/03(火) 13:54:02そもそも>>219は計算が間違ってるwww
0232デフォルトの名無しさん
2009/02/03(火) 14:09:510233デフォルトの名無しさん
2009/02/03(火) 14:18:21[2] ニュートン法とオイラー法で√2の近似値を計算するプログラムを作れ
ただし、計算は50ステップ行い、それぞれの初期値とsqrt(2)との差を表示する事。
初期値は各々が定めてよい
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VC2005EE
[3.3] 言語:C
[4] 期限:09/02/04迄
[5] その他の制限:
文字表示・繰り返し文・条件判断とオイラー法の計算は分かります
0234デフォルトの名無しさん
2009/02/03(火) 14:58:41オイラー法ってこんなか?
#include <stdio.h>
#include <math.h>
double newton(){
double x=1.0;
int i;
for(i=0;i<50;i++){
x=x-(x*x-2)/(2*x);
}
return x;
}
double euler(){
int n=50;
double x=1.0,h=(double)(2-1)/n;
int i;
for(i=0;i<n;i++){
x=x+h/(2*x);
}
return x;
}
int main(){
double temp=newton();
printf("sqrt(2):%f,newton:%f,差:%f\n",sqrt(2),temp,sqrt(2)-temp);
temp=euler();
printf("sqrt(2):%f,euler:%f,差:%f\n",sqrt(2),temp,sqrt(2)-temp);
return 0;
}
0235デフォルトの名無しさん
2009/02/03(火) 15:19:50VBに触れたから呪われたんだな
0236デフォルトの名無しさん
2009/02/03(火) 16:04:45ありがとうございます!
for文の中身1行で表せるんですね。
初期値表示と(double)(2-1)を2.0-1.0など軽く置き換えて完成しました。
0237デフォルトの名無しさん
2009/02/03(火) 19:48:11O(N^2)じゃなくO(NlgN)だ
0238デフォルトの名無しさん
2009/02/03(火) 20:41:50つまり、O(NlnN)だな。でも、NlogNだと思ってて、N^2だったってよりよくない?
0239デフォルトの名無しさん
2009/02/03(火) 20:51:590240デフォルトの名無しさん
2009/02/03(火) 21:18:36[2] 問題文(含コード&リンク):
角度はラジアン単位(rad),度単位(degree)【°】で表される.さらに 度単位は 32.4°と10進小数表示する場合と
32度24分と度分秒で表示する場合がある.(60秒で1分, 60分で1度)
�@2つの角度(度単位)を10進小数点2桁 でキーボードから入力し(例 69.21° と 33.73° )
それらを度分秒単位で 表示させるプログラムを作成しなさい.
�Aさらに度分秒単位で表示された2つの角度の差を求め,度分秒単位で表示しなさい.
計算は度分秒単位のまま引き算すること(60進法の引き算アルゴリズムを作成すること).
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2009年2月4日 13:00
[5] その他の制限: よろしくお願いします
0241デフォルトの名無しさん
2009/02/03(火) 21:25:502バイト文字か?まずその入力ができるかが問題だ。
Alt+半角で全角打てるけど、(例 69.21 と 33.73)の間違えだと言ってくれ。
0242デフォルトの名無しさん
2009/02/03(火) 21:37:58すみません
半角です
0243デフォルトの名無しさん
2009/02/03(火) 22:03:28和と差が計算できなかったのですが、どうすれば
いいでしょうか?
どなたか教えてください。
0244デフォルトの名無しさん
2009/02/03(火) 22:18:25GCD = gcd(A.mom,A.son+B.son);
printf("和:%d / %d\n",(A.son+B.son)/GCD,A.mom/GCD);
GCD = gcd(A.mom,A.son-B.son);
printf("差:%d / %d\n",(A.son-B.son)/GCD,A.mom/GCD);
0245デフォルトの名無しさん
2009/02/03(火) 22:23:43分子: son
っていうネーミングセンスが素敵だ
0246デフォルトの名無しさん
2009/02/03(火) 22:36:37日本語の一部を切り出して英語にするっていうのは新しい。
0247デフォルトの名無しさん
2009/02/03(火) 22:40:47誤差がぁぁぁ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8809.c
0248デフォルトの名無しさん
2009/02/03(火) 22:42:30#include<stdio.h>
#include<math.h>
typedef struct { int deg, min, sec; } Degree;
void rad2deg(Degree *pdeg, double rad) {
pdeg->deg = (int)rad;
rad = (fabs(rad) - fabs(pdeg->deg)) * 60;
pdeg->min = (int)rad;
rad = (rad - pdeg->min) * 60;
pdeg->sec = (int)rad;
}
void print_deg(const Degree *pdeg) {
printf("%d度%02d分%02d秒\n", pdeg->deg, pdeg->min, pdeg->sec);
}
void degsub(Degree *pdiff, const Degree *pdeg1, const Degree *pdeg2) {
pdiff->sec = pdeg1->sec - pdeg2->sec;
pdiff->min = pdeg1->min - pdeg2->min;
pdiff->deg = pdeg1->deg - pdeg2->deg;
if (pdiff->sec < 0) { pdiff->sec += 60; pdiff->min --; }
if (pdiff->min < 0) { pdiff->min += 60; pdiff->deg --; }
}
int main() {
double rad1, rad2;
Degree deg1, deg2, degdiff;
printf("radian1="); scanf("%lf", &rad1);
printf("radian2="); scanf("%lf", &rad2);
rad2deg(°1, rad1); printf("degree1="); print_deg(°1);
rad2deg(°2, rad2); printf("degree2="); print_deg(°2);
degsub(°diff, °1, °2); printf("degree1-degree2="); print_deg(°diff);
return 0;
}
0249デフォルトの名無しさん
2009/02/03(火) 22:55:09#include <stdio.h>
#include <math.h>
struct ds_t { int d; int m; int s;};
struct ds_t dec2ds(double dd){
struct ds_t ds;
ds.d = floor(dd);
ds.m = floor(60*(dd - ds.d) + 0.5/60);
ds.s = floor(3600*(dd - ds.d) - 60*ds.m + 0.5);
return ds;
}
void print_ds(struct ds_t *ds){
printf("%d.%d\'%d\"\n", ds->d, ds->m, ds->s);
}
struct ds_t sub_ds(struct ds_t *ds1, struct ds_t *ds2){
struct ds_t ds3;
ds3.d = ds1->d - ds2->d;
ds3.m = ds1->m - ds2->m;
ds3.s = ds1->s - ds2->s;
if(ds3.s < 0) ds3.s += 60, ds3.m--;
if(ds3.m < 0) ds3.m += 60, ds3.d--;
return ds3;
}
int main(void){
double dd1, dd2;
struct ds_t ds1, ds2, ds3;
scanf("%lf%lf", &dd1, &dd2);
ds1 = dec2ds(dd1); ds2 = dec2ds(dd2);
print_ds(&ds1); print_ds(&ds2);
ds3 = sub_ds(&ds1, &ds2);
return 0;
}
0251デフォルトの名無しさん
2009/02/03(火) 22:58:00そのコードはクズだ。捨てろ。
0252デフォルトの名無しさん
2009/02/03(火) 23:00:11[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8810.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2]コンパイラ名とバージョン:C++ Compiler 5.5/Turbo Debugger
[3.3] 言語:C
[4] 期限:一ヶ月以内
[5] その他の制限:2重ループを使うらしいですが使わなくてもいいそうです。
0253デフォルトの名無しさん
2009/02/03(火) 23:01:15そこで上書きして残りの積と商をどうするツモリだ。
0254デフォルトの名無しさん
2009/02/03(火) 23:03:53分母と分子に同じ数掛けてるから大丈夫
0255デフォルトの名無しさん
2009/02/03(火) 23:16:22#include<stdio.h>
int main(){
int i,j,tmp,data[5+1];
for(i=0;i<10;i++){
printf("%d人目",i);
scanf("%d",&tmp);
data[tmp]++;
}
for(i=1;i<=5;i++){
printf("\n%d",i);
for(j=0;j<data[i];j++) printf("*");
}
return 0;
}
0256デフォルトの名無しさん
2009/02/03(火) 23:16:460257デフォルトの名無しさん
2009/02/03(火) 23:21:21一番上に書く名前が分かりません><
マジレスはお断りしておきます
0258デフォルトの名無しさん
2009/02/03(火) 23:23:35degree[i][1] = (int)((input[i] - (int)input[i]) * 10) * 6;
degree[i][2] = (int)((input[i] * 10 - (int)(input[i] * 10)) * 10) * 6;
この計算式は何なのか、後でAAで提出するように。
0259デフォルトの名無しさん
2009/02/03(火) 23:23:40134は馬鹿なの?死ぬの?
0261デフォルトの名無しさん
2009/02/03(火) 23:34:09フローチャートは詳しくないが日本語にそれらしく訳してくと
開始
ファイルをfpiに読み込む
ファイルの先頭からデータ数をnへ代入
ループ iをn回 配列xのi番目にi番目のデータを代入
ループ iをn-1回 (中身jループ)
/* */ ループ jをi+1からnまで
/* */ /* */ 分岐 x[i]>x[j] --YES--> x[i]とx[j]を交換 -->jループへ
/* */ /* */ --NO-->jループへ
ループ iをn回 iとx[i]を表示
終了
0262デフォルトの名無しさん
2009/02/03(火) 23:50:17オフィスを入れてなかった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8811.zip
0263デフォルトの名無しさん
2009/02/03(火) 23:55:15力作乙
だが、extention error だ
名前と実体が異なっている
0264デフォルトの名無しさん
2009/02/04(水) 00:01:47そんな突っ込みは想定していない。
OpenOfficeの操作覚えようかな……。
0265デフォルトの名無しさん
2009/02/04(水) 00:25:25#include <stdio.h>
int main(void)
{
int a[10], c[5], i, j;
for (i = 0; i < 9; ++i) scanf("%d,", &a[i]); scanf("%d", &a[9]);
for (i = 0; i < 5; ++i) c[i] = 0;
for (i = 0; i < 10; ++i) c[a[i] - 1]++;
for (i = 0; i < 5; ++i) {
printf("%d", 5 - i);
for (j = 0; j < c[4 - i]; ++j) printf("*");
printf("\n");
}
return 0;
}
0266デフォルトの名無しさん
2009/02/04(水) 00:56:37コンソールアプリでいいんだよね?
言語はCとC++どっち?
0267デフォルトの名無しさん
2009/02/04(水) 02:13:27>[5] その他の制限: まだ基礎段階なので、なるべく簡単なプログラムがいいです。 画像の取り込みとかはせずに、文章で表示すればいいらしいです。 Visual c++がよくわからないので、よろしくお願いします
C++のWindowアプリケーションを望んでいるようには見えない。
求めてるのは”なるべく簡単”でしょ。
0268デフォルトの名無しさん
2009/02/04(水) 14:27:20[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8813.txt
[3.1] OS: Windows
[3.3] 言語:C言語
[4] 期限:2月5日まで
[5] その他の制限:すみません自力ではわかりません.ご指導お願いします
0269デフォルトの名無しさん
2009/02/04(水) 14:46:26{
char str[33]="";
for(b=31;b>=0;b--){
sprintf(str,"%s%d",(x>>b)&1);
return str;
}
> jprintf(bit pattern=%s\n",bitpart(x,bit));
なんかちがう
0270897です
2009/02/04(水) 14:51:10打ち間違いでした
printf("bit pattern =%s\n", bitpart(x,bit));
です.すみません
0271デフォルトの名無しさん
2009/02/04(水) 14:51:44char*bitpart(int x,char *bit)
{
int b;
bit[32] = '\0';
for(b=31;b>=0;b--){
sprintf(&bit[31-b],"%d",(x>>b)&1);
}
return bit;
}
0272デフォルトの名無しさん
2009/02/04(水) 15:00:15早い返事ありがとうございます
助かりました
0273897
2009/02/04(水) 17:01:19[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8814.txt
[3.1] OS: Windows
[3.3] 言語:C言語
[4] 期限:2月5日まで
[5] その他:お願いします
0274デフォルトの名無しさん
2009/02/04(水) 17:17:20void insert(int num, struct node *p)
{
struct node *n;
while (p->next != NULL && p->next->key < num) {
p = p->next;
}
n = (struct node *)malloc(sizeof *n);
n->key = num;
n->next = p->next;
p->next = n;
}
0275デフォルトの名無しさん
2009/02/04(水) 17:27:54ありがとうございます!!
なんとかいけそうです
0276デフォルトの名無しさん
2009/02/04(水) 17:46:14[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8815.txt
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: ([2009年02月05日12:00まで]
[5] その他の制限:
よろしくお願いします。
0277デフォルトの名無しさん
2009/02/04(水) 18:01:53#include <stdio.h>
int main(void)
{
int kinshu[10] = { 10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1 };
int i, j, c, n;
printf("金額を入力してください: "); scanf("%d", &n);
for (i = 0; i < 10; ++i) {
for (c = 0; n / kinshu[i]; ++c) n -= kinshu[i];
printf("%5d円: %d枚\n", kinshu[i], c);
}
return 0;
}
0278デフォルトの名無しさん
2009/02/04(水) 18:10:45c=n/kinshu[i]; n-= c*kinsyu[i];
0279デフォルトの名無しさん
2009/02/04(水) 18:37:30[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8817.txt
[3] 環境
[3.1] OS: Windows XP
[3.3] 言語: C
[4] 期限: 2009年02月05日まで
問題多いですがよろしくお願いします。
0280デフォルトの名無しさん
2009/02/04(水) 18:38:16[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8816.txt
[3.3] 言語:C言語
[4] 期限:2月5日まで
[5] その他: 違うところで同様の質問をして,いろいろヒントをもらった
のですが,いまいちわかりません.その時こちらを紹介されたので,
どうかお願いします
0281デフォルトの名無しさん
2009/02/04(水) 18:52:39int pop(void)
{
struct node *n = TOP.next;
if (n == NULL) {
fprintf(stderr, "no stack\n");
return 0;
}
else {
int num = n->key;
TOP.next = n->next;
free(n);
return num;
}
}
int main(void)
{
TOP.next = NULL;
push(21);
push(42);
printf("%d\n", pop());
printf("%d\n", pop());
return 0;
}
0282デフォルトの名無しさん
2009/02/04(水) 19:29:50どんだけ丸投げだよ。
0283デフォルトの名無しさん
2009/02/04(水) 19:37:05ってこれは・・・w
0285Rm
2009/02/05(木) 00:09:41[2] N×Nの行列A,Bに大して、次のようなプログラムを作成せよ。
・A+B、A−B、A×Bを出力するプログラム
・Aの逆行列を出力するプログラム(ピボット選択法)
ただし
・Nはdefineで4と定義する。
・A,Bそれぞれの成分データはdouble型配列に保存する。
・行列A,Bの各成分のデータは時間に依存した種から与えられる疑似関数により自動生成する。
http://mathweb.sc.niigata-u.ac.jp/~yamada/system/wed/kadai.htm
実際ほかの課題もわかりません。1は出来ましたが。
[3] 環境
[3.1] OS:Windows
[3.2] gcc
[3.3] 言語: C
[4] 期限: 5日
よろしくお願いいたします。
0286デフォルトの名無しさん
2009/02/05(木) 00:52:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8819.txt
0288デフォルトの名無しさん
2009/02/05(木) 02:24:30わかりませんもなにも見たまんまpushしてpopしてるだけだと思うが
もう一度といわれてもこれ以外書きようがないと思うべ?
どこがどうわからないか考え直してきなさい
0289280 です
2009/02/05(木) 02:39:14push(42);
これがよくわかりません
コンパイルしてもこれしかでないのですが・・・
mainは、任意個数の数字を入力させてそれをpushし、
EOFになったら逆にpopで値を取り出して画面に表示する
みたいな感じにしたいのですが・・
0290デフォルトの名無しさん
2009/02/05(木) 02:57:53>pushとpopが正常に動作をしているか確かめられるプログラムを作成してください
といわれて>>289の下半分の内容を読み取れなんてエスパーじゃない限り無理
int main(void)
{
TOP.next = NULL;
int d;
while(scanf("%d", &d)!=EOF) push(d);
while(TOP.next) printf("%d\n", pop());
return 0;
}
0292デフォルトの名無しさん
2009/02/05(木) 03:06:140293デフォルトの名無しさん
2009/02/05(木) 03:23:22{
wakeup;
static int day;
int time = wakeuptime();
while(1)
{
2ch;
if(time == Daytime())
{
lunch;
};
if(time == nighttime())
{
supper;
};
if( time == sleeptime();)
{
break;
}
time++;
}
day++;
sleep;
}
こんな毎日、無限ループって怖いよな;;
0294デフォルトの名無しさん
2009/02/05(木) 03:48:10和、差、積のやつ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8821.c
0295285
2009/02/05(木) 04:09:48ありがとうございます。よろしければ逆行列プログラムもお願いします。
0296デフォルトの名無しさん
2009/02/05(木) 04:54:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8822.c
0297285
2009/02/05(木) 05:24:02このような時間帯にわざわざありがとうございます。
おかげ様で助かりました。
0299デフォルトの名無しさん
2009/02/05(木) 12:42:16自己解決したので取り下げます。スレ汚し失礼しました。
0300デフォルトの名無しさん
2009/02/05(木) 13:13:46[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8823.txt
[3.1] OS: Windows
[3.3] 言語:C言語
[4] 期限:2月6日まで
[5] その他:お願いします
0301デフォルトの名無しさん
2009/02/05(木) 14:25:46[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8824.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:明日まで
[5] その他の制限:与えられたプログラムを改造(付け足し)する
0302デフォルトの名無しさん
2009/02/05(木) 15:16:54#include <stdio.h>
int main(void)
{
int i, j, c;
char seq[] = "tion";
i = 0;
while ((c = getchar()) != EOF) {
if (c == seq[i]) {
i++;
if (i == sizeof(seq) - 1) {
break;
}
}
else {
for (j = 0; j < i; j++) {
putchar(seq[j]);
}
i = 0;
putchar(c);
}
}
return 0;
}
0303デフォルトの名無しさん
2009/02/05(木) 15:18:390304デフォルトの名無しさん
2009/02/05(木) 15:26:50#define INPUT_FILE_NAME "foo.in"
#define OUTPUT_FILE_NAME "bar.out"
int main(void)
{
struct student A[Nmax];
double avg=0;
int i;
FILE *fin, *fout;
fin = fopen(INPUT_FILE_NAME, "r");
if (fin == NULL) { perror(INPUT_FILE_NAME); return 1; }
for( i=0; i<Nmax; i++){
fscanf (fin, "%d %d %d %s", &A[i].sc1,&A[i].sc2,&A[i].sc3,A[i].name);
}
fclose(fin);
fout = fopen(OUTPUT_FILE_NAME, "w");
if (fout == NULL) { perror(OUTPUT_FILE_NAME); return 1; }
fprintf(fout, "Score Name\n");
fprintf(fout, "-------------------------------------------\n");
for(i = 0;i <Nmax; i++){
A[i].total =(A[i].sc1+A[i].sc2)*0.4+A[i].sc3;
A[i].res =(A[i].total>=60)?"A": "F";
avg += A[i].total;
fprintf(fout, "%6.1f %s %s\n", A[i].total,A[i].res, A[i].name);
}
fprintf(fout, "---------------------------------------------\n");
fprintf(fout, "%6.1f (Avg)\n",avg/Nmax);
fclose(fout);
return 0;
}
0305デフォルトの名無しさん
2009/02/05(木) 16:09:19>>301
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8825.txt
0306 ◆g8eVFLrbyk
2009/02/05(木) 16:49:09[2] 問題文:http://www.s.kyushu-u.ac.jp/~z6st02in/repo2008z/repo2008kprob.html
問題2と3をおねがいします。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C++言語
[4] 期限:明日まで
[5] その他の制限:与えられたプログラムを改造(付け足し)する
0307suzuki
2009/02/05(木) 16:59:16調査した上で厳正に処理するから首を洗っとれ
0309デフォルトの名無しさん
2009/02/05(木) 17:27:29今日面接でプログラミングの手書きのテストをやってきました。
テスト終わって家に帰ってから効率のいいコードの書き方を思い出しました。
テスト中は時間のことが気になって思い出せずとりあえず動くコードで書きました。
テストの場合は白紙や書き途中で提出するくらいなら、
とりあえず動くコードで書いておけば特に問題はないですよね?
0310デフォルトの名無しさん
2009/02/05(木) 17:30:050311デフォルトの名無しさん
2009/02/05(木) 19:25:48「動かないよりマシ」って言って欲しいんだろうけど、
採点者が何を見ているか次第なんじゃね?
Fizz-Buzz問題って日本でも実施してるのかな?
ナベアツ問題は、このスレでも何度か回答されてるよね。
プログラマーなら「FizzBuzz問題」解けるよな?
http://pc11.2ch.net/test/read.cgi/prog/1209467166/
Fizz Buzz(ウィキペディア)
http://ja.wikipedia.org/wiki/Fizz_Buzz
どうしてプログラマに・・・プログラムが書けないのか?
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
0312301
2009/02/05(木) 20:15:18すみません。問題が間違ってました
正しくはhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8826.txtでした
0313デフォルトの名無しさん
2009/02/05(木) 20:23:27[2] 問題文(含コード&リンク):
データファイル(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8827.txt) には,1000 人の「学籍番号,科目A,科目B,科目C の各点数」が学籍番号順に並んでいる.
そのデータファイルを元に,キーボードから入力された学籍番号の学生の成績(含:3科目の合計点の順位)を表示するプログラムを作れ.
探索は二分探索を使い,ソートにはクイックソートを使うこと.
合計点が同じになる学生はいないということは既知とせよ.
学籍番号が存在しない場合は,”No data ”と表示するようにせよ.
表示は以下のようにせよ.
Input A Student Number: 14【Enter】
Ranking : #269 /*最高得点は1位とせよ.*/
Subject A : 86
Subject B : 59.1
Subject C : 220.42
Total : 365.52
[3] 環境
[3.1] OS:Win
[3.2] gcc
[3.3] C
[4] 2月6日23:59
おねがいします。
0314デフォルトの名無しさん
2009/02/05(木) 21:03:57#include<stdio.h>
#include<string.h>
int main(void){
int c, i;
char history[4*2]="";
for(i=0;(c=getchar())!=EOF;i++){
history[i%4]=history[(i%4)+4]=c;
printf("%c", c);
if(strncmp(&history[(i+1)%4], "tion", 4)==0) break;
}
return 0;
}
0315305
2009/02/05(木) 21:07:49例 This is important information for me! の場合 This is important informaと出力
This scene is romantic の場合 This scene is romantic (tionの並びでないのでそのまま出力)
上のプログラムに、入力列としてt、i、o、nの並びが与えられた場合にも入力を終了する機能を追加せよ
例 This is important information for me! の場合 This is important informationと出力
This scene is romantic の場合 This scene is romantic (tionの並びでないのでそのまま出力)
0316305
2009/02/05(木) 23:50:36#include<stdio.h>
#define LEN 4
char tion[LEN + 1] = "tion";
int main(void)
{
int c = '\0', k = 0;
while ((c = getchar()) != EOF && k < LEN) {
if (c == tion[0])
k = 1;
else if (k > 0) {
if (c == tion[k])
k++;
else
k = 0;
}
putchar(c);
}
return 0;
}
0317301
2009/02/06(金) 00:46:550318デフォルトの名無しさん
2009/02/06(金) 02:48:49[2] 問題文(含コード&リンク):
ニュートン法と二分法の両方を用いて,直線y = x + 1/2 と単位円
x2 + y2 = 1 の交点の座標の近似解(小数点以下第6位まで)を求めよ.
1つのプログラムに書くこと(ニュートン法と二分法に関する箇所はmain
関数から独立させよ)
ニュートン法も二分法もともに何回で収束したかが分かるようせよ.
関数へのポインタは必ず使うこと.
表記は例えば以下のようにすること:
Newton method:
Lower part: count : ????
sol :( ?????, ????? )
Upper part: count : ????
sol :( ?????, ????? )
二分法で用いる初期値は[a,b]= [-1,1]とせよ
ニュートン法で用いる初期値は2つとも0とせよ。その際,1つの関数は
収束しない.収束しない場合は,求められないと分かった時点で計算を終了
するように工夫せよ.また,そのときは以下のように表記せよ.
sol : Not converge
収束しない場合は,なぜ収束しないのかをコメントとして書くこと.
[3] 環境
[3.1] OS: windows
[3.2]gcc
[3.3] 言語: C
[4] 2月6日の夜まで
期限がせまっていて申し訳ありませんが自分でできなかったためよろしくおねがいします><
0319デフォルトの名無しさん
2009/02/06(金) 03:27:02#include <stdlib.h>
#include <string.h>
char *crypt(const char *key, const char *salt);
#define MAXLEN 16
#define TRIPLEN 10
#define PATH "trip.out"
typedef unsigned char uchar;
int get_saltc_old(uchar c){
if(c < '.' || c > 'z') return '.';
if(c >= ':' && c <= '@') return c - ':' + 'A'; // :;<=>?@ - ABCDEFG
if(c >= '[' && c <= '`') return c - '[' + 'a'; // [\]^_` - abcdef
return c;
}
int gen_trip(uchar *o, int n, uchar *w){
uchar sal[3];
uchar *t;
sal[0] = get_saltc_old(n > 1 ? w[1] : 'H');
sal[1] = get_saltc_old(n > 2 ? w[2] : '.');
sal[2] = '\0';
t = crypt(w, sal);
strncpy(o, t + strlen(t) - TRIPLEN, TRIPLEN);
return 0;
}
0320デフォルトの名無しさん
2009/02/06(金) 03:34:04int i;
for(i = 0; i < n; i++) o[i] = pos[i];
for(i = n - 1; i >= 0; i--){
if(pos[i] < m - 1){
pos[i]++;
return 1;
}else{
pos[i] = 0;
}
}
return 0;
}
int gen_word_list(uchar *w, int n, int m, uchar *s){
static uchar *pos = NULL;
int i;
if(!pos){
pos = (uchar *)malloc(sizeof(uchar) * n);
for(i = 0; i < n; i++) pos[i] = 0;
}
if(gen_combination(w, n, m, pos)){
for(i = 0; i < n; i++) w[i] = s[w[i]];
w[n] = '\0';
return 1;
}
if(pos){
free(pos);
pos = NULL;
}
w[0] = '\0';
return 0;
}
0321デフォルトの名無しさん
2009/02/06(金) 03:34:39FILE *fp;
if(f)
if((fp = fopen(path, "ab+")) != NULL){
fprintf(fp, "%s\n", s);
fclose(fp);
}
fprintf(stdout, "%s\n", s);
return 0;
}
int scantrip(int n, int m, uchar *s, uchar *f){
uchar *w, *t;
char buf[4096];
w = (uchar *)malloc(sizeof(uchar) * n + 1); w[n] = '\0';
t = (uchar *)malloc(sizeof(uchar) * TRIPLEN + 1); t[TRIPLEN] = '\0';
sprintf(buf, "'%s' in len %d", f, n); sout(PATH, buf, 1);
while(gen_word_list(w, n, m, s)){
gen_trip(t, n, w);
int b = n - 2;
if(w[n - 1] == '.' && (w[b] == '.' || w[b] == 'U')){ sprintf(buf, "%4d #%s %s %s", n, w, "----------------------------------------", t); sout(PATH, buf, 0); }
if(strstr(t, f)){ sprintf(buf, "%4d #%s %s", n, w, t); sout(PATH, buf, 1); }
}
if(t) free(t);
if(w) free(w);
return 0;
}
0322デフォルトの名無しさん
2009/02/06(金) 03:35:06uchar *s="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
uchar *f="Linux";
int i;
for(i = 1; i < MAXLEN; i++) scantrip(i, strlen(s), s, f);
return 0;
}
0323デフォルトの名無しさん
2009/02/06(金) 05:07:28> 二分法で用いる初期値は[a,b]= [-1,1]とせよ
その間に、解が二つある気がする。
> ニュートン法で用いる初期値は2つとも0とせよ。その際,1つの関数は
> 収束しない.収束しない場合は,求められないと分かった時点で計算を終了
> するように工夫せよ.また,そのときは以下のように表記せよ.
> sol : Not converge
> 収束しない場合は,なぜ収束しないのかをコメントとして書くこと.
オレの知らないニュートン法?
0324デフォルトの名無しさん
2009/02/06(金) 05:54:45gccだと動作がおかしい
VCだと正常に動く
誰か原因を教えてくれ・・・・orz
gcc
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8828.c
VC
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8829.txt
0325デフォルトの名無しさん
2009/02/06(金) 08:25:430326デフォルトの名無しさん
2009/02/06(金) 08:39:11そのままかけてみたが正常に動作した
gccだと標準入力を促すところまで行くが
直後のsscanfでプログラムが終了してしまう
一応OSはXPです
0327318
2009/02/06(金) 08:44:17交差する点2つありますよね。両方とも求めるんだと思います。
二分法のアルゴリズムは
Step 1
f (a) < 0 かつf (b) > 0(または, f (a) > 0 かつf (b) < 0)を満たす
ような変数a, b の値を設定し,十分小さい正数ε を設定する.
Step 2
c = (a + b)/2 とし,
f (c) = 0 であれば,【Step 3】に移る.
f (c) > 0 であれば,b をc で置き換える.
f (c) < 0 であれば,a をc で置き換える.
|a-b| < 2ε であれば,【Step 3】に移る.
Step 3
c を解とする.
という感じらしいです。ニュートン法は反復の限界値を決めて(100回くらいに)
反復回数がそれを超えたら停止してほしいのですが・・。
0328デフォルトの名無しさん
2009/02/06(金) 11:30:38sscanf(buf, "%d%lf%lf%lf",&(st[i].number),&(st[i].ascore),&(st[i].bscore),&(st[i].cscore));
で
"%d,%lf,%lf,%lf" に
0329デフォルトの名無しさん
2009/02/06(金) 12:48:40> 二分法のアルゴリズムは
つまり、1セットの初期値からは、一つの解しか見つからないし・・・
xの式、f(x)=0になるxを探すワケだけど、f(a)とf(b)の符号が逆じゃなきゃいけないんだよね。
区間に二つ解があるということは、つまり、f(1)とf(-1)の符号はおんなじなわけだけど・・・?
> という感じらしいです。ニュートン法は反復の限界値を決めて(100回くらいに)
> 反復回数がそれを超えたら停止してほしいのですが・・。
初期値が二つといっているのだから、解の一つごとに初期値をおくように思うが、両方0にしろと言う。
オレの知っているニュートン法ではないようだ。
0330デフォルトの名無しさん
2009/02/06(金) 13:28:170331デフォルトの名無しさん
2009/02/06(金) 14:24:29[2] 問題文(含コード&リンク): http://www.logos.ic.i.u-tokyo.ac.jp/icpc2007/jp/index.html
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2009年2月10日13:00まで
[5] その他の制限:特になし
ACM国際大学対抗プログラミングコンテスト国内予選2007問題Bです
既出だったらすまん
お頼みもうします
0332デフォルトの名無しさん
2009/02/06(金) 14:59:00[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8831.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: ([2009年02月07日20:00まで]
[5] その他の制限:
0333デフォルトの名無しさん
2009/02/06(金) 15:08:21[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8832.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: ([2009年02月07日20:00まで]
[5] その他の制限:
0334デフォルトの名無しさん
2009/02/06(金) 15:15:00[2] 問題文(含コード&リンク)
(1)区間演算ライブラリを作れ。(加減乗除のみでもOK)
(2)Gaussの消去法のプログラムを作り、それを区間演算化せよ
以上ですが、ソースコードのみでもかまいません
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:明日20時まで
[5] その他の制限: 特になし
0335デフォルトの名無しさん
2009/02/06(金) 15:25:11> 以上ですが、ソースコードのみでもかまいません
ソースコード以外だと、何が付くの?
0336デフォルトの名無しさん
2009/02/06(金) 15:41:34> [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
『等』・・・・こいつ相当のマニアか。
開発環境が書ききれないほど。ドンと来い。
> [3.3] 言語: (C/C++/どちらでも可 のいずれか)
pu-w
0337デフォルトの名無しさん
2009/02/06(金) 15:51:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8833.txt
0338デフォルトの名無しさん
2009/02/06(金) 15:58:57どうしようもない時以外に、goto使う奴は
どうしようもない奴だと思うぞ。
elseで全部つなげば解決じゃないですか。
0339デフォルトの名無しさん
2009/02/06(金) 16:13:48素数を出すアルゴリズムがアレなのでめっちゃ遅いけど。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8834.c
0340デフォルトの名無しさん
2009/02/06(金) 16:23:22>>332
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8835.txt
0341デフォルトの名無しさん
2009/02/06(金) 16:24:18しーっ・・・
0343339
2009/02/06(金) 16:31:29アジア地区予選の問題やってたorz
0344デフォルトの名無しさん
2009/02/06(金) 16:40:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8836.txt
0345デフォルトの名無しさん
2009/02/06(金) 17:31:56[1] 授業単元:数値解析
[2] 問題文(含コード&リンク)
(1)区間演算ライブラリを作れ。(加減乗除のみでもOK)
(2)Gaussの消去法のプログラムを作り、それを区間演算化せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:どちらでも可
[4] 期限:明日20時まで
[5] その他の制限: 特になし
0346313
2009/02/06(金) 20:57:11>>328
324さんのプログラムを328さんの言うように修正してみたところ
データを読み込み、表示されるところまではいくのですが全ての数値が0になってしまいます。
どうすればいいでしょうか。。。
0347デフォルトの名無しさん
2009/02/06(金) 22:06:23ニュートン法で100回も反復するとか時間の無駄だからな
初期値が悪くてもせいぜい10回だ
0348デフォルトの名無しさん
2009/02/06(金) 23:45:25なんとなく、計算できているような気がする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8838.c
0349デフォルトの名無しさん
2009/02/07(土) 04:11:05関数とか要らないことに気づいたので、大分、短くなった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8839.c
0350325
2009/02/07(土) 04:18:57double total(Student st){
// return (st.ascore + st.bscore + st.cscore);
double a = (st.ascore + st.bscore + st.cscore);
return a;
}
>>346
// printf("%d%lf%lf%lf",&(st[i].number),&(st[i].ascore),&(st[i].bscore),&(st[i].cscore));
printf("%d%lf%lf%lf", (st[i].number), (st[i].ascore), (st[i].bscore), (st[i].cscore));
0351デフォルトの名無しさん
2009/02/07(土) 04:21:55すごい短縮だな。(2階層くらいで関数化したら、もっと打ちやすかったんじゃ)
でも、元ファイルc++だろ? >>331はC指定かかってるよ。
0352デフォルトの名無しさん
2009/02/07(土) 04:33:39C++ではないよ。-std=c99つけないとコンパイルできないけど。
0353デフォルトの名無しさん
2009/02/07(土) 04:48:34「-std=c99つければ、gccでもコンパイルできるよ」かな?
0354325
2009/02/07(土) 04:54:11double a;
do{
while((a=total(st[pl])) > x) pl++;
while((a=total(st[pr])) < x) pr--;
>>346 悪い、間違えた。君の言うとおりだ。
0355325
2009/02/07(土) 05:01:10double a;
do{
pc = (pl + pr) / 2;
if((a=total(st[pc])) == key)
return pc;
else if((a=total(st[pc])) > key)
0356デフォルトの名無しさん
2009/02/07(土) 13:01:57>>348>>349
>>351->>353
有難うございます
アジア地区のもやってみたかったので助かりました
なんかテストいけそうな気がする
0357デフォルトの名無しさん
2009/02/07(土) 13:17:050358デフォルトの名無しさん
2009/02/07(土) 13:24:44> なんかテストいけそうな気がする
ありえねー・・・
0360デフォルトの名無しさん
2009/02/07(土) 16:34:38あるとおもいます。
0361デフォルトの名無しさん
2009/02/07(土) 16:48:390362デフォルトの名無しさん
2009/02/07(土) 17:06:55>起 >>356 いけそうな気が!
>承 >>358 ありえねー・・
>転 >>360 あると思います。
>結 >>361 ??
??に入る言葉を(ry
0363デフォルトの名無しさん
2009/02/07(土) 17:11:400365326
2009/02/07(土) 18:42:210366325
2009/02/07(土) 18:55:070367326
2009/02/07(土) 19:58:100368325
2009/02/07(土) 20:17:42> Input A Student Number: 14【Enter】
> Ranking : #269 /*最高得点は1位とせよ.*/
尚こちらでは、>>350 上)の修正で直った。
0369324
2009/02/07(土) 20:24:17正常に動作することが確認できました
ちなみにどうして修正前では
正常に動作しなかったのか
理由は分かりますか?
0370325
2009/02/07(土) 20:26:570371324
2009/02/07(土) 20:32:53お手数おかけしました
ありがとうございました
0372326
2009/02/07(土) 21:28:36このようにして実行するとRankingがすべて0になるんで、52行目のreturn -1;を
return -pr;に変えたところRankingが表示されました。(14のとき269位)
これで正常動作かなーと思ったんですが
例えば生徒番号1の動作みたところ表示される数値間違ってませんか?
0373デフォルトの名無しさん
2009/02/07(土) 21:38:07スタック領域のオーバーフローでセグメンテーション違反。
0374デフォルトの名無しさん
2009/02/07(土) 21:47:02修正したソースを見せて。
0375326
2009/02/07(土) 21:52:26これです。
0376デフォルトの名無しさん
2009/02/07(土) 23:22:19mark_sortが変。
クイックソートやりたいんだろうけどできてない。
xを基準にして大小をわけてるけど
xがその境界にきてないから変なことになる。
mark_sortやめてqsort使ったら
0377デフォルトの名無しさん
2009/02/07(土) 23:36:39こっちでは上手く動くようなのだけど、>>375のソースとの違いってあるかな?
http://www1.cts.ne.jp/~clab/hsample/Sort/Sort9.html
0378324
2009/02/07(土) 23:54:41pivotの選び方に欠陥があることは承知しているが
最も単純な方法でクイックソートを作ったつもり
qsortを使わなかったのは問題にクイックソートを
使うよう指定されていたのでアルゴリズムを理解していることを
示す必要があると思ったから
その必要がなかったら確かにqsort関数を使った方が
高速にできると思う
0379デフォルトの名無しさん
2009/02/08(日) 00:26:38double total(Student st); で3個の数値を合計している所が違う(追加)。
0380デフォルトの名無しさん
2009/02/08(日) 01:22:08int cmp_double(double x, double y)
{
return x > y ? 1 : x < y ? -1 : 0;
}
void mark_sort(Student *st, int left, int right){
int pl = left;
int pr = right;
double x = total(st[(pl + pr) / 2]);
while(1){
while(cmp_double(total(st[pl]), x) > 0) pl++;
while(cmp_double(total(st[pr]), x) < 0) pr--;
if(pl >= pr){
break;
}
swap(st, pl, pr);
pl++;
pr--;
}
if(left < pl - 1) mark_sort(st, left, pl -1);
if(pr + 1 < right) mark_sort(st, pr + 1, right);
}
>>379
( ´_ゝ`)
0381379
2009/02/08(日) 02:08:20while(1) はそのままにした。めんどうなので。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8844.txt
0382379
2009/02/08(日) 02:18:25// while(total(st[pl]) > x) pl++;
while((total(st[pl]) > x) != ((a=total(st[pl])) > x)?printf("%d ",pl):printf(","),
((a=total(st[pl])) > x)) pl++;
0383デフォルトの名無しさん
2009/02/08(日) 02:27:13一回呼び出し側の領域に入れると問題なしなのか!
0384326
2009/02/08(日) 03:09:16色々とみなさんありがとうございました。
0385デフォルトの名無しさん
2009/02/08(日) 03:25:16よく分からんが、ebpレジスタ同士の比較じゃないと上手く動作しないってこと?
0386385
2009/02/08(日) 03:35:07http://0xcc.net/blog/archives/000164.html
ほとんどバグじゃねーか
0387デフォルトの名無しさん
2009/02/08(日) 10:40:5953*100=5299.9999999..になることだってあるだろ
0388デフォルトの名無しさん
2009/02/08(日) 11:42:070389デフォルトの名無しさん
2009/02/08(日) 12:09:34もう一度読んできて。
0390デフォルトの名無しさん
2009/02/08(日) 13:02:12xに従ってplとprを移動しているループは、与えられた
st[left,right]を飛び出す可能性があるがその問題は放置?
0391デフォルトの名無しさん
2009/02/08(日) 13:18:070392sage
2009/02/08(日) 16:25:06[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):星型5角形(★)の面積を求めるプログラムを作成せよ。ただし、入力は*.txtファイルから行い、入力、計算は関数化すること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:cygwin1.5.25-15
[3.3] 言語:C
[4] 期限: ([2009年2月9日10:00まで]
[5] その他の制限:特にありませんが、動的メモリ確保(malloc関数)の勉強をしていました。
0393デフォルトの名無しさん
2009/02/08(日) 16:38:32口頭で問題を言われただけなので問題文がなく、自分で書いたため、少し問題文にミスがありましたため、補足させてもらいます。
入力のtxtファイルには、時計回りに5つ(もしくは、6つ[6つ目は開始地点と同じ座標])の座標を入力することが条件となっております。
0394デフォルトの名無しさん
2009/02/08(日) 16:43:14C言語
(問題)
ファイル xy2data.dat には,カンマで区切られた2つの整数データ(値は0以上5以下)が並んだ行が
何行か格納されている.
各行の最初の整数値をx,次の整数値をyとしてx-y座標上の点(x.y)をファイルの行数個考える.
これらの点と、点(4,4)との距離の2乗の値の度数分布を求め,頻度が3以上となる距離の2乗の値
をその値が小さいものから順にカンマで区切って出力するプログラムを作成せよ.
ファイルは
FILE *in_file;
in_file = fopen("xy2data.dat","r");
としてopenし,このファイルからデータを読み出す時は,
fscanf(in_file,"%d,%d",&x,&y);
として読み出せばよい.(xとyは整数型変数とする)
また,読み出しが終わったら,
fclose(in_file);
としてクローズすること.
0395デフォルトの名無しさん
2009/02/08(日) 17:04:39星型の条件が分からん。
正確な五芒星なの?
0396デフォルトの名無しさん
2009/02/08(日) 17:27:590397デフォルトの名無しさん
2009/02/08(日) 17:46:19http://maps.google.co.jp/maps?ll=41.796944,140.756643&t=h&z=16
0398デフォルトの名無しさん
2009/02/08(日) 17:49:00星型の条件とはどういうことでしょう?><;
頂点5つの座標は
4.00000 0.00000
-3.23607 -2.35114
1.23607 3.80423
1.23607 -3.80423
-3.23607 2.35114
です。
答えになっているでしょうか・・・?
0399デフォルトの名無しさん
2009/02/08(日) 17:54:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8845.txt
0400デフォルトの名無しさん
2009/02/08(日) 20:37:04memcpy(&byteData ,pTimData ,2 ); /* pTimDataからbyteDataへコピー */
byteData = byteData & 0x7c00; /*15bit分のマスクを掛ける。*/
byteData = byteData >> 12; /*12bit移動*/
read(byteData, bmpData, sizeof(short));/*処理後のデータを格納*/
/*次の2byeを格納するためループ。全て格納し終えたらループから抜け出す*/
memcpyでpTimDataからbyteDataへ2byte分切り出した後
論理積でマスクをかけビットシフトしたあと、bmpDataに格納するというものなのですが
このままだと2byte分だけbmpDataに格納して処理を終了してしまいます。
処理後の全pTimDataのデータをbmpDataを入れたいのですが、どのようなループ文を書いたらいいのでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8847.txt
0401デフォルトの名無しさん
2009/02/08(日) 20:44:44スレちがい。
どこぞ、質問スレへ行け
0402デフォルトの名無しさん
2009/02/08(日) 20:57:03申し訳ない。
まんま丸投げじゃないと駄目なんですね。
失礼しました。
0403デフォルトの名無しさん
2009/02/08(日) 21:01:55記載ありがとうございます。
大変もうしわけありませんが、アップしていただいたURLにアクセスできないので、
本文中に記載していただけないでしょうか?
0404デフォルトの名無しさん
2009/02/08(日) 21:21:26ごちゃごちゃしてるけど。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8848.txt
#pragma warning(disable : 4996)の部分は消して使ってね
0405399
2009/02/08(日) 21:53:010406デフォルトの名無しさん
2009/02/08(日) 22:01:23404さんありがとうございます!
ですが、コンパイルできるのですが、実行ができません><;
& gcc ファイル名.c
& a.exe input.txt
でコンパイル&実行をしたのですが、これではだめなのでしょうか?
↓input.txtの中身
4.00000 0.00000
-3.23607 -2.35114
1.23607 3.80423
1.23607 -3.80423
-3.23607 2.35114
0407デフォルトの名無しさん
2009/02/08(日) 22:03:19実行は
& ./a.exe input.txt
の間違いです。
「./」を書き入れるのを忘れました^^;
0408デフォルトの名無しさん
2009/02/08(日) 22:14:55プログラムで指定されているファイル名は、in.txtだからねえ・・・
0409デフォルトの名無しさん
2009/02/08(日) 22:15:27を
int main(int argc, char* argv){
read_points("in.txt",point);
を
read_points(argv[1],point);
でいくと思う
0410デフォルトの名無しさん
2009/02/08(日) 22:23:49か。ごめん!
0411デフォルトの名無しさん
2009/02/08(日) 22:28:490412デフォルトの名無しさん
2009/02/08(日) 22:42:10[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8849.txt
[3] 環境
[3.1] OS: Windows XP
[3.3] 言語: C
[4] 期限: 2月9日12:00まで
よろしくお願いします。
0413デフォルトの名無しさん
2009/02/08(日) 22:46:32「重複数」の定義は?
0414デフォルトの名無しさん
2009/02/08(日) 22:52:00クソな課題だな。
int a[x]をmallocで確保してa[ key % x]++して
全部終わったらa[k]が2以上の数を数えてxを掛ける
これの繰り返し?上限は「入力されたうちの最大値+1」か?
0415デフォルトの名無しさん
2009/02/08(日) 23:02:27それだとx=1が常に最適になるので、本当のクソになる。
a[k]の大きさも加味すべきだろう。
0416デフォルトの名無しさん
2009/02/08(日) 23:09:18何も言われてないので分からないです。
0417デフォルトの名無しさん
2009/02/08(日) 23:59:23keyは一意でいいんだよね?
0418デフォルトの名無しさん
2009/02/09(月) 00:15:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8850.txt
バケットの要素数count[i]が2以上であるバケットiについて、Σcount[i]!/2を「要素数」とした。count[i]!/2は、バケットから2要素を選ぶ組み合わせ数。
また、バケット数の上限は、(最大のkey)+1とした。
0419418
2009/02/09(月) 00:23:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8851.txt
バケットから2要素を選ぶ組み合わせ数はcount[i]*(count[i]-1)/2だね。
0420デフォルトの名無しさん
2009/02/09(月) 02:24:55[2]問題文:
UNIXなどのオペレーティングシステムで使用されているファイル名称慣用表示を正式表示に変換する。
標準入力から慣用表示を含む表記を正式表記に変換して標準出力に出力すること
先頭文字が.の場合はカレントディレクトリ下のファイル名とすること
例:カレントディレクトリ=/home/test
/usr/bin/ls ===> /usr/bin/ls
/usr/bin/local/sbin/tmp/../localls ==> /usr/bin/local/sbin/localls
/usr/./tmp==>/usr/tmp
./program/source ==>/home/test/program/source
../../home/sample ==>/home/sample
../../../home/sample==>/home/sample
.../test==>/test
./sample/test/...../test==>/test
./bin/../../../.. ==>/
[3]
linux gcc (Windowsでも可)
C言語
[4] ★木曜日の正午までに提出
★標準的な書式(行内マルチステートメント禁止)で250行以内
★再帰呼び出しは使用禁止
★グローバル変数使用禁止
★パス名の長さは制限無しとする
初級コースが満杯なので、中級コースをとって
しまったら、課題レポートが自分には激ムズでした。
自分でやってみたら収拾がつかなくなってしまいました。
期限までわずかに時間はありますが、できれば一両日中に何と
かお願いします。
0421デフォルトの名無しさん
2009/02/09(月) 03:48:45こんなのでいいかな?
0422デフォルトの名無しさん
2009/02/09(月) 04:01:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8853.txt
・malloc, reallocでNULLが帰ってきたときのエラー処理をしていない
・標準入力から読み込んで標準出力に出力するだけ
勝手に補ってくれ。
0423デフォルトの名無しさん
2009/02/09(月) 05:34:00.../test ==> /test
./sample/test/...../test==>/test
この2つは一般的な処理ではないので、仕様を出さないと分からん
* 「/\.{3,}/にマッチするものが出たらrootとみなす」と予想
* 因みに、UN*Xでは"..."(dot*3)というファイル名は有効
>>421-422
.hoge .foo/bar ..foo/bar ...foo/bar
foo/.bar foo/..bar foo/...bar
///foo/bar foo///bar
とかが一部おかしい
0424デフォルトの名無しさん
2009/02/09(月) 07:44:01>>423の指摘を受けて修正してみた。今度こそそれなりに動くのではなかろうか。
スマートじゃないし、見にくいがご了承願いたい。
なお、ドットの数が3つ以上続く場合については、
ドットの数だけ遡る(/foo/bar/baz/.../qux → /foo/qux)と推測して作ってある。
>>423
ドットで始まるファイル(ディレクトリ)名の存在と、
スラッシュが続いたときの処理をすっかり忘れてた。
こんなんだからバグが出るんだろうな…。
0425デフォルトの名無しさん
2009/02/09(月) 08:38:35求められてる解答とは多分違うし、かなり強引だけど、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8855.c
0426デフォルトの名無しさん
2009/02/09(月) 09:03:19無事動作しました。ありがとうございました。
0427デフォルトの名無しさん
2009/02/09(月) 14:20:30[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org26612.zip.html
[3] 環境
[3.1] OS: マック
[3.3] 言語: c
[4] 期限: 2月9日23:59まで
[5] 補足:
すみません。。無茶苦茶難しい問題です。添付のサイトにあるプログラムはアイディーエルで
書かれたコードです。実行すると確かに凄い動画を再生出来ましたが、これを並列プログラミングで
書けという難題を出されて手が出せずに困っています。。こうなったら少しでも何か書いて提出したい
ので、少しでも何か動作すればいいというレベルなのですが、どなたかわかる方いらっしゃいます?
0428デフォルトの名無しさん
2009/02/09(月) 14:54:27[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8856.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C言語
[4] 期限:2月10日23:59まで
[5] その他の制限:すみません。よろしくお願いします。
0429デフォルトの名無しさん
2009/02/09(月) 16:06:07while(1){
int temp = floor(t*10);
int HH,MM,SS,MS;
HH=temp/36000;
temp%=36000;
MM=temp/600;
temp%=600;
SS=temp/10;
MS=temp%10;
//
printf("%02d:%02d:%02d:%01d00\r",HH,MM,SS,MS);
0430デフォルトの名無しさん
2009/02/09(月) 16:12:03IDLもMPIもしらねーよ
0431デフォルトの名無しさん
2009/02/09(月) 16:40:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8857.txt
0432デフォルトの名無しさん
2009/02/09(月) 20:22:340433デフォルトの名無しさん
2009/02/09(月) 20:36:30[2] 問題文(含コード&リンク): 下のほうに詳しく
[3] 環境
[3.1] OS:WindowsXP SP3 32bit
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語:C/C++/
[4] 期限 : 木曜日まで
ランダムな値を取得する関数を作れと言われました
使い方
サイコロを振るなら
int dice = getRandom(6) + 1;
20%の確立で
if(getRandom(100) < 20) {
}
と言う感じに指示が出されました
宜しくお願いします
0434デフォルトの名無しさん
2009/02/09(月) 21:16:390435デフォルトの名無しさん
2009/02/09(月) 21:17:09int getRandom(int imax)
{ return rand()%imax; }
int getRandom(int imax)
{ return (int)((double)rand()*imax/(1.0+RAND_MAX)); }
お好きな方でどうぞ
0436デフォルトの名無しさん
2009/02/09(月) 21:17:51これは罠だな
MT法を実装するのが求められてる答えと見た
0437デフォルトの名無しさん
2009/02/09(月) 21:19:44ロケットスタジオにようこそ
0438デフォルトの名無しさん
2009/02/09(月) 21:37:14[2] 問題文(含コード&リンク): 下記
[3] 環境
[3.1] OS:WindowsXP SP3 32bit
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語:C/C++/
[4] 期限 : 水曜日まで
*問題文
二次元配列n×nにおいて「0」「1」3」の三種類の数字が入っている。
その中で「1」のみを検出するプログラムを作りたい。
条件:列において「1」は必ず連続している。
例:
「0」「3」「1」
「1」「0」「0」
「1」「1」「1」
一列目:○
二列目:○
三列目:×
条件では無いが、レスポンスの早いプログラムを意識して作ること。
という問題です。宜しく御願いします。
0439デフォルトの名無しさん
2009/02/09(月) 22:03:55の様に「→」が表示されるようになってしまったんですが
これをなおすにはどうしたらいいですか?「→」は青っぽいやじるしです
表示の見栄えの問題なんですが これってどうやったら
なおるの?
0440デフォルトの名無しさん
2009/02/09(月) 22:07:040441デフォルトの名無しさん
2009/02/09(月) 22:07:58あとスレ違い
0442デフォルトの名無しさん
2009/02/09(月) 22:14:370443デフォルトの名無しさん
2009/02/09(月) 22:30:04nが不定なのに、行番号を漢数字で出すのは難しすぎだな
0444デフォルトの名無しさん
2009/02/09(月) 22:42:340445デフォルトの名無しさん
2009/02/09(月) 23:54:57先日初めてプログラムの宿題がでましてその内容が簡単なグラフ描画をしてそれをプリントというものなのですが
プログラムの宿題というものはソース提出ではなくプリント出力機能をを自分で搭載してそれを提出汁というものも結構あるのでしょうか?
0446デフォルトの名無しさん
2009/02/10(火) 00:07:47教官に聞け。
0447420
2009/02/10(火) 01:30:47どうもありがとうございます。
参考にさせて頂くつもりですが、
マルチバイトキャラクターというんですか?それにも対応しなければ
ならないらしく、そのような場合はどうすればいいんでしょうか?
0448デフォルトの名無しさん
2009/02/10(火) 02:04:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8859.txt
0449デフォルトの名無しさん
2009/02/10(火) 02:57:40[2] http://www.pref.fukushima.jp/pc-concours/2008/03/pdf/2006honsen.pdf 問1 問8
[3] 環境
[3.1] OS:Windows
[3.2]visual C++
[3.3] 言語:C++
[4] 期限: 2009年2月11日まで
[5] main関数を使いそれ以外にもユーザ定義関数を1つ以上作成すること。
0450433
2009/02/10(火) 07:36:030451デフォルトの名無しさん
2009/02/10(火) 08:48:16問1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8862.cpp
0452デフォルトの名無しさん
2009/02/10(火) 10:32:09http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8863.txt
0453デフォルトの名無しさん
2009/02/10(火) 14:12:01http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8865.txt
何も考えずにワイド文字で取り扱うように変えてみた。これじゃ駄目?
0454427
2009/02/10(火) 14:42:20C言語でどなたかIDLと同じ内容のコードを書ける方どなたかお願いします
0455デフォルトの名無しさん
2009/02/10(火) 15:16:55>>452はスマートだと思ったが、仕様を満たしてないので
俺のへっぽこソースを上げてみる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8867.cpp
0456452
2009/02/10(火) 15:40:41> また、一度バスに乗車したら途中下車はしないものとします。同じ停
> 留所を乗車停留所、降車停留所に指定することはありません。
// その他
// 乗車する停留所と下車する停留所が同じ場合は、その停留所のみを出力する
0458デフォルトの名無しさん
2009/02/10(火) 19:21:02[2] 問題文(含コード&リンク):
2X2行列が安定であるかどうかを判定する関数を作れ.
入力はdouble型の二次元配列とする.
安定条件は,行列の固有値の実部が負であるとき
[3] 環境
[3.1] OS: LINUX
[3.3] 言語: C
[4] 期限: 2月10日24時
0459デフォルトの名無しさん
2009/02/10(火) 20:19:43線型代数の基礎から教えてくれ
0460デフォルトの名無しさん
2009/02/10(火) 21:12:10にわか勉強で書いてみた。
線型代数の素養がないもんだから、
入力と答えの関係が正しいのかどうにもわからん。
#include <stdio.h>
#include <math.h>
int isStable(double l[2][2]) {
double a = 1;
double b = (-l[0][0]) + (-l[1][1]);
double c = l[0][0]*l[1][1] - l[0][1]*l[1][0];
double d = pow(b, 2)-4*a*c;
int out = 0;
if (d > 0) {
if ( (0 > -b + sqrt(d)) && (0 > -b - sqrt(d)) ) {
out = 1;
}
} else {
if (0 > -b) {
out = 1;
}
}
return out;
}
int main() {
//入力
double l[2][2] = {{1, 0},
{0, 1}};
char *s = (isStable(l)?"stable":"unstable");
printf("%s", s);
return 1;
}
0461デフォルトの名無しさん
2009/02/10(火) 21:53:45ぱっと見、合ってそうだけど
>if (0 > -b)
この書き方はねーよw
0462デフォルトの名無しさん
2009/02/10(火) 22:21:330463デフォルトの名無しさん
2009/02/10(火) 22:22:210<=b ってこと?
やー、気にはなったんだが、
解の公式の定義に従って書いたほうが可読性が高いかと
0464デフォルトの名無しさん
2009/02/10(火) 22:27:10入力
8 7
出力
0 1 2 3 4 5 6 7
ってなる。
0465デフォルトの名無しさん
2009/02/10(火) 22:46:49それでもいいけど -b < 0 じゃね?数直線的に考えて
あと正常終了なのにmainが1を返すのはおかしいな
このスレ的には二つともどうでもいいことだけど
0466デフォルトの名無しさん
2009/02/10(火) 22:50:52なるほど!数直線的にか。確かにその方が良いな。
正常終了は0だっけか。C久々だから忘れてた。さんくす。
0467452
2009/02/10(火) 22:55:10int busstop[24] = {0,1,2,3,4,5,6,7,8,9,5,4,3,2,1,0,1,2,3,4,5,6,7,8};
16 を 24 に全置換でオッケー。 ロジックが良いから?
0468デフォルトの名無しさん
2009/02/11(水) 00:39:25問8 できるだけシンプルにしてみた。
#include <stdio.h>
void myfunc(int, int);
int main(){
int x, y;
scanf("%d %d", &x, &y);
myfunc(x, y);
}
void myfunc(int x, int y){
int t, i;
t = 1;
i = x;
if(i<=5)
t *= (x < y)? 1: -1;
putchar(i+'0');
while(i!=y){
i += t;
if(i==0)
t *= -1;
if(i==10){
i = 5;
t *= -1;
}
putchar(' ');
putchar(i+'0');
}
putchar('\n');
}
0469デフォルトの名無しさん
2009/02/11(水) 02:29:14入力 scanf
出力 printf
に直せませんか?
0470デフォルトの名無しさん
2009/02/11(水) 03:04:580471デフォルトの名無しさん
2009/02/11(水) 03:58:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8868.txt
0472デフォルトの名無しさん
2009/02/11(水) 11:21:41[2] 問題文:
n個の引き出しからなるタンスがある。最初各引き出しにはいくつかボールが入っている。
i番目の引き出しを開けるとそれまで入っていたボールのうち1つだけが音もなく1段下の引き出しに落ち、その後のボールの個数だけが見える。
開けた引き出しは次の引き出しを開ける前に閉める。
空の引き出しを開けてもボールは下に落ちない。
ただし最下段(0段)の引き出しに関しては、もともとあったボールの数が見える。
このたんすに最初に入っていたボールの個数を知るアルゴリズムを示せ。アルゴリズムがわからないものは日本語で説明してもかまわない。
(できるだけ引き出しを開ける回数が少ないもの)
i番目の引き出しを開けたときに見えるボールの数はopen(i)という関数でわかるとする。
[4] 期限:2009年2月12日まで
プログラミングというかアルゴリズムの問題なんだけど
誰かわかるひといる?
お願いしますm(__)m
0473デフォルトの名無しさん
2009/02/11(水) 11:32:22上から順に見ていって見えたボールの数の総和でおk
0474デフォルトの名無しさん
2009/02/11(水) 13:01:051個しか入ってない段どうなんだよ
0475デフォルトの名無しさん
2009/02/11(水) 13:09:44べつに1個の段があっても問題ないように思う。
数え間違う具体例出せる?
0476デフォルトの名無しさん
2009/02/11(水) 13:14:431
1
1
0
と
0
0
0
3
見分けつかなくね?
0477デフォルトの名無しさん
2009/02/11(水) 13:20:28>このたんすに最初に入っていたボールの個数
と言うのは、タンス全体で何個と言う意味に見えるが、
「最初に」と言うのは、暗に各段に入っていた数と言っているようにも思える。
ボールの総数を数えるなら、>>473の言うように上から開けていく事で全部の段を調べればわかる。
各段の個数と言うことになると、
一番下の段を開けて個数を確認、
一つ上の段を開けて個数を確認、
一つ以上のボールがあれば、元の数は+1。
0個なら、下の段を開けてボールが増えているか確認。
もう一つ上の段を開けて・・・
と繰り返してゆくのかな?
0478デフォルトの名無しさん
2009/02/11(水) 13:35:54「それぞれの段に」が省略されたら全体でいくつかと考えるほうが自然に見える。
だがそれでは、出題の意味が無い。
0479デフォルトの名無しさん
2009/02/11(水) 14:55:36みたいです。
説明不足すみません
0480デフォルトの名無しさん
2009/02/11(水) 14:57:14> 0個なら、下の段を開けてボールが増えているか確認。
減っているか同じか、どっちかしかないだろう。
> もう一つ上の段を開けて・・・
二つ上の段をあけて0個なら、下の段を開けたいところだが、0個に決まってる。
0481デフォルトの名無しさん
2009/02/11(水) 15:00:16> 減っているか同じか、どっちかしかないだろう。
一番下の段は減らないから、これを使って再帰的に確認するんじゃね?
> 二つ上の段をあけて0個なら、下の段を開けたいところだが、0個に決まってる。
順繰りにあけて、一番下の段まで送る。
0482デフォルトの名無しさん
2009/02/11(水) 15:41:09[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8869.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: cygwin?
[3.3] 言語: C++
[4] 期限: 無期限
[5] クラスをあまり理解していないので指摘していただきたい。
ここまで出来ているのですが(空欄(a)はクラス全体です)、かなりあてずっぽで書きました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8870.txt
0128.cpp: In function `int main()':
0128.cpp:44: error: no matching function for call to `Record::Record()'
0128.cpp:10: note: candidates are: Record::Record(const Record&)
0128.cpp:22: note: Record::Record(std::string, int, double, double)
と言うエラーが出てきます。
data[num++]=Record(name,age,rs,rl) から混乱してきています。
出来れば回答例を頂きたいです。
0483デフォルトの名無しさん
2009/02/11(水) 16:03:33Record data[max_num];
ここでデフォルトコンストラクタを呼ぼうとしてるけど、
コンストラクタは Record(string ,int ,double ,double );
しかないので動かないということ
0484デフォルトの名無しさん
2009/02/11(水) 16:04:39英語読めないの?
> 0128.cpp:44: error: no matching function for call to `Record::Record()'
とあるように、Record data[max_num]; のときに必要な Record::Record() が無いのが問題。
だから、特に何もしないデフォルトコンストラクタでも用意してやればいい。
それから、このスレは丸投げ専用なので質問は質問スレで。
0485480
2009/02/11(水) 16:29:12> 各段の個数と言うことになると、
1. 一番下の段を開けて個数を記録。(n=0)
2. 一つ上の段を開けて個数を確認。(n=n+1)
2.1. 一つ以上のボールがあれば、元の数は+1。 2. に戻る。
2.2. 0個なら、下の段を開ける。
2.2.1. 一番下の段なら、個数を確認して、2. に戻る。
2.2.2. 一つ以上のボールがあった段なら、個数を確認。 2. に戻る。
2.3.3. 0個の段だったら、2.2. に戻る。
3. 上の段が無いなら終了
2.2.1. 一番下の段で個数が増えていたら、2.2 ではもとは1個有った。
2.2.2. 途中の段で個数が同じだったら、2.2 ではもとは1個有った。
0486デフォルトの名無しさん
2009/02/11(水) 16:37:46>>484
即レス感謝いたします。
では、丸投げいたしますのでどなたか完璧な回答をお願いいたします。
mainは変えないで、mainに沿ったクラスを作成するという問題です。
0487デフォルトの名無しさん
2009/02/11(水) 17:24:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8872.txt
0488デフォルトの名無しさん
2009/02/11(水) 17:37:13せっかく書いていただいたのですが、#include<utility>は使えないです。
お手数おかけします。
0489デフォルトの名無しさん
2009/02/11(水) 18:05:54・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
0490デフォルトの名無しさん
2009/02/11(水) 19:50:56すいません、言葉足らずでした
0491デフォルトの名無しさん
2009/02/11(水) 23:51:45[2] 問題文(含コード&リンク): 西暦n 年がうるう年か、平年かを判別する。数値がうるう年だったら"leap year"、平
年だったら"ordinary year"と表示する。
数値は次の6つを用意する。int 型配列変数に格納しておくこと。
1740, 1950, 1984, 1998, 2000, 2008
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C
[4] 期限: 2月14日
[5] その他の制限: #include<stdio.h>でお願いします。
0492デフォルトの名無しさん
2009/02/12(木) 00:39:58#include <stdio.h>
int main()
{
int i,bLeap;
int nYear[6] = {1740,1950,1984,1998,2000,2008};
for( i=0; i< 6; ++i )
{
if( nYear[i] % 400 == 0){bLeap = 1;}
else if( nYear[i] % 100 == 0){bLeap = 0;}
else if( nYear[i] % 4 == 0){bLeap = 1;}
else{ bLeap = 0;}
if( bLeap == 1){printf("%d leap year\n",nYear[i]);}
else {printf("%d ordinary year\n",nYear[i]);}
return 0;
}
0493デフォルトの名無しさん
2009/02/12(木) 01:27:23ありがとうございます。ですがbLeapというのを初めて見ました。
習っている範囲を書き忘れていてすいません;
変数、制御構造(while if for switch break等)、文字と文字列くらいまで勉強しました。
bLeapを使わないやり方も教えていただけないでしょうか。
手間をとらせてしまってすいません;
0494デフォルトの名無しさん
2009/02/12(木) 01:29:59釣りかマジか?
0495デフォルトの名無しさん
2009/02/12(木) 01:30:05int main() (プ
int nYear[6] = {1740,1950,1984,1998,2000,2008}; (プ
for( i=0; i< 6; ++i ) (プ
0496デフォルトの名無しさん
2009/02/12(木) 01:31:550497デフォルトの名無しさん
2009/02/12(木) 01:32:25本当です;無知ですいません;
0498デフォルトの名無しさん
2009/02/12(木) 01:32:500499デフォルトの名無しさん
2009/02/12(木) 01:37:07変数名ですから何でもいいですもんね・・お騒がせしましたorz
0500デフォルトの名無しさん
2009/02/12(木) 01:47:33[2] 問題文(含コード&リンク): 指定された日時の月齢を計算し、その日の月の塑望の様子をグラフィック表示する。
[3] 環境
[3.1] OS: Windows / Linux
[3.2] コンパイラ名とバージョン: 特になし
[3.3] 言語: C
[4] 期限: 2月14日
[5] その他の制限: png/jpeg等のファイルで出力するのではなく画面上に描画してください
0501デフォルトの名無しさん
2009/02/12(木) 01:55:31[2] 問題文(含コード&リンク): 最大8桁の整数を3つ入力させ、int型の配列にそれぞれ格納する。
入力終了後、3つの数値の和を求め出力するプログラムを作成。
ただし9桁以上の文字列が入力された場合は、先頭から8文字までを有効とし、9 文字目以降を無視する。また、負の数が入力された場合はエラーメッセージを表示しプログラムを終了する。
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: 負の数が入力された以外に、整数以外が入力された場合・改行のみの入力の場合もエラーと表示させる。
0502デフォルトの名無しさん
2009/02/12(木) 03:57:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8873.txt
0503デフォルトの名無しさん
2009/02/12(木) 05:37:07ttp://koyomi.vis.ne.jp/reki_doc/doc_0250.htm
ttp://koyomi.vis.ne.jp/reki_doc/doc_0200.htm
ttp://koyomi.vis.ne.jp/moonage.htm
0504デフォルトの名無しさん
2009/02/12(木) 06:06:19[2] 問題文 データを2次元配列のデータを読み込んで ソート後別ファイルに保存すること だったのですが
以下のプログラムを提出したところ ポインタを使ったものも作るように言われました。
2次元配列とポインタの関係が分からないためお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc,char* argv[])
{
int i,j,k,n;
double x0,y0;
double v[10000][3],x[10000][3];
double t0,t,h,x1,X=0,Y=0;
FILE *fp1,*fp2;
double temp[3];
if((fp1 = fopen(argv[1],"r"))==0)
{
printf("ファイル %s をオープンできません。\n",argv[1]);
exit(-1);
}
0505デフォルトの名無しさん
2009/02/12(木) 06:07:28{
fscanf(fp1,"%lf",&x[i][0]);
fscanf(fp1,"%lf",&x[i][1]);
fscanf(fp1,"%lf",&x[i][2]);
}
fclose(fp1);
for (i = 0; i < 10000; i++) {
for (j = 9999 ; j > i; j--) {
if (x[j - 1][2] > x[j][2]) {
for(k=0; k<3;k++){
temp[k] = x[j][k];
x[j][k]= x[j - 1][k];
x[j - 1][k]= temp[k];
}
}
}
}
0506デフォルトの名無しさん
2009/02/12(木) 06:07:50{
printf("ファイル %s をオープンできません。\n",argv[2]);
exit(-1);
}
for(i=0;i<10000;i++)
{
for(j=0;j<3;j++)
{
fprintf(fp2," %lf ",x[i][j]);
}
fprintf(fp2,"\n");
}
fclose(fp2);
return 0;
}
[3] 環境[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C/
[4] 期限: 本日午後5時まで
[5] その他の制限: ソートの方法はバブルソートを用いる
0507デフォルトの名無しさん
2009/02/12(木) 08:35:04[1] 授業単元:-----
[2] 問題文(含コード&リンク):バイナリファイル(unsigned short(2バイト)型の数値が4096*2個入)を、10進数でテキストファイルに書き出す。
コード
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8874.txt
ファイル
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8875.lzh
途中ファイル名の入力を促されますが以下の通りです。
date ->081128
no ->81
how many files~~ ->1
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: c
[4] 期限:
[5] その他の制限: 特にありません
読みにくいコードだと思いますが、ご教授ください。
0508デフォルトの名無しさん
2009/02/12(木) 08:47:42if(read==NULL){ ←ここがへん
他にもあるかも知れないけど
0509デフォルトの名無しさん
2009/02/12(木) 08:53:54間違い探しだな。w
問題文自体も
「バイナリファイル(unsigned short(2バイト)型の数値が4096*2個入)を、10進数でテキストファイルに書き出す。」
何通りか解釈出来てしまうような文章。w
#include <stdio.h>
#include <stdlib.h>
int main(int ac, char *av[]){
FILE *write = fopen("test.txt", "w");
FILE *read = fopen("08112801.L81", "rb");
while(!feof(read)){
int j;
for(j = 0; j < 4096; j++){
unsigned short ch1, ch2;
fread(&ch1, 2, 1, read);
fread(&ch2, 2, 1, read);
fprintf(write, "%d %d\n", ch1, ch2);
}
}
fclose(read);
fclose(write);
return 0;
}
0510デフォルトの名無しさん
2009/02/12(木) 08:56:240511デフォルトの名無しさん
2009/02/12(木) 08:59:02ありがとうございます。
確かにその条件はへんですね、直します。
先輩がフォートランで同じようなプログラムを書いているのですが、
僕のcの結果と合わないんです。ボスケテ
0512デフォルトの名無しさん
2009/02/12(木) 09:10:55[2] 問題文(含コード&リンク): 最長10文字の文字列を2件入力し、char 型の配列にそれぞれ格納する。2つの文字列
を比較し、文字列が同じだったら「イコール 」を表示し、異なっていたら「ノットイコール 」を表示するプログラムを作成。
11文字以上の文字が入力された場合、先頭から10文字までを有効とし11文字目以降を無視すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:
[5] その他の制限:文字列あたりまで学習。よろしくお願いします。
0513デフォルトの名無しさん
2009/02/12(木) 09:17:04>>510
貴重なアドバイスありがとうございます。
先輩からいきなりこれやっておいてと言われ、急遽cを勉強したので基礎知識から色々と間違っていると思います。
大変平たくいってしまうと、下記のソフトの出力を10進数でやれればOKらしいのですが、、
Binary Data Extract Ver1.04
ttp://larmtech.com/cgi-local/download.cgi?file=binex104.exe
0514デフォルトの名無しさん
2009/02/12(木) 09:29:54491です。昨日あのまま寝てしまい質問し損ねたので再度お願いします。
回答してもらったもので実行したところ、1740 leap year としか表示されませんでしたので再度よろしくお願いします。
0515デフォルトの名無しさん
2009/02/12(木) 09:31:55return の前に }
0516デフォルトの名無しさん
2009/02/12(木) 09:34:24ありがとうございます、助かりました。」
0517デフォルトの名無しさん
2009/02/12(木) 09:43:48バックドア注意
0518デフォルトの名無しさん
2009/02/12(木) 09:46:20そのソフトってこれ?
ttp://larmtech.com/aboutbinext.html
もう2バイト毎にテキストにって書いてあるから
そのままexe使うだけでプログラム書く必要ないんじゃないの?
0519デフォルトの名無しさん
2009/02/12(木) 09:51:56宿題じゃなくて仕事ならここで頼め
http://pc11.2ch.net/test/read.cgi/software/1230970602
0520デフォルトの名無しさん
2009/02/12(木) 09:59:44大量に変換し、その後数値処理も行うためとりあえず一から
cでやりなさいということらしいです。
>>519
すみません、一応大学の課題なのでこちらだと判断し質問いたしました。
0521デフォルトの名無しさん
2009/02/12(木) 10:39:19[2] 問題文(含コード&リンク): char型の配列、char str[ ] = "SAMPLE ex305.c"; を宣言する。strに格納された文字列を、アルファベットの小文字だったら大文字、大文字だったら小文字に書き換え
て表示するプログラムを作成。
ただし、文字列の書き換えは、別の配列を用意するのではなく、配列str の要素を上書きすること。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限: 明日まで
[5] その他の制限:
0522デフォルトの名無しさん
2009/02/12(木) 10:51:08#include <stdio.h>
#include <ctype.h>
char str[] = "SAMPLE ex305.c";
int main(void)
{
char *p = str;
while(*p != '\0'){
if(islower(*p)) *p = toupper(*p);
else if(isupper(*p)) *p = tolower(*p);
p++;
}
printf("%s\n", str);
return 0;
}
0523デフォルトの名無しさん
2009/02/12(木) 11:07:47すいません、toupperは使わない方法でお願いします。
付け足しで申し訳ないですorz
0524デフォルトの名無しさん
2009/02/12(木) 11:24:51#include <ctype.h>
char str[] = "SAMPLE ex305.c";
int main(void) {
char *p = str;
while(*p != '\0'){
if('a' <= *p && *p <= 'z') *p += 'A' - 'a';
else if('A' <= *p && *p <= 'Z') *p = 'a' - 'A';
p++;
}
printf("%s\n", str);
return 0;
}
0525デフォルトの名無しさん
2009/02/12(木) 11:25:49#include <stdio.h>
char str[] = "SAMPLE ex305.c";
int main(void) {
char *p = str;
while(*p != '\0'){
if('a' <= *p && *p <= 'z') *p += 'A' - 'a';
else if('A' <= *p && *p <= 'Z') *p += 'a' - 'A';
p++;
}
printf("%s\n", str);
return 0;
}
0526デフォルトの名無しさん
2009/02/12(木) 11:48:06ありがとうございました、なんとか間に合って助かりました。
0527デフォルトの名無しさん
2009/02/12(木) 11:49:51どなたかよろしくお願いします。
0528デフォルトの名無しさん
2009/02/12(木) 12:08:41521ですが、char *p の*pは単に変数名なんでしょうか?
もしくは*に何か意味があるのですか。よければ教えてもらいたいです。
0529デフォルトの名無しさん
2009/02/12(木) 12:15:20いくら初心者でも
それはないな
0530デフォルトの名無しさん
2009/02/12(木) 12:16:390531デフォルトの名無しさん
2009/02/12(木) 12:21:17char *p → 変数名がp、データ型がchar*
0532デフォルトの名無しさん
2009/02/12(木) 12:24:520533デフォルトの名無しさん
2009/02/12(木) 12:26:540534デフォルトの名無しさん
2009/02/12(木) 12:35:13ありがとうございます。データ型について調べました。
勉強不足でした;
0535デフォルトの名無しさん
2009/02/12(木) 13:01:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8876.c
0536デフォルトの名無しさん
2009/02/12(木) 13:22:12ありがとうございました。
0537デフォルトの名無しさん
2009/02/12(木) 13:25:58すいません、ctype.hは使わないやり方お願いします。
追記してなくて申し訳ないです
0538デフォルトの名無しさん
2009/02/12(木) 13:55:33#include <ctype.h>
#include <string.h> ←消し忘れてた。要らない。
を消して、
if(!isdigit(*str))
を
if(*str < '0' || '9' < *str)
に変えてくれ
0539デフォルトの名無しさん
2009/02/12(木) 14:09:13= =
お忘れ物ですよ
0540デフォルトの名無しさん
2009/02/12(木) 14:09:33orz 間違えた
0541デフォルトの名無しさん
2009/02/12(木) 14:21:11ありがとうございます。
0542デフォルトの名無しさん
2009/02/12(木) 16:38:00[2] 問題文(含コード&リンク):
1から9までの数字を縦横方向に同じものが並ばないように下記の例のように並べる
並べ方が全部で何通りあるかとその並びをすべて列挙する
[3] 環境
[3.1] OS:特になし
[3.2] コンパイラ名とバージョン:ANSI C
[3.3] 言語:C
[4] 期限: 明日まで
[5] その他の制限:
例
534681297
685293714
948367125
153472869
426538971
261759483
817945632
379126548
792814356
0543デフォルトの名無しさん
2009/02/12(木) 16:44:09最初に
123456789
234567891
345678912
456789123
567891234
678912345
789123456
891234567
912345678
という配列を作っておいて
縦横方向にシャッフルしていけば医院で内科医?
この方法で出て来ない組み合わせってある?
0544デフォルトの名無しさん
2009/02/12(木) 16:46:25245678913
356789124
467891235
578912346
689123457
791234568
812345679
923456781
こういうのは出せないと思う
0545デフォルトの名無しさん
2009/02/12(木) 16:48:53縦が重複してるよ
0546デフォルトの名無しさん
2009/02/12(木) 17:07:020547デフォルトの名無しさん
2009/02/12(木) 17:07:40http://pc11.2ch.net/test/read.cgi/tech/1153585095/785
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/542
Rubyの宿題教えてください。2限目
http://pc11.2ch.net/test/read.cgi/tech/1200175247/476
こんなんで数独の掲載料もらえるなら俺だって問題送りたい
0548デフォルトの名無しさん
2009/02/12(木) 17:13:23>対称形の問題では18個(初出・パズル通信ニコリ31号 1990年)、
>非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。
へー
0549デフォルトの名無しさん
2009/02/12(木) 17:15:15「出せない」という点においては正しい
0550デフォルトの名無しさん
2009/02/12(木) 17:19:450551デフォルトの名無しさん
2009/02/12(木) 17:25:070552デフォルトの名無しさん
2009/02/12(木) 17:39:18一通りの並びに対して数字の入れ替えを考慮すると
最低でも 9! (362880) 個の解はあるわけだがそれも全部足すの?
0553デフォルトの名無しさん
2009/02/12(木) 17:41:40もちろん足すんだろ
こいつは解答がいくつあるかそもそも知らないんだから簡単にそう言うはずだ
できた組み合わせを適当にパズル雑誌に送れば小遣いゲット
0554デフォルトの名無しさん
2009/02/12(木) 18:06:529!*8!=362,880*40,320=146,3132,1600 ひゃくよんじゅうろく億通り
0555デフォルトの名無しさん
2009/02/12(木) 18:25:409!*9^9=362,880*387,420,489=140,5871,4704,8320 が正解かも
0556デフォルトの名無しさん
2009/02/12(木) 18:26:25たとえば書きながら考えるけど、4*4として、数字の総入れ替えをすれば
1行目は1234で固定していい。
1列目の残りの空きは、234 243 324 ・・の6とおり。
あとは、残りの数字で3*3の枠ができる。
K(n)をn*nの個数とすれば、
K(n) = n! * (n-1)! * K(n-1)かな。 違う?
0557デフォルトの名無しさん
2009/02/12(木) 18:30:12ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=6670903752021072936960&num=50
0558デフォルトの名無しさん
2009/02/12(木) 18:32:380559デフォルトの名無しさん
2009/02/12(木) 18:35:260560デフォルトの名無しさん
2009/02/12(木) 18:43:491行目は、全交換を考慮して1234で固定。
1列目のこりは、3!とおり。
(2,2)は、残りの数字4-2通り。(2,3)は4-3通り。(2,4)は1通り。
(3,2)は、残りの数字4-3通り。(3,3)は1通り。(3,4)は1通り。
それ以降も1通り。
4! * 3! * (4-2)! *・・・ * 1! * (4-3)!*・・・ * 1!*・・・*1か。
nでは、
n! * (n-1)! * (n-2)! *・・・ * 1! * (n-3)!*・・・ * 1!*・・・*1か。
0561デフォルトの名無しさん
2009/02/12(木) 19:32:16[2] 問題文(含コード&リンク):
C言語のコードがようやく出来上がりました。これを並列化したいです。
http://www.dotup.org/uploda/www.dotup.org4916.zip.html
[3] 環境
[3.1] OS:特になし
[3.2] コンパイラ名とバージョン:ANSI C
[3.3] 言語:C
[4] 期限: 明日まで
[5] その他の制限:特になし
0562デフォルトの名無しさん
2009/02/12(木) 20:26:18#include <stdio.h>
typedef struct tag_map_t{ int data[9][9], used[9]; }map_t;
int disp(map_t *map){
static int i, j, count;
if(map==NULL) return count;
count++;
printf("\n----- %d -----\n", count);
for(i=0;i<9;i++){
for(j=0;j<9;j++) printf("%d", map->data[i][j]);
printf("\n");
}
return -1;
}
void hoge(map_t *map, int flag, int num){
int i;
if(num%9==0) flag=0;
for(i=0;i<9;i++){
if((map->used[num%9]&(1<<i)) || (flag&(1<<i))) continue;
map->data[num/9][num%9]=i+1;
map->used[num%9]|=(1<<i);
if(num+1>=81) disp(map);
else hoge(map, flag|(1<<i), num+1);
map->used[num%9]^=(1<<i);
}
}
int main(void){
map_t map={{{1,2,3,4,5,6,7,8,9}},{1,2,4,8,16,32,64,128,256}};
hoge(&map, 0, 9);
printf("\nTotal:%d\n", disp(NULL));
return 0;
}
0563デフォルトの名無しさん
2009/02/12(木) 20:58:07組み合わせの総数を求めるプログラムをきぼんぬ。
それを元に、1〜nまでの数字の中から異なるn個以下の数字の組み合わせが
何通りあるか求めるプログラムに発展させるものをきぼんぬ。
0564デフォルトの名無しさん
2009/02/12(木) 21:00:2643C6
nCm
だね?
あと テンプレ
0565デフォルトの名無しさん
2009/02/12(木) 21:17:37という条件で、各等の本数を調べよ。
ボーナス数字:6つの本数字とは別で、その6つの本数字と重複しない
あっ、これ、宿題じゃなくただの気まぐれ課題だから。
0566デフォルトの名無しさん
2009/02/12(木) 21:48:11数字1つ間違ってた
0567デフォルトの名無しさん
2009/02/12(木) 23:03:060568デフォルトの名無しさん
2009/02/12(木) 23:11:47二等 7.37 %
三等 8.85 %
四等 7.78 %
五等 12.75 %
0569デフォルトの名無しさん
2009/02/12(木) 23:15:406C3 * 37C3
6C4 * 37C2
6C5 * 37C1
6C5
6C6
0570デフォルトの名無しさん
2009/02/13(金) 00:42:38これはマルチプロセス(MPI)で並列化しないといけないのかなあ。
マルチスレッド(pthreadとか)使っていいんだと楽だけど。
// calculate new data values in Tnew
for(i = 1; i < ly-1; i++){
for(j = 1; j < lx-1; j++){
Tnew[i][j] = T[i][j]+ z*(T[i][j+1] + T[i][j-1] + T[i+1][j] + T[i-1][j] -4.*T[i][j]);
}
}
この部分を並列化するには、上下左右のセルの値を参照するから、
マルチプロセス(MPI)で並列化すると、毎回計算結果を往復通信することになって、
通信量がでかくなりそう・・・。むずいなあ。
0571561
2009/02/13(金) 02:18:29MPIの授業なのでMPIでやる必要があります。。マスタープロセス(プロセス0)と
スレーブプロセスで通信をした後、更に上下左右の端のセルはゴーストセルといって
計算をするためにスレーブ間で送受信しないといけない?。。とかいっていました。
MPI_Cart_Create(だったと思います)を使えばいいとかも言っていましたが、自分には
サッパリです。。
0572デフォルトの名無しさん
2009/02/13(金) 04:01:56[2] 問題文(含コード&リンク):
2x2行列の固有値を求めるプログラムをかきなさい。
double型の配列とします。
[3] 環境
[3.1] OS:LINUX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 明日まで
[5] その他の制限:特になし
0573デフォルトの名無しさん
2009/02/13(金) 04:37:440574デフォルトの名無しさん
2009/02/13(金) 05:22:552x2の固有値程度ならここでもいいでしょ
0575デフォルトの名無しさん
2009/02/13(金) 05:42:41かなりてきとーに作った
#include<math.h>
#include<stdio.h>
int main()
{
double mat[2][2]={{1.0,3.0},{5.0,-4.0}};
double A=mat[0][0]+mat[1][1];
double B=mat[0][0]*mat[1][1]-mat[0][1]*mat[1][0];
double D=A*A-B;
double lh=A/2,rh=sqrt(fabs(D))/2;
if(D>=0)
printf("%.4f,%.4f\n",lh+rh,lh-rh);
else{
printf("%.4f+%.4fi,%.4f-%.4fi\n",lh,rh,lh,rh);
}
return 0;
}
0576デフォルトの名無しさん
2009/02/13(金) 10:12:55#define a A
#define b B
#define d D
double d=a*a-4*b;
0577デフォルトの名無しさん
2009/02/13(金) 11:54:400578デフォルトの名無しさん
2009/02/13(金) 12:14:420579デフォルトの名無しさん
2009/02/13(金) 12:24:300580デフォルトの名無しさん
2009/02/13(金) 12:43:29失礼しました。
0581デフォルトの名無しさん
2009/02/14(土) 00:01:43[2] 問題文(含コード&リンク):
自然数n与え、nを1以上の自然数の和で表す組み合わせを求め、配列に入れて返す関数をかけ
戻り値はstd::vector<std::vector<long> >とする
(この組み合わせの総数のことを分割数と呼ぶ)
例えばn=4の場合
1 1 1 1
1 1 2
1 3
2 2
4
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ名とバージョン:VC7.1(Visual Studio2005付属)
[3.3] 言語: C++
[4] 期限: なし
[5] その他の制限:標準で使えるライブラリのみで(Boost等はなし)
分割数の個数を求める関数はこんな感じでかける
long div(long n){
struct inner{
static long pnm(long n,long m){
if(n<=m){return !(n<m);}
return pnm(n-m,m)+pnm(n,m+1);
}
};
return inner::pnm(n,1);
}
これを実際の和を求めるよう作り替えようとしてつまづいた。
よろしくお願い申す
0582デフォルトの名無しさん
2009/02/14(土) 00:25:340583デフォルトの名無しさん
2009/02/14(土) 00:26:11#include<iostream>
#include<vector>
void divide_r(std::vector<std::vector<long> >& all, std::vector<long>& now, long n, long min) {
if (n >= min) {
for (long i = min; i <= n; i ++) {
now.push_back(i);
divide_r(all, now, n-i, i);
now.pop_back();
}
} else if (n == 0) all.push_back(now);
}
std::vector<std::vector<long> > divide(long n) {
std::vector<std::vector<long> > all;
std::vector<long> now;
divide_r(all, now, n, 1);
return all;
}
int main() {
long n;
std::cout << "n="; std::cin >> n;
std::vector<std::vector<long> > all = divide(n);
for (std::vector<std::vector<long> >::const_iterator it = all.begin(); it != all.end(); ++it) {
std::copy(it->begin(), it->end(), std::ostream_iterator<long>(std::cout, " "));
std::cout << std::endl;
}
return 0;
}
0584デフォルトの名無しさん
2009/02/14(土) 00:26:40[2] 問題文:整数は約数(1は含むが、その整数自身は含めない)の和がその整数に等しいとき、完全数と呼ばれる。引数 number が完全数であるかどうかを判定する関数 int IsPerfect(int number)と約数判定関数 int IsDivisor(int dividend, int divisor)を作成しなさい。
そして、これらの関数を使って、2 から 10000 までの間にあるすべての完全数を出力するプログラムを作成しなさい。
[実行例]
% ./a.out
完全数リストは下記の通りです:
6
28
496
8128
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
0585デフォルトの名無しさん
2009/02/14(土) 00:33:32あなた最高。まさに俺が求めていた物がここにあるよ。ありがとう
0586デフォルトの名無しさん
2009/02/14(土) 00:35:05#include<stdio.h>
int IsDivisor(int dividend, int divisor) {
return !(dividend % divisor);
}
int IsPerfect(int number) {
int i, sum = 0;
for (i = 1; i <= number/2; i ++) {
if (IsDivisor(number, i)) sum += i;
}
return sum == number;
}
int main() {
int i;
for (i = 1; i <= 10000; i ++) {
if (IsPerfect(i))
printf("%d\n", i);
}
return 0;
}
0587デフォルトの名無しさん
2009/02/14(土) 00:41:26#include <stdio.h>
int IsDivisor(int dividend, int divisor){
return (dividend%divisor)==0;
}
int IsPerfect(int number){
int i, sum=0;
for(i=1;i<number;i++){
if(IsDivisor(number, i)) sum+=i;
}
return number==sum;
}
int main(void){
int result[]={6,28,496,8128,-1};
int i, j=0;
for(i=2;i<10000;i++){
if(i==result[j] && IsPerfect(result[j])) printf("%d\n", result[j++]);
}
return 0;
}
0588デフォルトの名無しさん
2009/02/14(土) 00:42:250589デフォルトの名無しさん
2009/02/14(土) 00:47:46[2]
以下のプログラムは、入力された10個の整数を引き算して
その結果を表示するプログラムです。
9から11行目を別の関数(関数名はFuncDev)とし、修正しなさい。
ただしグローバル変数は使わないこと。
また、FuncDev内のローカル変数名は任意とする。
FuncDev関数は以下の定義とする。
int FuncDev(void);
FuncDev関数の戻り値は、入力されたint型データとする。
#include<stdio.h>
void main(void);
void main(void)
{
int n1,n2;
int nt;
nt = 0;
for(n1=0;n1<10;n1++){
printf("0-9の数値を入力せよ");
scanf(" %d",&n2);
nt-=n2;
}
printf("結果は%dです。");
}
[3.1] OS: windows xp
[3.2] VC++ 6.0
[3.3] 言語: C
[4] 期限:2/16
どうかよろしくお願いいたします
0590デフォルトの名無しさん
2009/02/14(土) 03:28:06#include<stdio.h>
int FuncDev(void);
void main(void)
{
int n1;
int nt;
nt = 0;
for(n1=0;n1<10;n1++){
nt = FuncDev();
}
printf("結果は%dです。\n",nt);
}
int FuncDev(void)
{
static int count = 0;
static int sum = 0;
int n3;
printf("0-9の数値を入力せよ");
scanf("%d", &n3);
if(count == 9){
return sum - n3;
}
sum -= n3;
count++;
return n3;
}
0591デフォルトの名無しさん
2009/02/14(土) 03:28:26#include<stdio.h>
void main(void);
int FuncDev(void);
void main(void)
{
int n1;
int nt;
nt = 0;
for(n1=0;n1<10;n1++){
nt-=FuncDev();
}
printf("結果は%dです。",nt);
}
int FuncDev(void)
{
int n;
printf("0-9の数値を入力せよ");
scanf("%d",&n);
return n;
}
0592デフォルトの名無しさん
2009/02/14(土) 16:20:44[2] n個の任意のサイコロをコンピュータがふって目の和がOdd or Evenを当てるゲーム
[3] 環境
[3.1] Windows
[3.2] Borland C++ Compiler
[3.3] C
[4] 期限: 2月18日
[5] その他の制限:乱数をはじめて使う課題です。配列・ポインタ・ユーザ定義関数などは習いました。
よろしくお願いします。
0593584
2009/02/14(土) 16:44:29Thank you very much.
0594デフォルトの名無しさん
2009/02/14(土) 16:50:31さいころの目は、一般的な1〜6の立方体を想定?
0595デフォルトの名無しさん
2009/02/14(土) 16:53:30[2] 問題文(含コード&リンク):
自然数n与え、nを1以上の自然数の積で表す組み合わせを求め、配列に入れて返す関数をかけ
戻り値はstd::vector<std::vector<long> >とする
例えばn=12の場合。出力順序は問わない
1 12(12 1でもOK)
2 2 3
2 6
4 3
[3] 環境
WinXP,C++,VC8(VS2005付属)またはgc3.4.4
[4] 期限: なし
[5] その他の制限:標準で使えるライブラリのみで(Boost等はなし)
和に続いて積
参考:お手軽素因数分解のコード
#include <iostream>
#include <cmath>
#include <vector>
void factorize(long P,std::vector<long>& v){
for(long i=2;i<sqrt((double)P)+1;++i){
if(P%i==0){
v.push_back(i);
P/=i;
factorize(P,v);
return;
}
}
v.push_back(P);
}
ひとつよろしくお願いする
0596デフォルトの名無しさん
2009/02/14(土) 17:02:096面体、nは入力でつくった
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main()
{
int i, n, input, sum_dice;
srand((unsigned)time(NULL));
printf("n? ");
scanf("%d", &n);
printf("Odd(1) or Even(0)? ");
scanf("%d", &input);
sum_dice = 0;
for(i = 0; i < n; i++) sum_dice += rand() % 6;
if(sum_dice % 2) printf("result: %d Odd\n", sum_dice);
else printf("result: %d Even\n", sum_dice);
if(sum_dice % 2 == input) printf("Correct!\n");
else printf("Failed...\n");
return 0;
}
0597デフォルトの名無しさん
2009/02/14(土) 17:16:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8879.c
0598デフォルトの名無しさん
2009/02/14(土) 17:35:21#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int i, n=0, t=0, r=0;
if(argc != 2) {
printf("Usage: .\\exe num");
return -1;
}
sscanf(argv[1], "%d", &n);
if(n < 1) return -2;
srand( (unsigned)time( NULL ) );
/* n 個の値を表示します。 */
for( i = 0; i < n; i++ ) {
r = (int)(rand()/((double)RAND_MAX+1)*6)+1;
printf( " %6d\n", r );
t += r;
}
if(t%2 == 0)
printf("Even\n");
else
printf("Odd\n");
return 0;
}
0599デフォルトの名無しさん
2009/02/14(土) 17:38:34t += r;
0601デフォルトの名無しさん
2009/02/14(土) 18:41:03以下の仕様を満たす共用体を宣言しなさい。
もし構造体が必要ならば、任意の構造体名および変数名で宣言すること。
・共用体名はTEST、共用体変数名はuntest。
・全体のデータサイズは80バイトで、char型配列として扱う。変数名はszData
・最初の10バイトはchar型配列で、変数名をszCodeとする。
・次のメンバは20バイトのchar型配列で変数名はszName
[3.2] VC++ 6.0
[3.3] 言語: C
[4] 期限:2/19
よろしくお願いいたします
0602デフォルトの名無しさん
2009/02/14(土) 19:24:40union TEST {
char szData[80];
struct {
char szCode[10];
char szName[20];
} szAddr;
};
#ifndef DEBUG
main(){}
#else
#include <stdio.h>
#include <string.h>
#include <memory.h>
int main(void)
{
union TEST untest;
char work[21];
char *adr = "1234567890ABCD EFGH ABCD EFGHIABCD EFGHaaaaaaaaaaabbbbbbbbbbbbbbbccccccdddddddddeeeeeeeeee";
memset(untest.szData, 0, 80);
memcpy(untest.szData, adr, strlen(adr)<=80-1 ? strlen(adr) : 80-1);
printf("%s\n", untest.szData);
memset(work, 0, 11);
memcpy(work, untest.szAddr.szCode, 10);
printf("%s\n", work);
memset(work, 0, 21);
memcpy(work, untest.szAddr.szName, 20);
printf("%s\n", work);
return 0;
}
#endif
0603デフォルトの名無しさん
2009/02/14(土) 19:30:59たぶんそのコードが正解だろうと思うんだけどさ、
・最初の10バイトはchar型配列で、変数名をszCodeとする。
・次のメンバは20バイトのchar型配列で変数名はszName
を満たしてないよね。両方ともszAddr.が付いちゃう。
0604デフォルトの名無しさん
2009/02/14(土) 20:26:41???
0605デフォルトの名無しさん
2009/02/14(土) 20:32:39memcpy(work, untest.szAddr.szCode, 10);
ではなく
memcpy(work, untest.szCode, 10);
でアクセスできないといけない
0606デフォルトの名無しさん
2009/02/14(土) 21:45:52実行効率とか知らない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8880.txt
0607デフォルトの名無しさん
2009/02/14(土) 21:51:50そんなのどこに書いてあるんだ?
0608デフォルトの名無しさん
2009/02/14(土) 22:01:52szCodeはTESTのメンバであって構造体のメンバではない
といえばわかる?
0609デフォルトの名無しさん
2009/02/14(土) 22:33:10これはすばらしい!
実は先ほど自分でも動作するものがかろうじて作れたんだが
頂いたコードのほうが4096倍ぐらい早く動作する
しかもコードがシンプルでわかりやすい
ただ、VCではlroundやらsqrtのオーバーロードやらでエラーがでたため
lround(...)をsqrt((double)n)に変更して検証
自作コードと2から30までの出力結果をdiffしてみたが
うまく動作してる模様、感謝
0610デフォルトの名無しさん
2009/02/15(日) 14:43:43対レオナールデッキのAPTのマンティコアへの与ダメ比較
愛染:31(16)/ペガ:70(52)/アヌ:24(9)
レナス:36(21)/クロ:42(27)/パワーズ:36(21)
ペガサス入りの愛染デッキでもピンダメ除けば与ダメに大差ないんだが?
単体攻撃が1体多い分で通常攻撃分はトントンだろ。
それでも普通はレオナール相手でもピン落とし出来て普通な訳だ。
0611デフォルトの名無しさん
2009/02/15(日) 14:45:060612デフォルトの名無しさん
2009/02/15(日) 18:08:27/´ ̄`ヽ /: : : \_____/: : : : ヽ、
,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
/: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
/: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/
 ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/
/: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、
. /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\
/: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \
/ / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ
l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :}
l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : /
|: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ
!: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
V ヽ| }/// r‐'⌒ヽ イ〉、
ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これは>>611乙じゃなくて
ィ幵ノ ./:/:./:.! !: : : : :!`ヽ ポニーテールなんだから
r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\ 変な勘違いしないでよね!
/: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\
0613デフォルトの名無しさん
2009/02/15(日) 22:15:49[2] 問題文: f(x)と積分区間の両端点a,b及び分割数nが与えられたときのaからbまでn等分して台形則を用いたf(x)の積分値の近似値を求めよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin(1.5.25-15)
[3.3] 言語: C
[4] 期限: ([2009年2月16日10:00まで]
[5] その他の制限: 授業中に行った台形を求めるプログラム↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8885.txt
0614デフォルトの名無しさん
2009/02/15(日) 22:54:20なお出力は最大値と最小値の両方を入力すること。また提出時には入力した5つの数字と出力結果の最大値と最小値をソースコードの最後にコメントとして添付して提出せよ
以上です
0615デフォルトの名無しさん
2009/02/15(日) 22:55:170616デフォルトの名無しさん
2009/02/15(日) 22:58:37元のプログラムをなるべく活かすとこんな感じか。
#include <stdio.h>
double f(double x){return x*x};// f(x) = x^2
#define a 2.0//始点 x = 2.0
#define b 3.0//終点 x = 3.0
#define N 4//座標の数
double menseki(double *vx, double *vy){
//もとのまま
}
int main(void)
{
double S;
double Vx[N];
double Vy[N];
int i; // 何番目の台形かを表す
for( i = 0; i< N; i++){
Vx[i] = a+ i*(b-a)/(N-1);
Vy[i] = f(Vx[i]);
}
S = menseki(Vx,Vy);
printf("S: %f\n",S);
return 0;
}
0617デフォルトの名無しさん
2009/02/15(日) 22:59:05トラフィックの占有率とか確率分布を計算しろって言われて困ってます
0618デフォルトの名無しさん
2009/02/15(日) 23:03:38会社休みのときにでも、PC使ってテストすれば
0619デフォルトの名無しさん
2009/02/15(日) 23:10:110620デフォルトの名無しさん
2009/02/15(日) 23:12:56理論値でならできるかもしれないけど
多くても基本性能の60%くらいまでで見ておかないと
輻輳とか訳分からん要素が盛りだくさんw
0621デフォルトの名無しさん
2009/02/15(日) 23:22:480622デフォルトの名無しさん
2009/02/15(日) 23:23:19ですが、コンパイルすると
ファイル名: In function `f':
ファイル名:2: error: parse error before '}' token
と2行目にエラーが発生してしまいます><
cygwinではコンパイルだめなのでしょうか?
0623デフォルトの名無しさん
2009/02/15(日) 23:24:34を削除
0624デフォルトの名無しさん
2009/02/15(日) 23:31:01おまwwwwwwww
>>622
エラーメッセージぐらい読めよ
0625デフォルトの名無しさん
2009/02/15(日) 23:32:47ns2使いこなせないから先生に相談したら
言語関係なく簡単なのでもいいからネットワークの失敗率とかプログラミングしろって言われたもんで・・・
Cはなんとかだけどtclがわかんないっす
お礼はZIPでよければいくいらでもだから相談のってください!!
0626デフォルトの名無しさん
2009/02/15(日) 23:38:440627デフォルトの名無しさん
2009/02/15(日) 23:40:210628デフォルトの名無しさん
2009/02/15(日) 23:57:09こんな感じです
http://gonzo.dip.jp/~gonzo/cgi-bin/uploader2/src/up3125.bmp_lp6VAOg23kf1DkaFAISC/up3125.bmp
pass 0215です(すいません、あんまりuoしたこたことないもので。。。)
0629デフォルトの名無しさん
2009/02/16(月) 00:04:29通信速度やトラフィックなどいろいろいります。
0630デフォルトの名無しさん
2009/02/16(月) 00:05:14むしろプロキシに見える
ま、スレ違いだからどっか適当な場所に移動だね
0631デフォルトの名無しさん
2009/02/16(月) 00:09:05{コンパイル通してなくてすまん;}
0632デフォルトの名無しさん
2009/02/16(月) 00:39:48[2] 問題文(含コード&リンク):
連続な関数f(x)において,もしf(a)<0,f(b)>0だったら
a<x<bの範囲で少なくとも1つf(x)=0をみたすようなxが必ず存在する.
これを以下のような方法で求める.
f(a) < 0, f(b) > 0 となるような a, b が与えられたとする(ただし a < b).
<ループ開始>
(1) b - a < e ならループを抜ける(e は適当に小さい値,0.00001とか)
(2) c = (a + b) / 2;
(3) もし, f(c) == 0 ならばループを抜ける
もし,f(c) > 0 ならば b = c として(1)に戻る(a はそのまま)
もし,f(c) < 0 ならば a = c として(1)に戻る(b はそのまま)
<ループおわり>
これは while ループで書ける.(1)をなくして回数指定のループにすることもできる.
たとえば f(x) = x*x-2, a=1, b=2 として二分法を手計算してみよ.
[3] 環境
[3.1] windows
[3.2] gcc
[3.3] c言語
[4] 期限:2月16日 10時
お願いします。
0633デフォルトの名無しさん
2009/02/16(月) 01:06:47int N = 1; // 座標の個数、台形の個数は(N-1)個
double f(double x)
{return 3*x*x + 2*x - 20;} // f(x) = 3*x^2 + 2*x - 20
double menseki(double *vx, double *vy);
int main(int argc, char *argv[])
{
float a, b; // x 始点, x 終点
double S, *Vx, *Vy;
int i; // 何番目の台形かを表す
if(argc != 4) {
printf("Usage: .\\exe number start-point end-point\n");
return -1;
}
N = atoi(argv[1]);
sscanf(argv[2], "%f", &a);
sscanf(argv[3], "%f", &b);
Vx = malloc(N*sizeof(double));
if(Vx == 0) return -2;
Vy = malloc(N*sizeof(double));
if(Vy == 0) return -2;
for(i = 0; i < N; i++){
Vx[i] = a + (double)i*(b-a)/(N-1);
Vy[i] = f(Vx[i]);
printf("x=%f y=%f\n",Vx[i],Vy[i]);
}
S = menseki(Vx,Vy);
printf("S: %f\n",S);
free(Vx);
free(Vy);
return 0;
}
0634デフォルトの名無しさん
2009/02/16(月) 01:29:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8886.c
0635デフォルトの名無しさん
2009/02/16(月) 02:13:03[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8887.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C++
[4] 期限: 2月16日正午ごろまで
[5] その他の制限:文字列あたりまで学習。
よろしくお願いします。
相当時間を費やしたのですが、どうしてもこの4題ができそうもありません…
よろしくお願いします。
0636デフォルトの名無しさん
2009/02/16(月) 02:16:420637デフォルトの名無しさん
2009/02/16(月) 02:25:524.
#include <stdio.h>
int main(void)
{
int i, j;
for(i=0; i<=26; i++) {
for(j=i; j<26; j++) putchar('a' + j);
for(j=0; j<i; j++) putchar('a' + j);
putchar('\n');
}
return 0;
}
0638デフォルトの名無しさん
2009/02/16(月) 02:29:52問1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8888.c
0639デフォルトの名無しさん
2009/02/16(月) 02:32:413.
#include <stdio.h>
int main(void)
{
int n, ans = 0;
scanf("%d", &n);
while(n) {
ans = ans * 10 + n % 10;
n /= 10;
}
printf("%d", ans);
return 0;
}
2.
#include <stdio.h>
int main(void)
{
int n, ans = 0;
scanf("%d", &n);
while(n) {
ans += n % 10;
n /= 10;
}
printf("%d", ans);
return 0;
}
0640デフォルトの名無しさん
2009/02/16(月) 02:35:130641デフォルトの名無しさん
2009/02/16(月) 02:36:020642デフォルトの名無しさん
2009/02/16(月) 02:38:28int f(int n)
{
int ret = 0;
while(n) {
ret += n % 10;
n /= 10;
}
return ret;
}
サブ関数3
int f(int n)
{
int ret = 0;
while(n) {
ret = ret * 10 + n % 10;
n /= 10;
}
return ret;
}
共通メイン
int main(void)
{
int n;
scanf("%d", &n);
printf("%d", f(n));
return 0;
}
0643デフォルトの名無しさん
2009/02/16(月) 03:22:56scanf("%d",&n);
printf("演算結果!\n");
while(n!=1)
{
if(n%2==0)
{
n /= 2;
;
printf("%d\n",n);
}
else
{
n = 3 * n + 1;
printf("%d\n",n);
}
}
printf("終了!\n");
return 0;
}
で、おそらくできたと思うのですが、これの発展問題で5桁の整数で1になるまでの
最も計算処理がかかる値を求め、その値と1になる経過を出力せよ。
というのが良くわかりません…。よろしくお願いします。
0644デフォルトの名無しさん
2009/02/16(月) 03:24:13任意の整数nを偶数であればn/2を計算し、奇数であればn*3+1を計算する。
その演算結果を繰り返すと必ず1になるが、これを確かめるプログラムを作成せよ。
これは
#include <stdio.h>
int main()
{
int n=0;
printf("値を入力してください:");
scanf("%d",&n);
printf("演算結果!\n");
while(n!=1)
{
if(n%2==0)
{
n /= 2;
;
printf("%d\n",n);
}
else
{
n = 3 * n + 1;
printf("%d\n",n);
}
}
printf("終了!\n");
return 0;
}
0645デフォルトの名無しさん
2009/02/16(月) 03:45:29//計算回数を求める関数
int f(int n) {
int ret = 0;
while(n!=1) {
if(n%2==0) n /= 2;
else n = n * 3 + 1;
ret++;
}
return ret;
}
int main(void)
{
int i, max = 1, max_cnt = 0, cnt;
for(i=10000; i<100000; i++) {
cnt = f(i);
if(cnt > max_cnt) {
max = i;
max_cnt = cnt;
}
}
printf("%d, %d回\n", max, max_cnt);
return 0;
}
0646デフォルトの名無しさん
2009/02/16(月) 04:12:29を誰か
0647デフォルトの名無しさん
2009/02/16(月) 04:20:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8889.c
0648デフォルトの名無しさん
2009/02/16(月) 04:27:01>>1を読めばいいと思うよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8890.c
0649デフォルトの名無しさん
2009/02/16(月) 04:59:08#include <stdio.h>
#include <limits.h>
int main()
{
int i, max = INT_MIN, min = INT_MAX, tmp = 0;
for (i = 0; i < 5; ++i) {
scanf("%d", &tmp);
max = tmp > max ? tmp : max;
min = min > tmp ? tmp : min;
}
printf("max = %d, min = %d\n", max, min);
return 0;
}
/*
入力
1 2 4 9 0
出力
max = 9, min = 0
*/
0650デフォルトの名無しさん
2009/02/16(月) 05:24:01#include <stdio.h>
#include <stdlib.h>
int compare(const int *n1, const int *n2){ return *n1 == *n2 ? 0 : *n1 < *n2 ? -1 : 1; }
void main()
{
int n[5], i;
for(i = 0; i < 5; i++) scanf("%d", &(n[i]));
qsort((void *)n, 5, sizeof(int), (int(*)(const void *, const void *))compare);
printf("max: %d, min: %d\n", n[4], n[0]);
}
0651デフォルトの名無しさん
2009/02/16(月) 05:41:48#include <stdio.h>
#include <stdlib.h>
int compare(const char *s1[], const char *s2[]){ return atoi(*s1) - atoi(*s2); }
void main(int argc, char *argv[])
{
qsort((void *)&(argv[1]), argc - 1, sizeof(char *), (int(*)(const void *, const void *))compare);
printf("max: %s, min: %s\n", argv[argc - 1], argv[1]);
}
0652デフォルトの名無しさん
2009/02/16(月) 10:17:51一般の方程式でも可ですが、
double a1、a2、・・・anに対して
x>0 での(1 + a1*x)・・・(1 + an*x)で極大値でいいです。
0653デフォルトの名無しさん
2009/02/16(月) 10:38:10そうですか
0654デフォルトの名無しさん
2009/02/16(月) 10:45:200655デフォルトの名無しさん
2009/02/16(月) 11:54:520656デフォルトの名無しさん
2009/02/16(月) 12:10:03http://imokoji.hamazo.tv/e1327402.html
0657デフォルトの名無しさん
2009/02/16(月) 12:10:51テンプレに従わなくても回答がつくんだから、従わないだろ
0658デフォルトの名無しさん
2009/02/16(月) 12:18:36書き込み有難うございます。
ネットで調べてこのサイトは知っていたのですが、
これとは別にもっと簡単なプログラムはないでしょうか。
お願いします。
0659デフォルトの名無しさん
2009/02/16(月) 15:55:15その基準が示されないことにはどんなレスも無駄になる可能性がある。
0660デフォルトの名無しさん
2009/02/16(月) 16:30:31>>656が難しいというなら手の施しようが無い…
0661デフォルトの名無しさん
2009/02/16(月) 16:43:340662デフォルトの名無しさん
2009/02/16(月) 17:13:270663デフォルトの名無しさん
2009/02/16(月) 17:16:05最急降下法、共役勾配法等のいろいろな方法があるけどどうするよ
0664デフォルトの名無しさん
2009/02/16(月) 17:21:321000次が数秒ででればいいです。
0665デフォルトの名無しさん
2009/02/16(月) 17:23:240666デフォルトの名無しさん
2009/02/16(月) 17:32:04いや、n次って書いてあるし、
最後の行の式は、掛け算でしょ?
0667デフォルトの名無しさん
2009/02/16(月) 17:38:090668デフォルトの名無しさん
2009/02/16(月) 17:39:26一元n次
0669デフォルトの名無しさん
2009/02/16(月) 18:15:32x=-1/a[i]の近くから探してけばどれかが最適解になるのかな。
0670デフォルトの名無しさん
2009/02/16(月) 19:12:18ソースを書く気はしないけどな
0671デフォルトの名無しさん
2009/02/17(火) 00:34:49[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8892.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2009年2月17日12:00まで]
よろしくお願いします
0672デフォルトの名無しさん
2009/02/17(火) 00:42:13[2] 問題文(含コード&リンク):f(x)=x2条-5x+6=0の解を二分法を用いたプログラムで求めてみよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語:C++
[4] 期限: 2月18日
[5] その他の制限:
よろしくお願いします
0673デフォルトの名無しさん
2009/02/17(火) 00:42:56[2] 問題文(含コード&リンク):f(x)=x2条-5x+6=0の解を二分法を用いたプログラムで求めてみよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語:C++
[4] 期限: 2月18日
[5] その他の制限:
よろしくお願いします
0674デフォルトの名無しさん
2009/02/17(火) 00:46:32scan()は自分で実装するの?
0675デフォルトの名無しさん
2009/02/17(火) 00:52:59はい、自分で適当な数字を入力して行なうので
先生は簡単だと仰ってたんですがチンプンカンプンで・・・
0676デフォルトの名無しさん
2009/02/17(火) 01:34:01>x2条
・・・
0677デフォルトの名無しさん
2009/02/17(火) 01:46:07数学相談系で、確立なんかつっこんでられないぞ!
0678674
2009/02/17(火) 05:41:58とりあえず早起きして作ってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8893.c
こんなので良いのかな?
何か不都合があったら教えてください。
0679デフォルトの名無しさん
2009/02/17(火) 07:47:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8894.c
0680デフォルトの名無しさん
2009/02/17(火) 07:47:47ありがとうございます!!
多分不都合はないと思います
本当にありがとうございました
0681デフォルトの名無しさん
2009/02/17(火) 11:49:220682デフォルトの名無しさん
2009/02/17(火) 12:46:39Mathematicaでも使えばいいんでない?
0683デフォルトの名無しさん
2009/02/17(火) 13:03:02数値微分を知ってるか?
0684デフォルトの名無しさん
2009/02/17(火) 13:03:59>>660
656が難しいというか、2種類の違う方法で発生させて結果が同じになるか比較しないといけないので、
これとは違う方法はないでしょうか。
0685デフォルトの名無しさん
2009/02/17(火) 13:59:23[2] ttp://www.uploda.org/uporg2024643.zip.html パスつきです
たくさんありますがよろしくおねがいいたします。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:GNNコンパイラGCC(GNU Compiler Collection)
[3.3] 言語:Cだとおもいます
[4] 期限: 2月20日の朝までにお願いいたします。
無理な場合はできるところまででもお願いします。
[5] その他の制限: フローチャートも必要ですがそれは
多分プログラムを見れば自分でできますよね?
3番まではなんとかできましたので4番からお願いいたします。
0687デフォルトの名無しさん
2009/02/17(火) 14:23:52マシンパワーに任せてみた。
極大値については近似値しか出せなかった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8895.c
0688デフォルトの名無しさん
2009/02/17(火) 14:28:41問題4
#include <stdio.h>
#define N 7
int main(void)
{
#if N%3 == 0
puts("3で割り切れます。");
#elif N%2 == 0
puts("2で割り切れます。");
#else
puts("2で割り切れません。");
#endif
return 0;
}
0689デフォルトの名無しさん
2009/02/17(火) 14:33:420690◇Xs5riRtBYc :2009
2009/02/17(火) 14:39:300692デフォルトの名無しさん
2009/02/17(火) 14:44:264.
#include<stdio.h>
#define N 9
void main(){
int a = TEIGI;
if(-1) (a%3)?(a%2)?puts("2で割り切れまません。"):puts("2で割り切れます。"):puts("3で割り切れます。");
}
0693デフォルトの名無しさん
2009/02/17(火) 15:01:590694692
2009/02/17(火) 15:04:18>>689 無視は可愛そうだからな
5.switch文
#include<stdio.h>
#define N 4
const char* msg[]={"春です。","夏です。","秋です。","冬です。","不正な値です。"};
void main(){
int a = N;
switch(a<1 || a>12){
case true: puts(msg[4]); break;
case false: (a<=2||a==12) ? puts(msg[3]) :
(a<=6) ? puts(msg[0]) :
(a<=8) ? puts(msg[1]) : puts(msg[2]);break;
default: break;
}
}
0695デフォルトの名無しさん
2009/02/17(火) 15:05:11これって何の問題なんだ?
0696デフォルトの名無しさん
2009/02/17(火) 15:07:19変数に代入してないからだめじゃないのか
0697デフォルトの名無しさん
2009/02/17(火) 15:12:05東京コンピュータサービスの採用試験とか
習ったのはC言語の「プログラミングの基礎」と
「条件分岐とアルゴリズム」と「ループとアルゴリズム」と
「配列とアルゴリズム」と「関数と変数」です。
標準ライブラリというのは聞いたことがありませんのでs
今調べます。
0699デフォルトの名無しさん
2009/02/17(火) 15:13:116.for文
#include<stdio.h>
#define N 15
void main(){
int i,j;
for(i=1;i<=N&&i<=20;i++,puts("")) for(j=0;j<i;j++,printf("%d",i));
}
これは、・・・普通? (問題の設定上)10以上おかしいけど。
0700デフォルトの名無しさん
2009/02/17(火) 15:14:31>>695という疑問を抱えつつ、問題9(スキャン0004を問題4と間違えた)
#include "stdio.h"
void main()
{
char *name = "yamada taro";
int list[] = { 0, 1, 4, 10 };
int i, pos;
printf( "文字列は %s\n", name );
for( i = 0; i < 4; i++ )
{
pos = list[i];
printf( "%2d 文字目=%c 領域アドレス=%08x\n", pos + 1, name[pos], name + pos );
}
}
0701デフォルトの名無しさん
2009/02/17(火) 15:15:24ありがとうございます
0702デフォルトの名無しさん
2009/02/17(火) 15:20:006.
#define N 5
j;main(i){for(;i-1==N;exit(0));for(j=0;j<i;j++)printf("%d",i);puts("");main(++i);}
実行時に引数を与えないでください
0703デフォルトの名無しさん
2009/02/17(火) 15:22:09#include <stdio.h>
#define N 203
main(void){
int num = N;
if(num < 3) return -1;
if(num%3 == 0) {
puts("3で割り切れます。");
} else
if(num%2 == 0) {
puts("2で割り切れます。");
} else {
puts("2で割り切れません。");
}
return 0;
}
0704692とか699の中の人
2009/02/17(火) 15:23:39ソースに対するつっこみもないところ見ると、ただ意味わからず貼り付けるだけか。
0705デフォルトの名無しさん
2009/02/17(火) 15:28:55とりあえず俺がこの会社を利用することはなさそうだ
いままではこのくらいのレベルでしたので
穴埋めですし適当に生めてましたが
今回配られたのは私には難しすぎて
ちょっとわかりかねています。
宿題に関してはやれといわれてるだけなので
どこからきたものかはわかりmせん。
0707デフォルトの名無しさん
2009/02/17(火) 15:53:141974年9月9日設立。クロレラ培養を始めた社長がそれを販売し一発儲けようと画策したが失敗し倒産、
その後も懲りずに味付け卵会社→シェービングクリームの会社を設立したがことごとく失敗したため、
数年後一念発起して立ち上げた会社が当時は珍しかった人貸しのIT企業。
売上高 351億円 (2005年度)
0708デフォルトの名無しさん
2009/02/17(火) 16:01:21#include <stdio.h>
#define N 4
main(void){
int num = N;
if(num < 1 || num > 12) {
puts("不正な値です。");
return -1;
}
switch(num) {
case 4:case 5:case 6:
puts("4月,5月,6月は春な。");
break;
case 7:case 8:
puts("7月,8月は夏な。");
break;
case 9:case 10:case 11:
puts("9月,10月,11月は秋な。");
break;
default:
puts("冬です。");
break;
}
return 0;
}
0709デフォルトの名無しさん
2009/02/17(火) 16:19:43#include <stdio.h>
#define N 9
main(void){
int num = N;
int i, j;
for(i=1; i<=num; i++) {
for(j=1; j<=i; j++) {
printf("%d", i);
}
puts("");
}
return 0;
}
0710デフォルトの名無しさん
2009/02/17(火) 17:00:48main(void){
int num = N;
int i, j;
i = 1;
while(i<=num) {
j = 1;
while(j<=i) {
printf("%d", i);
j++;
}
puts("");
i++;
}
return 0;
}
>>686 Q.8
main(void){
int num = N;
int i, j;
i = 1;
do {
j = 1;
do {
printf("%d", i);
j++;
} while(j<=i);
puts("");
i++;
} while(i<=num);
return 0;
}
0711デフォルトの名無しさん
2009/02/17(火) 17:56:040712デフォルトの名無しさん
2009/02/17(火) 18:33:02#include <stdio.h>
main(void)
{
char *pcPtr;
char acName[] = "yamada taro";
char list[] = "11001000001";
int i;
char acData[22+1];
strcpy(acData, "Tokyo Computer Service");
printf("%s\n", acData);
printf( "文字列は %s\n", acName );
for(i = 0, pcPtr = acName; *pcPtr; pcPtr++) {
if(list[i++] != '0')
printf( "%2d 文字目は%c 領域アドレスは0x%08x\n", i, *pcPtr, pcPtr );
}
printf("ポインタ変数のアドレスは0x%08x\n", &pcPtr);
}
0713デフォルトの名無しさん
2009/02/17(火) 18:42:39[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8896.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 2009/2/18
[5] その他の制限:なし
scan関数の部分の
char buff[10];
if(fgets(buff,10,stdin)==NULL){
next=END;
return;
をどうやったらnext=ENDに辿り付くのか教えてもらえませんでしょうか?
0714デフォルトの名無しさん
2009/02/17(火) 18:49:31Ctrl+Z
0715デフォルトの名無しさん
2009/02/17(火) 18:49:49もしくは読み込みに失敗した時
0717デフォルトの名無しさん
2009/02/17(火) 19:52:36#include <stdio.h>
main(void)
{
int h, g, bmi=0, i;
float ave;
char buf[10];
do {
printf("身長(cm)を入力してください→"); scanf("%10s", buf);
sscanf(buf, "%d", &h);
} while(h<50 || h>300 || *buf<'1' || *buf>'9');
do {
printf("体重(kg)を入力してください→"); scanf("%10s", buf);
sscanf(buf, "%d", &g);
} while(g<1 || g>200 || *buf<'1' || *buf>'9');
ave = (float)g/(h*h)*10000;
if(ave < 22*0.7) bmi = 1; // < 15.4
else if(ave < 22*0.9) bmi = 2; // < 19.8
else if(ave >= 22*1.3) bmi = 5; // >= 28.6
else if(ave >= 22*1.1) bmi = 4; // >= 24.2
else bmi = 3;
printf("\nやせ |");for(i=0;i< 9;i++)
if(bmi==1) printf("*"); else printf("-"); puts("");
printf("やせ気味|");for(i=0;i<28;i++)
if(bmi==2) printf("*"); else printf("-"); puts("");
printf("標準 |");for(i=0;i<43;i++)
if(bmi==3) printf("*"); else printf("-"); puts("");
printf("太り気味|");for(i=0;i<12;i++)
if(bmi==4) printf("*"); else printf("-"); puts("");
printf("肥満 |");for(i=0;i< 8;i++)
if(bmi==5) printf("*"); else printf("-"); puts("");
}
0718デフォルトの名無しさん
2009/02/17(火) 21:12:17どう実装してもよいので比の連立方程式が与えられた時に
それを満たす最小の自然数の組を求めるプログラムを作れ。
答えがない場合は「no answer」と表示する
わかりにくいかもしれないので、問題文らしくしてみると
同じサイズで空でない配列a,b,c,dを考え、iを添え字とする
a[i],b[i]の値はある集合Xの要素xjの添え字jを表す
a[i]:b[i]=c[i]:d[i](つまり、b[i]*c[i]=a[i]*d[i])の関係式を与えられた時
全ての関係式を満たす最小の自然数xjの組e[i]を返せ
(この問題の形式に従う必要は無い)
例1 a={1,2,3,4},b={2,3,4,5},c={10,3,2,7},d={3,5,5,12}の時
x1:x2=10:3
x2:x3=3:5
x3:x4=2:5
x4:x5=7:12
この解となる組の集合うち、全てが自然数で最小のものであるe={140,42,70,175,300}(={x1,x2,x3,x4})を出力する
例2 a={2,3,1,4},b={1,2,3,2},c={5,3,4,6},d={6,2,5,3}
x2:x1=5:6
x3:x2=3:2
x1:x3=4:5
x4:x2=6:3
このときe={12:10:15:20}(={x1,x2,x3,x4})を出力する
例3 a={1,1,2} b={2,3,3} c={1,1,1} d={2,3,1}の時これを満たす自然数はないため「no answer」と表示する
[3] 環境 WinXP,VC8.0(or gcc 3.4.4 with cygwin),C++、Cどちらでも可
[4] 期限: なし
[5] その他の制限:標準以外のライブラリはなし(STLはOK,Boostはだめ)
特に「どうやってループを回すか」がわからない
例1みたいな直列につながった例なら何とか解ける気がするが
例2みたいになるとどうやって解いて良いのかわからずつまづいた
よろしくお願いします
0719デフォルトの名無しさん
2009/02/17(火) 22:15:09ここは、専門家が考えた課題を丸投げするスレです。
質問スレでもいけ
0720デフォルトの名無しさん
2009/02/17(火) 23:10:10専門家って・・・・ただ連立方程式に直して剰余定理とか使ってくだけでしょう。
まぁ、ただ解が欲しいなら for(i) for(j) for(k) for(l) if( func(i,j,k,l)==true ) printf( あsdfgふじこ );
で、10000の4乗回くらい計算すればええんでない?大体1日位で終わるんでない?
最小の整数の組ってさ、普通何を指すのさ?
(1,9)と(2,3) とか。
0721デフォルトの名無しさん
2009/02/17(火) 23:18:000722デフォルトの名無しさん
2009/02/17(火) 23:26:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8897.txt
ところで、gccでの"可能\"のコンパイルオプションが分からないので、そのままにしてる。
0723デフォルトの名無しさん
2009/02/17(火) 23:38:12トウシロウの考えた駄文は、読むにも値しないってこと。
0724718
2009/02/17(火) 23:54:01一応先ほどの問題には元ネタがあるんだが、
問題文が英語なので俺が駄訳すると状況はかわらんのでよそ行くわ
0725デフォルトの名無しさん
2009/02/18(水) 00:17:06(゚Д゚)ハア?
X_a[i] : X_b[i] = c[i] : d[i] だろ
駄訳というか根幹から間違ってんじゃねーかドアホ
0726デフォルトの名無しさん
2009/02/18(水) 00:26:340727デフォルトの名無しさん
2009/02/18(水) 00:32:020728デフォルトの名無しさん
2009/02/18(水) 01:48:42#include <stdio.h>
#define BUF_SIZE 1024
main(void)
{
int count, work;
char buffer[BUF_SIZE];
FILE *fp1, *fp2;
if(!(fp1 = fopen("data1.txt", "r"))) {
fprintf(stderr, "File data1.txt open error!");
return -2;
}
if(!(fp2 = fopen("data2.txt", "a"))) {
fprintf(stderr, "File data2.txt open error!");
return -2;
}
do {
count = fread(buffer, 1, BUF_SIZE, fp1);
work = fwrite(buffer, 1, count, fp2);
} while (count == BUF_SIZE);
fclose(fp1);
fclose(fp2);
return 0;
}
0729デフォルトの名無しさん
2009/02/18(水) 02:14:56#include <stdio.h>
#define A1 20
#define A2 30
int add(int, int);
void mult2(int*, int);
void TelDataGet(char*);
main(void)
{
int a1 = A1;
int a2 = A2;
int add1, mult;
char acTelData[15];
TelDataGet(acTelData);
printf("TelNo=%s\n", acTelData);
add1 = add(a1, a2);
printf("%dと%dの和は%d\n", a2, a1, add1);
mult2(&mult, add1);
printf("%dの2倍は%d\n", add1, mult);
return 0;
}
int add(int a1, int a2)
{ return a1 + a2; }
void mult2(int *ma, int m1)
{ *ma = m1 * 2; }
void TelDataGet(char* tel)
{ tel[0] = '1'; tel[1] = '\0'; }
0730デフォルトの名無しさん
2009/02/18(水) 03:12:42[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8904.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:(gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 2009年2月20日まで
1ヶ月表示ですが2×2の4ヶ月表示にしたいのですがどうしたらいいかわかりませんのでお願いします。
あと祝日や土日のマークもつけたいのですがどのようなプログラムをつくればいいのですか?
0731デフォルトの名無しさん
2009/02/18(水) 09:55:00/* 空白の表示 */
for (loop=0;loop<week;loop++) {
// printf(" ") ;
printf(" ") ;
}
0732デフォルトの名無しさん
2009/02/18(水) 10:41:18[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8905.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland C++
[3.3] 言語: C
[4] 期限: 2/20
[5] その他の制限: 制限など多かったので、上のリンク先にまとめました。よろしくお願いします。
0733デフォルトの名無しさん
2009/02/18(水) 11:35:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8906.txt
0734デフォルトの名無しさん
2009/02/18(水) 13:39:43[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8908.txt
[3] 環境
[3.1] OS:Mac
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2009年2月20日24:00まで
[5] その他の制限:問題文のヒントに沿っていればその他は制限はないはずです。
よろしくおねがいします。
0735デフォルトの名無しさん
2009/02/18(水) 17:41:01ありがとうございます、助かりました。
0736デフォルトの名無しさん
2009/02/18(水) 17:59:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8910.txt
0737デフォルトの名無しさん
2009/02/18(水) 21:11:13[2] 問題文
C言語を用いたWindowsプログラミング課題
長方形の左上の頂点の座標(x1,y1)
および右下の頂点の座標(x2,y2)の二点を与えたときに、
その長方形に外接する長方形を描画するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ:gcc(講義ではVisualStudio2008使用)
[3.3] 言語:C
[4] 2009年2月22日24:00まで
[5] その他の制限: ウィンドウの大きさは自由、背景は白ということ以外は特に制限ありません。
何卒、よろしくお願いします。
0738デフォルトの名無しさん
2009/02/18(水) 22:03:59一意じゃないぞ? 動的プログラムか?
0739デフォルトの名無しさん
2009/02/18(水) 22:26:210740デフォルトの名無しさん
2009/02/18(水) 22:52:470741738
2009/02/18(水) 23:40:080742デフォルトの名無しさん
2009/02/19(木) 00:16:55>>739は出来た子や
0743デフォルトの名無しさん
2009/02/19(木) 01:31:37どれか、お願いします。。。
0744737
2009/02/19(木) 01:37:12長方形はx軸並行のものです。長方形の回転はありません。
講師に楕円は一意には定まりませんという質問を送ったのですが
「外接している楕円の中でx軸に平行な辺が長辺・・・
などの縛りを加えて、とにかく長方形に外接する楕円をひとつ描画していればよい」
という条件で解答してよいとのことでした。
長方形につきましてはスキャナ等が無く、図をあげられなかったので説明不足となってしまい、申し訳ありませんでした。
引き続き解答いただけましたら幸いです。
よろしくおねがいします。
0745デフォルトの名無しさん
2009/02/19(木) 01:40:290746デフォルトの名無しさん
2009/02/19(木) 02:04:230747デフォルトの名無しさん
2009/02/19(木) 02:18:530748737
2009/02/19(木) 02:36:37特にすでに解答を考えてくださっていた方々、本当に申し訳ありませんでした。
以下が正しい問題文になります
[1] 実践プログラミング2
[2] 問題文
C言語を用いたWindowsプログラミング課題
長方形の左上の頂点の座標(x1,y1)
および右下の頂点の座標(x2,y2)の二点を与えたときに、
その長方形に外接する「楕円」を描画するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ:gcc(講義ではVisualStudio2008使用)
[3.3] 言語:C
[4] 2009年2月22日24:00まで
[5] その他の制限: ウィンドウの大きさは自由、背景は白ということ以外は特に制限ありません。
本当に申し訳ありませんでした。
解答いただける方々、どうかよろしくお願いします。
0749デフォルトの名無しさん
2009/02/19(木) 02:38:54[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=8667(8912.zipが私のです)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 2月20日
[5] その他の制限: 特になし
どなたかよろしくお願いします.
0750デフォルトの名無しさん
2009/02/19(木) 02:44:56ノ http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8913.txt
0752デフォルトの名無しさん
2009/02/19(木) 03:04:580753emi
2009/02/19(木) 03:09:43あったとして答えてくださるような方は
おられるのでしょうか…
(知識レベルではなくて、
スレを随時チェックしておられるのかということです。)
0754デフォルトの名無しさん
2009/02/19(木) 05:14:20PHP http://pc11.2ch.net/php/ か。
JavaScript http://pc11.2ch.net/hp/ か。
0755デフォルトの名無しさん
2009/02/19(木) 13:58:53if( e[1] != 1000 ){
if( e[2] != 1000 ){
break;
}
else{
e[2] = 230;
q[2] = m+8;
}
}
else{
e[1] = 230;
q[1] = m+8;
}
}
else{
e[0] = 230;
q[0] = m+8;
}
を簡単にfor文にすることはできるでしょうか?
0756デフォルトの名無しさん
2009/02/19(木) 14:22:27if(i < 3) e[i] = 230, q[i] = m + 8;
0757デフォルトの名無しさん
2009/02/19(木) 14:31:560758デフォルトの名無しさん
2009/02/19(木) 14:38:31for ( i = 0; i <= 2; i++) {
if ( e[ i ] == 1000) {
e[ i ] = 230;
q[ i ] = m + 8;
}
}
break;
0759デフォルトの名無しさん
2009/02/19(木) 14:49:16if-elseを勉強しなおしw
0760デフォルトの名無しさん
2009/02/19(木) 16:57:44while(1)
{
//
}
でもあるのかと思ってね
0761デフォルトの名無しさん
2009/02/19(木) 17:02:29それでも、元 break に流れる条件と異なるぜ?
0762デフォルトの名無しさん
2009/02/19(木) 17:05:22breakのことじゃないw
0763デフォルトの名無しさん
2009/02/19(木) 17:43:01else if( e[1] == 1000 ) {e[1] = 230; q[1] = m+8;}
else if( e[2] == 1000 ) {e[2] = 230; q[2] = m+8;}
else break;
と書き直せば、
for(i=0;i<3;i++) if(e[i] == 1000) {e[i] = 230; q[i] = m+8;}
break;
どっか、違ってるかな?
0764デフォルトの名無しさん
2009/02/19(木) 17:45:38分かったから、おとなしくIF文勉強し直してこいや、な?
0765デフォルトの名無しさん
2009/02/19(木) 17:46:310766デフォルトの名無しさん
2009/02/19(木) 17:47:11なんというアホ
0767763
2009/02/19(木) 17:53:54人違い。この問題初投稿。
>>763 ホントだあほだった。
for(i=0;i<3;i++) if(e[i] == 1000) {e[i] = 230; q[i] = m+8; break;}
if(i==3) break;
これでどう?
0768デフォルトの名無しさん
2009/02/19(木) 17:56:20else if( e[1] == 1000 ) {e[1] = 230; q[1] = m+8;}
else if( e[2] == 1000 ) {e[2] = 230; q[2] = m+8;}
else break;
と書き直す。
0769デフォルトの名無しさん
2009/02/19(木) 18:00:100771デフォルトの名無しさん
2009/02/20(金) 01:27:12http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8915.lzh
0772デフォルトの名無しさん
2009/02/20(金) 05:13:14[2] 問題文(含コード&リンク):
二つの変数を入力し、その四則演算の結果を表示するプログラムex6_5を作成せよ。
プログラムの仕様は以下の通り。
・main()関数では2つの入力値を格納する変数および四則演算結果を格納する変数
を宣言する
・2変数の入力を行うための関数inp_num()を作成する。関数仕様は以下の通り。
void inp_num(int *数値1へのポインタ, int *数値2へのポインタ);
※main()関数内の変数(数値1と数値2)に対して別関数inp_num()にて値を
書き込むため、引数としてポインタを用いる
※2変数の入力を促す表示もinp_num()内で行う
・四則演算の結果を求める関数calc()を作成する。関数仕様は以下の通り。-
int calc(int 変数1, /* 変数1の値 */
int 変数2, /* 変数2の値 */
int *足し算結果格納先, /* 足し算結果格納先のアドレス */
int *引き算結果格納先, /* 引き算結果格納先のアドレス */
int *掛け算結果格納先, /* 掛け算結果格納先のアドレス */
int *割り算結果格納先 /* 割り算結果格納先のアドレス */
);
返却値: 0:正常終了
-1:エラー(ゼロ除算が発生する場合)
・ゼロ除算がある時には、割り算以外の結果は表示し、割り算結果はエラーが
ある旨の表示を行う
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: なるべく早く。
お願いします。
0773デフォルトの名無しさん
2009/02/20(金) 08:49:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8916.txt
0774デフォルトの名無しさん
2009/02/20(金) 11:28:10ありがとう。
0775748
2009/02/20(金) 15:43:39迅速な解答どうもありがとうございました。
動作確認のためコンパイルしたところ、以下のエラーが出て実行できませんでした。
エラー 1 error C2440: '初期化中' : 'const char [11]' から 'TCHAR [100]' に変換できません。 c:\users\media\desktop\drawrect\drawrect.cpp 17行目
エラー 2 error C2440: '初期化中' : 'const char [9]' から 'TCHAR [100]' に変換できません。18行目
エラー 3 error C2731: 'WinMain' : 関数はオーバーロードできません。34行目
エラー 4 error C2664: 'CreateDialogParamA' : 2 番目の引数を 'LPWSTR' から 'LPCSTR' に変換できません。(新しい機能 ; ヘルプを参照) 161行目
可能でしたら、対応のほどよろしくお願いいたします。
0776デフォルトの名無しさん
2009/02/20(金) 16:29:04文字列をTEXT()でかこってみな
0777デフォルトの名無しさん
2009/02/20(金) 17:03:01プロジェクトはWin32。誤ってプロジェクトをWin32コンソールにしてないか。
>>771 期待はしないほうがいいけど。
0778デフォルトの名無しさん
2009/02/20(金) 17:49:15DrawRevt.cppの先頭に
#undef UNICODE
追加したら
0779777
2009/02/20(金) 18:07:32構成プロパティ→全般→プロジェクトの既定値→文字セット→マルチバイト文字セットを使用する
0780デフォルトの名無しさん
2009/02/20(金) 21:05:33Rectangle(hdc,lx,ly,rx,ry);
/*
int dx,dy;
dx = (rx - lx)/4;
dy = (ry - ly)/4;
lx -= dx;
rx += dx;
ly -= dy;
ry += dy;
if(lx > 0 && ly > 0)
Ellipse(hdc,lx,ly,rx,ry);
*/
double cx, cy, cr;
cx = lx + (rx - lx)/2; // 中心点のX座標
cy = ly + (ry - ly)/2; // 中心点のY座標
cr = sqrt((cx - lx)*(cx - lx) + (cy - ly)*(cy - ly));
Ellipse(hdc, (int)(cx - cr), (int)(cy - cr),
(int)(cx + cr), (int)(cy + cr));
0781777
2009/02/21(土) 01:36:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8917.zip
0782デフォルトの名無しさん
2009/02/21(土) 01:46:26さすがに楕円一個じゃ寂しいだろう
0783デフォルトの名無しさん
2009/02/21(土) 05:23:430784デフォルトの名無しさん
2009/02/21(土) 07:44:07縦と横の2個じゃないの
0785デフォルトの名無しさん
2009/02/21(土) 08:33:23皆様のおかげで卒業できそうでございます。
ありがとうございました。
無事に第2新卒になれます。
0788 ◆r7Y88Tobf2
2009/02/21(土) 15:08:21[2] 問題文(含コード&リンク):
1.0〜100までの乱数axとayを作成し、これを点(ax,ay)とする。この点は、図の四角形の内部にある。
2.点(ax,ay)から点(50,50)までの距離を求める。
3.「2」で求めた距離が50未満であれば円の内側、50以上であれば円の外側とする。
4.「1」〜「3」を繰り返す。
「1」〜「4」を行い、円の内側になる点の数をn1、円の外側にある点の数をn2とするとき、n1+n2は点の総数となる。
四角形の面積は10000であり、円の面積は2500πである。
円の面積と点の数には関係があることから、数多くの点で試行することで、円周率πを求めることができる。
小数点以下6桁程度までの精度でπを求めること。小数点以下6桁程度の精度を持つ場合、小数点以下7桁目の数は変化しなくなるはずである。
※乱数はrand関数を使う。可能であれば、srand関数による乱数シードの設定も行うこと。
※小数点以下切り捨てを行うにはfloor関数を使う。
[3] 環境
[3.1] OS:Linux
[3.3] 言語: c言語
[4] 期限: 2009年2月25日まで
[5] その他の制限:この問題文の内容を守りさえすれば大丈夫だと思います。
授業の再レポートなのですが、わからなくて苦戦しております。皆さんの力を貸してください。
0789 ◆r7Y88Tobf2
2009/02/21(土) 15:11:28課題のURLは
http://www.riri-chan.homeip.net/kougi_program/kadai.pdf
です。よろしくお願いします。
0790デフォルトの名無しさん
2009/02/21(土) 15:44:47普通は計算量的に原点と四分円でやるんだけど
んで、「手伝うな」って宿題を手伝うのはOKだっけ?
0791デフォルトの名無しさん
2009/02/21(土) 15:59:12> んで、「手伝うな」って宿題を手伝うのはOKだっけ?
基本的に、このスレの目的は一番バカな質問を受けつけることと、
他人の学習機会を妨害して、ボウフラの如き自称技術者を量産することだら、
いいんじゃねーの?
0792デフォルトの名無しさん
2009/02/21(土) 15:59:44だら・・・
0793デフォルトの名無しさん
2009/02/21(土) 16:06:38どこか間違えたかなぁ
手伝うなと課題を丸投げすることを不快にさせてすみません。
モンテカルロ法についてですが、似たようなプログラムをいくつか見たのですが、どのプログラムも関数などが違っていてわからないことがありました。
よろしくお願いします
0795デフォルトの名無しさん
2009/02/21(土) 16:19:340796デフォルトの名無しさん
2009/02/21(土) 16:38:31uniform_int<> dst(0, 100)ってやってたんだけど…まあ、いいかw
0797デフォルトの名無しさん
2009/02/21(土) 16:42:240798デフォルトの名無しさん
2009/02/21(土) 16:54:44ありがとう!
0799デフォルトの名無しさん
2009/02/21(土) 17:18:32試行回数 nTryTimes を億のオーダーで試してみたけど5桁以降は結構ばらける
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{
const int nTryTimes = 10000000;
int n1 = 0;
int n2 = 0;
//乱数の種をUNIX時刻で初期化
srand( time(NULL) );
int i;
for( i = 0; i < nTryTimes; ++i )
{
double dAx = 50.0 - ( ((double)rand() / (double)RAND_MAX) * 100.0);
double dAy = 50.0 - ( ((double)rand() / (double)RAND_MAX) * 100.0);
if( (dAx * dAx + dAy * dAy) < 2500.0 ){
++n1;
}else{
++n2;
}
}
printf("PI = %lf\n", ((double)n1/(double)(n1 + n2))*4.0);
return 0;
}
0800デフォルトの名無しさん
2009/02/21(土) 17:21:330801デフォルトの名無しさん
2009/02/21(土) 17:32:260802デフォルトの名無しさん
2009/02/21(土) 17:32:300803デフォルトの名無しさん
2009/02/21(土) 17:40:26教官がスレを見てたらアウトだが
わかりやすいプログラムをありがとうございました。
ただいま、Linaxで起動させてみたところ、確認できました。
本当にありがとうございました。
あとは教官がこのスレを見ていないことを祈りますww
0805748
2009/02/21(土) 18:01:07>>777様
ただ今無事動作確認しました。
自分ではどうしても外接楕円の求め方すら分かりませんでした。
回答および修正・アドバイス等ありがとうございました!
0806デフォルトの名無しさん
2009/02/21(土) 18:02:310807デフォルトの名無しさん
2009/02/21(土) 19:40:291回の試行で変動する幅はその時点の試行回数の逆数に大体一致するから
6桁精度=変動量が10^-6以下=100万回の試行でOKだな
ただし確度の保証はないが
0808デフォルトの名無しさん
2009/02/21(土) 21:29:50プログラムを教えてください。
多角形の各頂点の座標は、右回りに(x0,y0),(x1,y1)…(xn-2,yn-2),
(xn-1,yn-1)とする。
コードは簡単なもので構わないです。
お手数おかけしますが、何卒よろしくお願いいたします。
0809デフォルトの名無しさん
2009/02/21(土) 21:36:52>>1 のテンプレ読んで書き直せ
0810デフォルトの名無しさん
2009/02/21(土) 21:52:10失礼いたしました。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
n個の頂点を持つ多角形が、平面座標上にあるときの面積を求める
プログラムを教えてください。
多角形の各頂点の座標は、右回りに(x0,y0),(x1,y1)…(xn-2,yn-2),
(xn-1,yn-1)とする。
[3] 環境
[3.1] OS: (Windows/Linux/等々) :Windows XP
[3.2] コンパイラ名とバージョン: −
[3.3] 言語: C
[4] 期限:来週中までに教えて貰えれば結構です。
[5] その他の制限: C言語並びにプログラミングを勉強し始めてまだ間もないので、
お力をお貸しください。
コンパイラについては、残念ながら普段は自宅のPCではなく、会社のPCで作業をしている為、
詳しい事がわかりません。
お手数お掛け致しますが、何卒よろしくお願いいたします。
0811デフォルトの名無しさん
2009/02/21(土) 22:02:32#include<stdio.h>
#define n 3
typedef struct tag_vector_t{double x, y;}vector_t;
vector_t vector_sub(vector_t a, vector_t b){
vector_t c;
c.x=a.x-b.x;
c.y=a.y-b.y;
return c;
}
double triangle(vector_t a, vector_t b){
return 0.0; // ここは自分で考えてね
}
int main(void){
vector_t point[n], a, b;
double result=0.0;
int i;
for(i=0;i+2<n;i++){
a=vector_sub(point[i+1], point[0]);
b=vector_sub(point[i+2], point[0]);
result+=triangle(a, b);
}
printf("%f\n", result);
return 0;
}
0812デフォルトの名無しさん
2009/02/21(土) 22:31:58去年のスパコンの問題に類題があったな
ピックの定理を使う奴
0813デフォルトの名無しさん
2009/02/21(土) 22:34:25#include <stdlib.h>
int main(void) {
int i,j;
double x[64],y[64],S=0.0;
char buf[32];
FILE *fp;
fp=fopen("coordinates.dat","r");
if(fp==NULL) {
fprintf(stderr,"File open error.\n");
exit(1);
}
for(i=0;fgets(buf,32,fp);i++) {
sscanf(buf,"%lf %lf",&x[i+1],&y[i+1]);
}
x[0]=x[i]; x[i+1]=x[1];
for(j=1;j<=i;j++) S+=(x[j-1]-x[j+1])*y[j];
printf("%lf\n",-0.5*S);
fclose(fp);
return 0;
}
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8918.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: 24日の昼12頃まで
[5] その他の制限: 皆さんご協力お願いします。
0815デフォルトの名無しさん
2009/02/22(日) 18:29:45[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8919.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2月23日中(できれば15時前までにお願いします。可能なら今日中に)
[5] その他の制限:
使用関数などの制限はありませんが、自分で理解してからの提出にしたいため、
なるべく簡単な手法で問題のアルゴリズムを実現しているプログラムにしてください。
プログラムの構造が冗長気味になっていても構いませんので、
if文とかfor文とか程度を複数使う感じだと助かります
問題文の各問題の※以降はプログラム自体には関係ないですが、
どういった結果になりそうかを教えてくださるとありがたいです
0816デフォルトの名無しさん
2009/02/22(日) 19:55:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8920.txt
0817デフォルトの名無しさん
2009/02/22(日) 22:16:05[2] 問題文(含コード&リンク):
次の記述を呼んで�@〜�Cの記述の妥当性について簡単に記述せよ
システムに1つのカウンタ回路とカウントパルスを送り込むポートが用意されていて
プログラムによりパルスのon/offを制御する仕組みになっている。
なお、マルチタスクOS上で複数のタスクと割り込み処理がこのカウンタを
制御する必要があるため、このカウンタへのパルスを発生するための関数を作ろうと思う。
�@この関数は再帰可能な記述にする必要がある
�Aこの関数は再入可能な記述にする必要がある
�Bこの関数はセマフォによる資源管理を行う必要がある。
�Cこの関数は割り込み禁止にする必要がある
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C
よろしくおねがいします
0818デフォルトの名無しさん
2009/02/22(日) 23:29:33誰か優しく解説して。
0819デフォルトの名無しさん
2009/02/22(日) 23:34:480820デフォルトの名無しさん
2009/02/23(月) 01:52:02[2] 問題文(含コード&リンク):
以下の問いに答えよ
同じ変数に異なる型名によるアクセスを可能にする仕組みをなんと呼ぶか?
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2月25日
学期末のレポート問題です。よろしくお願いします。
ありがとうございます。
残りの機能誰かできませんか??よろしくおねがいします。
0822816
2009/02/23(月) 02:18:35仕様的なカーソル移動を直した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8921.txt
0823デフォルトの名無しさん
2009/02/23(月) 03:12:40キャストのこと?
変数のオーバーロードは基本的にできないし。Cでは。
それともグローバル変数に対するローカル変数のことかな。
意味不明すぎる。
0824デフォルトの名無しさん
2009/02/23(月) 03:15:19問題文の意味が分からない
共用体のことかな?
0825デフォルトの名無しさん
2009/02/23(月) 04:51:10型名によるアクセスっていうとなんか違う気もするが。
0826デフォルトの名無しさん
2009/02/23(月) 06:45:50暇だから作った。クオリティは保障しない。眠いし。。。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8922.zip
0827デフォルトの名無しさん
2009/02/23(月) 06:49:130829816
2009/02/23(月) 10:05:50CVS diff
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8923.txt
0830814 ◆1Ae71LZuns
2009/02/23(月) 18:45:27>>826
皆さんどうもありがとうございます。
マジで助かります。
自分の非力さを改めて痛感しました(^_^;)
0831デフォルトの名無しさん
2009/02/23(月) 19:15:33まさか、ポインタじゃないよなw
0832817
2009/02/23(月) 22:40:15ご考察ありがとうございます。
わたしもこの問題はもうよくわからないので投げます。
本当にありがとうございました
0833832=820
2009/02/23(月) 22:41:31817様じゃなく820です
すいません
0834デフォルトの名無しさん
2009/02/23(月) 22:51:020836817
2009/02/23(月) 23:37:36[2] 問題文(含コード&リンク):
次の記述を呼んで�@〜�Cの記述の妥当性について簡単に記述せよ
システムに1つのカウンタ回路とカウントパルスを送り込むポートが用意されていて
プログラムによりパルスのon/offを制御する仕組みになっている。
なお、マルチタスクOS上で複数のタスクと割り込み処理がこのカウンタを
制御する必要があるため、このカウンタへのパルスを発生するための関数を作ろうと思う。
�@この関数は再帰可能な記述にする必要がある
�Aこの関数は再入可能な記述にする必要がある
�Bこの関数はセマフォによる資源管理を行う必要がある。
�Cこの関数は割り込み禁止にする必要がある
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C
どなたか助けてください
おねがいします
0837デフォルトの名無しさん
2009/02/23(月) 23:48:01自信なし。というかこれCの質問か?
カウンタの制御っていうのが具体的に何を指すのか曖昧だけど
�@(゚Д゚)ハア?
�Aカウンタ読み出しは同時に出来る必要があるから再入可能であるべきだけど、
ここで作るのはカウントアップの関数なので、再入可能であってはいけないというか、不可能
�Bここで考えてるポートは1つだろうから、同時アクセスができないので資源管理が必要。
セマフォの資源数が1ならOK。ただそれミューテックスじゃねとは思う。
�C他人が使ってるポートを横取りは出来ないので割り込み禁止の必要がある。
0838836
2009/02/24(火) 00:29:15こんなに早く解答してくださって感謝の言葉もありません。
本当にありがとうございます
>>というかこれCの質問か?
c言語の授業の問題なんです・・・・・
0839デフォルトの名無しさん
2009/02/24(火) 01:01:10[2] 問題文(含コード&リンク):
振り子の運動方程式 y''+w^2*siny=0 w=(g/l)^1/2
はyが小さい時 y''+w^2*y=0 と近似でき
この解はt=0のとき y=0,y'=0という条件でy=acos(wt)となり周期はT=2π/w
振り子の運動についてt=0からt=Tまで100等分し、それぞれの点に関して時刻t及び、
y=acos(wt)で計算した値と上記の近似していない微分方程式を
ルゲン・クッタ法で計算した値の両方を標準出力へ出力するプログラムを作成せよ。
ここで、振り子の長さl、質量m、及びt=0のときのyの大きさは、
プログラム冒頭で#define指令によってマクロ名によってプログラム中での値を与えるようにせよ。
また、それぞれの値は、1.0(m)、1.0(kg)、及び3.14/4.0(rad)とせよ。
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C
丸投げですみません 返答してもらえると非常に助かります。
0840デフォルトの名無しさん
2009/02/24(火) 01:25:18それいつまでにやればいいの?
0841デフォルトの名無しさん
2009/02/24(火) 02:21:38ルンゲクッタってそんなに良いアルゴリズムなん?
0842デフォルトの名無しさん
2009/02/24(火) 02:31:24ニュートン法の効率知ってる?
違うことやってはいるが、精度的にルンゲクッタ(4次)は上をいくのよ。
ルンゲクッタ10次くらいで、アポロ11号とか飛ばしてたってきいたけど
0843デフォルトの名無しさん
2009/02/24(火) 02:46:140844デフォルトの名無しさん
2009/02/24(火) 02:54:51明らかに良くないアルゴリズムだけどな
精度も悪いし時間もかかる
0845デフォルトの名無しさん
2009/02/24(火) 06:51:18[2] http://www.pref.fukushima.jp/pc-concours/2008/03/pdf/2008honsen.pdf 問1問4問6
[3] 環境
[3.1] OS:Windows
[3.2]visual C++
[3.3] 言語:C++
[4] 期限: 2月28日
[5]include<stdio.h>を使ってください。文字列のライブラリー関数は必要に応じて使ってください。
iostreamライブラリ関数使わないでください。
お願いします
0846デフォルトの名無しさん
2009/02/24(火) 09:58:23金曜までなんで早めにやってもらえると助かりますLOL
遅くなりましたが、>>811-813の先生方多謝であります。
ただ、いくつか補足でお願いしたいことがあります。
まず、問題の多角形の面積を求めるコードですが難しいコードを使わず、多角形に補助線を引き、台形に何個か分けて面積を求め、その後に余白分の面積を求め最初に求めた面積から引いて、元の多角形の面積を求めるといったコードを「式と演算」を使って書きたいのです。
現時点で僕はまだCの基本と、入出力、式と演算くらいしか学べてないのでその範囲で出来る内容でお願いします。
もし、厳しいようなら、出来ない範囲は個人的に勉強するのでソースだけでも参考にさせてください。
宜しくお願いします。
MSC Ver.5.1でした。
あと上に書いた文章、
携帯からだったのでとても見づらいと思いますが
宜しくです。
0849デフォルトの名無しさん
2009/02/24(火) 11:36:52問1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8925.c
0850849
2009/02/24(火) 11:39:0331行目
×: for(i = 0; i < count; i++)
○: for(i = 1; i < count; i++)
0851デフォルトの名無しさん
2009/02/24(火) 13:58:43問4
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8926.c
0852849
2009/02/24(火) 14:26:28問6
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8927.c
0853849
2009/02/24(火) 14:35:49問1やっぱ間違ってたから直した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8928.c
0854デフォルトの名無しさん
2009/02/24(火) 15:03:37入力
1 550 200 100 3
出力
3 0
ってなる。
0855デフォルトの名無しさん
2009/02/24(火) 15:18:40ほんとだ。
問4 修正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8930.c
0856デフォルトの名無しさん
2009/02/24(火) 19:18:10[2] http://www.kiso.tsukuba.ac.jp/~watanabe/C3-10.htm
これがそのプログラムです
http://www.kiso.tsukuba.ac.jp/~watanabe/stone.htm
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] できるだけ早めに
お願いします
0857デフォルトの名無しさん
2009/02/24(火) 19:19:30メールで送っておけばいいの?
0858デフォルトの名無しさん
2009/02/24(火) 20:04:41これは何をすればいいの?
0859デフォルトの名無しさん
2009/02/24(火) 20:35:48[2] 問題文:マルチスレッドによる並列処理に対応したプログラムを書きます
内容は二次元配列を平面空間に見立てての磁界計算です
[3] 環境
[3.1] OS:winXP
[3.2] VC2008 or 2005
[3.3] C++
[4] 2009年2月26日までに(できれば早い方が好ましいです)
[5] その他の制限: 自力で進めたのがあるのでできればそれに手を加える形にしてもらいたいです
自力でやったのはある程度形になってるのですが、実行するとエラーがでます
磁界の計算式は例えば、A点を測りたい場合はその四方の点の磁力を足して平均にするといった感じです
自力でやったソースはこれです ttp://www1.axfc.net/uploader/He/so/199245.zip
もう何がいけないのかわかりません
よろしくお願いします
0860デフォルトの名無しさん
2009/02/24(火) 20:37:36並列処理と並行処理がごっちゃじゃね?
0863デフォルトの名無しさん
2009/02/24(火) 20:41:51ググレよ・・・
ググってもあまり違いがわからなかったので・・・
えと、磁界を計算する回数が多いので計算する領域を分けて分散させてやりたいんです
改めて書き直します
[1]プログラム
[2]ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8929.txt
[3]OS:XP
MSC Ver.5.1
言語:C言語
[4]期限:できれば今週中
[5]その他
うpろだにうpしたのが僕が書いたソースなんですが、このソースは5〜22行の部分で
多角形ABCDEの座標を入力させ、その後台形の公式(上底+下底*高さ/2)を使い、
多角形ABCDEの面積を求めるといった感じでコードを書きたいと思ってます。
座標を入力させる部分までは何とか自力で出来たんですが、式を使って面積を求める
段階で詰んでしまってます;;
早く会社の教育係を唸らせてやりたいので、どなたかお力お貸しください
お願いします
0866デフォルトの名無しさん
2009/02/24(火) 21:12:33エラー 12個出るのですが・・・。
0867デフォルトの名無しさん
2009/02/24(火) 22:05:470868デフォルトの名無しさん
2009/02/24(火) 22:11:43ウチではエラー出ないよ。
0869デフォルトの名無しさん
2009/02/24(火) 22:18:24#include <stdio.h>
int main(void)
{
double x1,x2,x3,x4,x5;
double y1,y2,y3,y4,y5;
double S;
printf("多角形ABCDEの面積を求めます。\n");
printf("各頂点の座標を入力して下さい。\n");
printf("例 5,1 のように,(カンマ)を付けて入力すること。\n\n"); /*コンマを区切り文字にすると面倒だからパス*/
scanf("%lf %lf", &x1 ,&y1);
scanf("%lf %lf", &x2 ,&y2);
scanf("%lf %lf", &x3 ,&y3);
scanf("%lf %lf", &x4 ,&y4);
scanf("%lf %lf", &x5 ,&y5);
printf("\nAの座標x1 (%lf),y1 (%lf)が入力されました。", x1, y1);
printf("\nBの座標x2 (%lf),y2 (%lf)が入力されました。", x2, y2);
printf("\nCの座標x3 (%lf),y3 (%lf)が入力されました。", x3, y3);
printf("\nDの座標x4 (%lf),y4 (%lf)が入力されました。", x4, y4);
printf("\nEの座標x5 (%lf),y5 (%lf)が入力されました。", x5, y5);
S = (x1-x2)*(y1+y2)/2.0+(x2-x3)*(y2+y3)/2.0+(x3-x4)*(y3+y4)/2.0+(x4-x5)*(y4+y5)/2.0+(x5-x1)*(y5+y1)/2.0;
printf("\n\n 多角形ABCDEの面積は %lf です。\n", -S);
return 0;
}
0870デフォルトの名無しさん
2009/02/24(火) 22:24:33そんな書式指定子使ってる段階で溜め息だよ
ありがとう先生!
先生のソースをこれから参考に頑張りたいと思います。
本当にありがとう。
>>870
そう言わないで下さい…
僕だって現時点のソースが最適だとは露とも思ってません。
とりあえず、一朝一石で言語マスターするということは考えず、
今は多くの本を読み、ソースをみて勉強することが一番なんじゃないかって思ってます。
0872デフォルトの名無しさん
2009/02/25(水) 00:38:27ほとんどコード追ってないけど、
ttp://www.kiso.tsukuba.ac.jp/~watanabe/stone.htm
↑コピペしてコンパイルしたら普通に動いているみたいだけど、それじゃだめなの??
0873デフォルトの名無しさん
2009/02/25(水) 00:50:45再提出求められても文句言わないように。コピペだからな。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8931.txt
0874デフォルトの名無しさん
2009/02/25(水) 02:56:12http://pc-physics.com/rk1.html
http://homepage1.nifty.com/gfk/furiko.htm
重要な、比較対照となる近似値は無い。
#include <stdio.h>
#include <math.h>
#define T 20.0 //計測時間(秒)
#define G 1.0 //重り(kg)
#define L 1.0 //紐長さ(m)
#define S 3.1415926/4.0 //角度(rad)初期値
double f1(double t,double x,double v);
double f2(double t,double x,double v);
−−中略−−
x=S; //位置の初期値
v=0.0; //速度の初期値
dt=T/100.; //刻み幅
tmax=T; //繰り返し最大回数
−−中略−−
double f1(double t,double x,double v){return v;}
double f2(double t,double x,double v){return (-G/L*sin(x));}
0875デフォルトの名無しさん
2009/02/25(水) 03:40:51[2] 問題文
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8932.txt
�T、このプログラムは、起動時に指定された2つのテキストファイルを
比較して、違う行があればその行番号を表示するプログラムです。
�@〜�Dを埋めてプログラムを完成させなさい。
�U、�TのプログラムにおいてFunc_read関数はstrcmpを使用して
読み込んだ2つのレコードが同じかどうか判断しています。
これをmemcmpを利用したロジックに作り直せ。
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限:2月26日まで
ソースコード長くてすみません
どうかよろしくお願いします
0876デフォルトの名無しさん
2009/02/25(水) 11:42:42FILE *Fp2/*�@*/;
nrtn = Func_open(argv[2]/*�A*/,2);
fclose(Fp1/*�B*/);
printf("<%s>エラー:%s",szfname,strerror(errno/*�C*/));
if(nrtn!=0/*�D*/)
あとmain( )関数本体の ; は削除ね
///関数宣言
int main(int argc,char *argv[]);
もいらないだろ
0877デフォルトの名無しさん
2009/02/25(水) 12:47:07今度は、>>869さんのソースの10〜20行間のscanf文とprintf文を
forループ使って省略することになり、ループさせる所までは自力で出来たのですが
その後の計算式で各x,yが反応しなくなってしまいお手上げ状態です
恐らく、main下で宣言しないからだと思っているのですが、
int iやint xi,yiと一緒に宣言してしまうと、ループの式が狂ってしまうのは
何故でしょうか?
どなたかお教え下さい;;
ちなみに、僕が書いたソースはうpしときました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8933.txt
0878デフォルトの名無しさん
2009/02/25(水) 12:51:50for(i = a;i < 5;){
i = a + i++;
これはひどい
i = aで初期化する意味がなくなってるし
未定義動作やってるし
配列というのを使うといいよ
double x[ 5 ] ,y[ 5 ];
0879デフォルトの名無しさん
2009/02/25(水) 13:06:41ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8934.c
0880デフォルトの名無しさん
2009/02/25(水) 13:21:3872行目の
> if(prtn1==NULL||prtn2==NULL)
この条件式だと例えば
[ファイル1]
a
[EOF]
[ファイル2]
a
1
[EOF]
の比較をした時、誤認するんじゃね?
早めなご指摘ありがとうございます。
なるほど、配列ですか
その選択は思いつきませんでした・・・まだ勉強してない項目だったのもあって
これから勉強してみます!
>>879
コードありがとうございます。
ですが、式が若干変換されてて、うpしたソースの計算式と
計算結果が合いませんでした;;
んー配列時の演算コードについて勉強する必要があるようです
ちょっと勉強してもう一度トライしてみます
0882デフォルトの名無しさん
2009/02/25(水) 15:00:24もしかして計算結果の正負が逆な感じ?
だとすれば絶対値を取れば大丈夫かも。
#include <math.h>を追加して
S += fabs((x[i % 5] - x[(i + 1) % 5]) * (y[i % 5] + y[(i + 1) % 5]) / 2.0);
に修正するとか。
いえ、どうやらそうではないようです
S = (x4-x5)*(y4+y5)/2.0+(x5-x1)*(y5+y1)/2.0+(x1-x2)*(y1+y2)/2.0
+(x2-x3)*(y2+y3)/2.0+(x3-x4)*(y3+y4)/2.0
という計算式を、>>879先生のコードで表したかったのですが、
式もスリム化されておりそれが原因なんじゃないかと・・
ちなみにS = (x4-x5)*(y4+y5)/2.0+(x5-x1)*(y5+y1)/2.0+
(x1-x2)*(y1+y2)/2.0+(x2-x3)*(y2+y3)/2.0+(x3-x4)*(y3+y4)/2.0
の式と、S+=fabs((x[i % 5]-x[(i+1)%5])*(y[i%5]+y[(i+1)%5])/2.0);は
同一の結果になるんでしょうか?
0884デフォルトの名無しさん
2009/02/25(水) 15:38:59出来ました
S -=ではなく、S =で記述してみたら式と結果が合致しました
まぐれかもしれませんが;;
0887デフォルトの名無しさん
2009/02/25(水) 19:10:07S = (x4-x5)*(y4+y5)/2.0+(x5-x1)*(y5+y1)/2.0+
(x1-x2)*(y1+y2)/2.0+(x2-x3)*(y2+y3)/2.0+(x3-x4)*(y3+y4)/2.0
0888デフォルトの名無しさん
2009/02/25(水) 19:56:06これじゃないかな?
ttp://www.ss.u-tokai.ac.jp/~ooya/Misc/Shiryou/Minus.shtml
0889デフォルトの名無しさん
2009/02/25(水) 20:15:26こんな便利な公式があるなんて知りませんでした。
ご回答ありがとうございます。
0890875
2009/02/25(水) 21:06:15どうもありがとうございます。
どなたか、
[1] 授業単元:プログラミング言語�U
[2] 問題文
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8932.txt
�U、�TのプログラムにおいてFunc_read関数はstrcmpを使用して
読み込んだ2つのレコードが同じかどうか判断しています。
これをmemcmpを利用したロジックに作り直せ。
の�U番をお願いします
0891デフォルトの名無しさん
2009/02/25(水) 22:19:11>if(prtn1==NULL||prtn2==NULL)
ここ本当に||?
&&じゃない?
0892デフォルトの名無しさん
2009/02/25(水) 22:26:24&&のわけねーだろ、よく見ろw
0894デフォルトの名無しさん
2009/02/25(水) 22:49:18>nrtn = strcmp(szdat1,szdat2);
を
nrtn = memcmp(szdat1,szdat2,strlen(szdat1));
にしたらいけるはず
0895デフォルトの名無しさん
2009/02/25(水) 22:50:140896デフォルトの名無しさん
2009/02/25(水) 22:50:460897デフォルトの名無しさん
2009/02/25(水) 22:52:26return(9)ってやってるのに、mainで対応してないのが悪い。
0898デフォルトの名無しさん
2009/02/25(水) 23:04:33それを言うと一行に81字以上あると
動作がおかしくなるからな
そう言うプログラムだと思うしかない
0900デフォルトの名無しさん
2009/02/26(木) 07:43:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8912.zip
0901デフォルトの名無しさん
2009/02/26(木) 09:38:36nrtn = strcmp(szdat1,szdat2);
を
if(strlen(szdat1) == strlen(szdat2))
nrtn = memcmp(szdat1,szdat2,strlen(szdat1));
else
ntrn = 100; /* 0以外の適当な値 */
に変えたらどうでしょ?
0902デフォルトの名無しさん
2009/02/26(木) 09:57:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8935.txt
0903902
2009/02/26(木) 10:18:12// nrtn = strcmp(szdat1,szdat2);
if((nrtn=strlen(szdat1))==strlen(szdat2))
nrtn = memcmp(szdat1,szdat2,nrtn);
0904901
2009/02/26(木) 11:13:53ん?俺に言ってた?
俺は別にファイルの行数について言及してないよ。
strcmpをmemcmpに変えるとこを書いただけ。
0905デフォルトの名無しさん
2009/02/26(木) 11:41:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8936.txt
0906デフォルトの名無しさん
2009/02/26(木) 12:06:21ただのアンカーミスだと思うよ
0908デフォルトの名無しさん
2009/02/26(木) 12:16:05完全一致のファイルから、末尾に余計な行を追加しても ”同じ内容でした” と返す仕様だしね
0909デフォルトの名無しさん
2009/02/26(木) 14:31:04[2] 問題文(含コード&リンク): http://www.kiso.tsukuba.ac.jp/~watanabe/C3-9.htm
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: c言語
[4] 期限: 今週中
再び申し訳ないです 誰か助けてください LOL
0910デフォルトの名無しさん
2009/02/26(木) 15:03:25別の人なら、出題同じだから、過去ログ参照の事。
どう対処すればいいんですかね?
Objaect Modules [.OBJ]:c- +
Objaect Modules [.OBJ]:"sortbb.obj" /farcall
Run File[c-.exe]:"c-.exe" /noi
List File [NUL.MAP]: NUL
Libraries [.LIB]:
Definitions File [NUL.DEF]
LINK : fatal error L1093: c-.obj : object not found
0912デフォルトの名無しさん
2009/02/26(木) 15:25:47#define G 9.8
0913デフォルトの名無しさん
2009/02/27(金) 01:42:38課題2 (a)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8937.c
(b)の問題の意味が理解できん。
0914913
2009/02/27(金) 01:53:24うpするファイル間違えた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8938.c
0915デフォルトの名無しさん
2009/02/27(金) 04:05:00[2] 問題文(含コード&リンク):
次の記述をよく読み、�@〜�Cで配列が得られる領域を説明し、それぞれの方法の
有効性や問題点について簡単に記述せよ。
マルチタスク環境のあるタスクで、プログラムの1時的な処理のために
大きな配列が必要になった。
�@配列を関数内で宣言して自動変数にする
�A配列を関数内で宣言してstatic変数にする
�B配列を関数外で宣言してグローバル変数にする
�Cmalloc()関数を使って配列の領域を確保する
[3.1] OS: Windows
[3.3] 言語: c言語
[4] 期限: 2/28日18:00までにメールにて提出
よろしくおねがいいたします
0916デフォルトの名無しさん
2009/02/27(金) 05:24:38マルチスレッドっていう前提なら、
1、複数同時呼び出しで変数が競合することはないがメモリをその分食う。確保する領域は使用する大きさの中で知りうる最大を設定しないと目的を果たせない。
2、複数同時呼び出しをした時点で動作は未定義になり配列もめちゃくちゃになってしまう。
3、グローバルにすることを悪とする見方もある。2と同様に複数同時呼び出しした際に未定義の動作をする。
4、メモリを保持するポインタがstaticでないなら、1と同様だが、開放忘れがあると不具合の呼び水になる。その代わり可変長配列を実現できて時と場合によっては最良の解だと言える。
0917デフォルトの名無しさん
2009/02/27(金) 06:45:581. プログラム(スレッド)のスタックに、関数に入って宣言された時点で確保
2. プログラムの静的変数領域(ヒープの下)に、プログラム開始時に確保
3. 2. と同じ
4. ヒープ領域に、mallocを呼んだ時点で確保。
あと、C99だと配列の動的な確保が可能だから>>916の1は当てはまらない。制限多いけどな。他に
・スレッドの場合、スタックはスレッドごとに確保される。自動変数があまりでかいとスタックからはみ出てエラーになる可能性も
・mallocは他の変数確保に比べて確保にとてもとても時間がかかるのでほんの一時データをおくだけなら不向きかも
・マルチスレッドなら、staticやグローバルに値をいれるときにはクリティカルセクションになるので排他制御を行う必要がある
とでもかいとけ
0918デフォルトの名無しさん
2009/02/27(金) 07:15:340919デフォルトの名無しさん
2009/02/27(金) 09:47:27ちなみに無知であること自体を非難するつもりは毛頭無いです。さすがに私もそこまで愚かじゃありません。
たぶん、malloc/reallocだけでの動的メモリ管理云々の文章を読んだことがあるということはその人のブログなりなんなりを見たことがあるんだと思うけど。
0920デフォルトの名無しさん
2009/02/27(金) 13:18:50[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8939.cpp
授業の最終課題で簡単なゲームを作成しています
そこで自作の迷路プログラム(上文のtxt)に取り組んでいて、途中である◎を拾ってゴールしたいんですが
今のままだと◎を拾わなくても普通にゴール出来てしまいます
1.◎を拾った事をそのマスに着いたときに判定するプログラム
2.ゴールの際に◎を拾っていないでマスに到達したら「まだ拾ってません」と表示しゴールさせないプログラム
この2つがどうしてもプログラム上に組めなくて困っています
どなたかアドバイスお願いします
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C
[4] 2009年3月2日までに
[5] その他の制限:
できれば上のtxtに手を加える形にしてもらいたいです
大学内でしかコマンドプロンプト、テラパッドを使用することができないので
作業は平日しかできません
0921デフォルトの名無しさん
2009/02/27(金) 14:12:27cmdconsole.hhってなんぞ
0922デフォルトの名無しさん
2009/02/27(金) 14:40:59フラグを一つ用意
◎がある座標Xを記憶。
移動するたびに現在地がXかどうかチェック。
XならフラグをON
ゴールしたときにフラグがONになってるかどうかチェック
0923デフォルトの名無しさん
2009/02/27(金) 16:26:01[2] 現在の地域時間から15時間後の日時を表示するプログラムを作成せよ。
表示形式は日付と時間が表示されれば自由とする。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: 特にありません。どなたか助けてください。
よろしくお願いします。
0924デフォルトの名無しさん
2009/02/27(金) 16:37:21@@ -86 +86 @@
- k = getch();
+ k = getch(); if(k == 0xE0) continue;
@@ -107 +107 @@
- if (xs == 13 && ys == 10) {
+ if (xs == 3 && ys == 7) {
@@ -108,0 +109 @@
+ printf("宝");
@@ -111 +112,6 @@
- printf("脱出おめでとう");
+ if(gameover == 0) {
+ printf("出口です");
+ printf("宝を持ち帰っていないので、まだ出られません。戻ってください");
+ } else {
+ printf("脱出おめでとう");
+ }
@@ -114 +120 @@
- } while (k != 'c' && gameover == 0);
+ } while (k != 'c' && (gameover == 0 || xs != 13 || ys != 10));
0925デフォルトの名無しさん
2009/02/27(金) 16:41:30ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8940.c
0926宿題は自力で
2009/02/27(金) 16:46:49間違えを恐れるな。
間違えてても先生は怒りません。
むしろ、こんな所に頼る方が怒られますよ。
0927デフォルトの名無しさん
2009/02/27(金) 16:48:44//switch(now->tm_mon){
switch(now->tm_mon+1){
//if(now->tm_mon > 12){
if(now->tm_mon >= 12){
0928宿題の依託は停止しました。。。
2009/02/27(金) 16:49:060929デフォルトの名無しさん
2009/02/27(金) 16:52:03制限無し とのことなので Win32APIを利用
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8941.c
0930デフォルトの名無しさん
2009/02/27(金) 16:54:36果たして教師が10年前にそれが出来た上で出している
のかどうかは一考の価値がありそう
0931デフォルトの名無しさん
2009/02/27(金) 17:12:28何の意味もない考察だな
0932デフォルトの名無しさん
2009/02/27(金) 17:18:13#include <stdio.h>
#include <time.h>
int main()
{
time_t t;
time(&t);
//printf("%s", ctime(&t));
t += 15 * 60 * 60;
printf("%s", ctime(&t));
return 0;
}
0933デフォルトの名無しさん
2009/02/27(金) 17:36:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8943.zip
とりあえずやってみた
何箇所か[TAB]になってるから気になるならがんばって修正してくれ
元のファイルを自分で修正してもらってもいいし
0934933
2009/02/27(金) 17:47:370935デフォルトの名無しさん
2009/02/27(金) 19:58:27キミのような教師にとってはな
0936デフォルトの名無しさん
2009/02/27(金) 20:03:30#include <stdio.h>
#include <time.h>
int main()
{
time_t t;
do {
time(&t);
// printf("%s", ctime(&t));
t += (15+13) * 60 * 60;
printf("%s", ctime(&t));
} while(sleep(1),1);
return 0;
}
0937デフォルトの名無しさん
2009/02/27(金) 20:26:160938936
2009/02/27(金) 21:15:07VC++ なら #include <windows.h> が必要で、void Sleep(milliseconds);
ところで、time_t は <time.h> で定義されている。
0939デフォルトの名無しさん
2009/02/27(金) 21:21:340940デフォルトの名無しさん
2009/02/27(金) 22:14:21time.hの中身は環境によって違うんじゃね?
0941デフォルトの名無しさん
2009/02/27(金) 22:19:10#include <time.h>
int main()
{
time_t time1, time2;
struct tm *times;
time1 = time(NULL);
times = localtime(&time1);
times->tm_hour += 15;
time2 = mktime(times);
printf("現在: %s\n", ctime(&time1));
printf("15時間後: %s\n", ctime(&time2));
return 0;
}
0942デフォルトの名無しさん
2009/02/27(金) 22:21:02POSIXでは、time_tはUNIX時間を表す整数
で良かったっけ
だとすると、>>923を標準Cの範囲で解くには>>925みたいにするしかないのか
0943デフォルトの名無しさん
2009/02/27(金) 22:42:200944941
2009/02/27(金) 22:59:12・localtimeで得られたデータを別の変数とかにコピーせずに書き換えてよかったっけ?
・範囲外の値をmktimeに与えた場合の動作は保証されてたっけ?(ex. 0時70分→1時10分)
0945デフォルトの名無しさん
2009/02/27(金) 23:29:33・範囲外の値をmktimeに与えた場合の動作は保証されてたっけ?(ex. 0時70分→1時10分)
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/mktime.3.html
によると保証されてるみたいね。
0946デフォルトの名無しさん
2009/02/27(金) 23:38:49奥が深いな
0947938
2009/02/28(土) 01:56:02#ifdef WIN32
#define compiler 1 // 1:VC++, other:gcc
#define _USE_32BIT_TIME_T // VC++ .NET or later
#endif
#include <stdio.h>
#include <time.h>
#if compiler == 1
#include <windows.h>
#endif
int main()
{
time_t t; // sizeof is 4 bytes if defined _32BIT_, 8 bytes not define _32BIT_.
do {
time(&t);
t += 15 * 60 * 60;
printf("%s", ctime(&t));
}
#if compiler == 1
while (Sleep(1000),1);
#else
while (sleep(1),1);
#endif
return 0;
}
0948デフォルトの名無しさん
2009/02/28(土) 12:42:55[2]
ポインタの有効性について例を挙げて説明しなさい。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 今日
どうかよろしくお願いします
0949デフォルトの名無しさん
2009/02/28(土) 12:44:520950デフォルトの名無しさん
2009/02/28(土) 15:29:07何が有効なんだ?
0951デフォルトの名無しさん
2009/02/28(土) 15:53:43IsBadCodePtr が 0 を返すことかな
もしくは IsBadReadPtr/IsBadWritePtr あたり
0952デフォルトの名無しさん
2009/02/28(土) 15:55:05意味わからん
0953デフォルトの名無しさん
2009/02/28(土) 16:25:52int val=0; int *ptr=&val;
//val=&val;
val=(int)&val;
//val=static_cast<int>(&val);
val=reinterpret_cast<int>(&val);
return *ptr;
}
ポインタが有ると便利やわ〜
0954デフォルトの名無しさん
2009/02/28(土) 23:21:27[2] 問題文(含コード&リンク):最終的にはババ抜きのシミュレータを作りたくてカードを配るところでてこずっています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8945.c
[3] 環境
[3.1] OS:Windows (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: VC 6.0 gcc4.3.2 MinGw
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:無期限
[5] その他の制限:制限ではないですがVC6.0とgcc とMinGWとで挙動が違います。
gccの結果が一番理想に近いのですが、VC6.0 とMinGWはallcard[]という配列が途中で書き換えられてしまいます。
その原因が分からず困っています。
0955デフォルトの名無しさん
2009/02/28(土) 23:26:55allcard[53] = 99;
0956デフォルトの名無しさん
2009/02/28(土) 23:53:310957デフォルトの名無しさん
2009/03/01(日) 00:00:3799ってのはジョーカーです。
>956
恥ずかしいの覚悟で聞いています。すいません。
コンパイラによって、挙動が違うって言うことはよくあることなんですか?
0958デフォルトの名無しさん
2009/03/01(日) 00:01:330959デフォルトの名無しさん
2009/03/01(日) 00:04:00マジスカ。
どの辺りがどうですか?
書き直して出直してきます
0960デフォルトの名無しさん
2009/03/01(日) 00:04:190961デフォルトの名無しさん
2009/03/01(日) 00:05:42こんなソースそれくらいでしか見たことない
Fortranのようだ
0962デフォルトの名無しさん
2009/03/01(日) 00:10:360963デフォルトの名無しさん
2009/03/01(日) 00:14:50fortranはみたことないんですが。
>955, 960 ありがとうございました
宣言で[53]しかしてないのに[53]に代入してるのがまずかったんですね。
分かりました
>955~961のみなさん。
ありがとうございました。
0964デフォルトの名無しさん
2009/03/01(日) 00:15:47そのようでした。
ありがとうございます。
いままでソースが冷静になって見れて無かったです。
0965デフォルトの名無しさん
2009/03/01(日) 00:19:030966デフォルトの名無しさん
2009/03/01(日) 00:25:29それっぽく。
配列の値を全部+1してもらえばちゃんと思ったとおりに動きました。
やっぱ[0]も使った方がいいんですかね?
何かとこんがらがりそうになって嫌なんですが。
0967デフォルトの名無しさん
2009/03/01(日) 00:33:210968デフォルトの名無しさん
2009/03/01(日) 01:25:23こうするとtestいらない
allcard[53]=99;
for(i=1;i<=53;i++){
j=rand()%53+1;
temp=allcard[i];
allcard[i]=allcard[j];
allcard[j]=temp;
}
0969デフォルトの名無しさん
2009/03/01(日) 01:26:220970デフォルトの名無しさん
2009/03/01(日) 01:28:580971デフォルトの名無しさん
2009/03/01(日) 01:36:18for(i=1;i<=53;i++){
j=i + rand()%(53 - i + 1);
temp=allcard[i];
allcard[i]=allcard[j];
allcard[j]=temp;
}
でおk
0972デフォルトの名無しさん
2009/03/01(日) 01:40:16j = rand() % i + 1;
でもおk
0973デフォルトの名無しさん
2009/03/01(日) 01:42:17φ(.. )メモメモ
0974デフォルトの名無しさん
2009/03/01(日) 01:47:420975デフォルトの名無しさん
2009/03/01(日) 03:55:13for (i = 1; i <= 53/N_PLAYER+1; i++)
{
printf("[%2d]", i);
ck = 0; // 毎回クリア
for (j = 1; j <= N_PLAYER; j++)
card[j][i] = 0; // 領域クリア
for (j = 1; j <= N_PLAYER; j++) // player 1〜4
{
m = rand() % 53+1; // 0〜52
if(test[m] != 0) //test[m] はallcard[m]が使ったかどうかのスイッチ。
{
card[j][i] = m;
printf(" %2d%c m:%2d ck:%2d|", allcard[m], (m-1)/13+'A', m, ck);
test[m] = 0;
if(i == 53/N_PLAYER+1 && j == 53%N_PLAYER) // カードを配り終わった
break;
} else {
j--;
ck++; // 毎回+1
}
}
printf("\n");
}
0976954
2009/03/01(日) 06:36:49使わせてもらいます。
0977デフォルトの名無しさん
2009/03/01(日) 21:10:420978デフォルトの名無しさん
2009/03/01(日) 22:17:111)N個のさいころをすべて同じ目がでるまで投げ続け
N個のぞろ目がでるまでの回数と、理論的には何回目までにでるかを表示するプログラムを作りなさい。
N=2の場合の出力例
4回目でぞろ目になりました。理論的には6回投げて1回でます。
2)N個のさいころを投げて、すべてのさいころで0がでるまでの回数を求めるプログラムを作りなさい。
よろしくお願いします
0979デフォルトの名無しさん
2009/03/01(日) 22:24:38[2] 問題文(含コード&リンク):
3^1,000,000,000,000 mod 23を計算せよ
[3] 環境
[3.1] OS: 自由
[3.2] コンパイラ名とバージョン: 自由
[3.3] 言語: 自由
[4] 期限: 無期限
[5] その他の制限:プログラムを作るだけでなく、何故そのプログラムで
答えが求められるのか説明する事
0980デフォルトの名無しさん
2009/03/01(日) 22:30:30#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define N 3
int get_dice(void){
int r;
do{
r=rand();
}while(r>=(RAND_MAX-RAND_MAX%6));
return r%6;
}
int main(void){
int i, j, dice;
srand(time(NULL));
for(i=1;;i++){
dice=get_dice();
for(j=1;j<N;j++){
if(dice!=get_dice()) break;
}
if(j>=N) break;
}
printf("%d回目でぞろ目になりました。理論的には%.0f回投げて1回でます。\n", i, pow(6,N-1));
return 0;
}
2) ってどんなサイコロ使うの?
0981デフォルトの名無しさん
2009/03/01(日) 22:45:11#include<stdio.h>
int main(void){
int i, j, x=3, y=1;
for(j=0;j<12;j++){
for(i=0;i<10;i++){
y=(y*x)%23;
}
x=y;
}
printf("%d\n", y);
return 0;
}
あってるかどうか不明
考え中
0982デフォルトの名無しさん
2009/03/01(日) 22:57:261〜6までの普通のさいころです
0983デフォルトの名無しさん
2009/03/01(日) 23:01:130が出るって書いてあるんだが
0984デフォルトの名無しさん
2009/03/01(日) 23:01:2864bit整数とフェルマーの小定理使えば3分で出来そうな課題だが
なんか深い意味があるのか?
0985981
2009/03/01(日) 23:04:16// 3^(10^12) = (((((((((((((3^10)^10)^10)^10)^10)^10)^10)^10)^10)^10)^10)^10)
// (x^n) mod 23 = ((x^(n-1) mod 23)*x) mod 23
0986デフォルトの名無しさん
2009/03/01(日) 23:06:23Cで書いたプログラムをJavaに書き換えるプログラムお願い♪
0987デフォルトの名無しさん
2009/03/01(日) 23:07:490988デフォルトの名無しさん
2009/03/01(日) 23:11:08http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/power.html
0989デフォルトの名無しさん
2009/03/01(日) 23:20:563^(1,000,000,000,000%22) %23を計算すればよくね?
0990981
2009/03/01(日) 23:36:350991デフォルトの名無しさん
2009/03/01(日) 23:42:51int main(void){
int i, j, x=3, y=1;
for(j=0;j<12;j++){
y=1; // これが必要だった
for(i=0;i<10;i++){
y=(y*x)%23;
}
x=y;
}
printf("%d\n", y);
return 0;
}
0992デフォルトの名無しさん
2009/03/01(日) 23:45:130993デフォルトの名無しさん
2009/03/01(日) 23:52:093^2 mod 23 = 9
3^3 mod 23 = 4
3^4 mod 23 = 12
3^5 mod 23 = 13
3^6 mod 23 = 16
3^7 mod 23 = 2
3^8 mod 23 = 6
3^9 mod 23 = 18
3^10 mod 23 = 8
3^11 mod 23 = 1
0994デフォルトの名無しさん
2009/03/01(日) 23:52:373^13 mod 23 = 9
3^14 mod 23 = 4
3^15 mod 23 = 12
3^16 mod 23 = 13
3^17 mod 23 = 16
3^18 mod 23 = 2
3^19 mod 23 = 6
3^20 mod 23 = 18
3^21 mod 23 = 8
3^22 mod 23 = 1
3^23 mod 23 = 3
3^24 mod 23 = 9
以後ループ
0995デフォルトの名無しさん
2009/03/02(月) 00:10:22すなわち、3^1 mod 23 でおk?
0996デフォルトの名無しさん
2009/03/02(月) 01:02:39基数、指数、法の値によらずO(1) (高々64bits程度では効果は薄いが)
int modexp(int x, long long int n, int p)
{
long long int i, y = 1;
for(i = 1LL << 62; i > 0; i >>= 1) {
y = (y * y) % p;
if(n & i) y = (y * x) % p;
}
return (int)y;
}
0997デフォルトの名無しさん
2009/03/02(月) 01:20:490998デフォルトの名無しさん
2009/03/02(月) 01:51:13printf("answer = 3\n");
ということで。
0999デフォルトの名無しさん
2009/03/02(月) 01:55:271000デフォルトの名無しさん
2009/03/02(月) 01:59:25という意味にしかならんが、それはそれで answer = 3 を表示する
プログラム、と解釈されるだろう・・・
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。