C/C++の宿題片付けます 122代目at TECH
C/C++の宿題片付けます 122代目 - 暇つぶし2ch2:デフォルトの名無しさん
09/01/16 00:52:45
皆様のおかげで無事単位を取得できました

本当にありがとうございます

これからは人に頼らずできるかぎり自分の力で頑張っていきたいです

3:デフォルトの名無しさん
09/01/16 01:09:15
C/C++の宿題を片付けます 122代目
スレリンク(tech板)

重複

4:デフォルトの名無しさん
09/01/16 17:24:48
保守しといたらいいのかな


ところで何で122題目じゃなくて122代目なの?

5:デフォルトの名無しさん
09/01/17 21:05:23
janeの隠し機能

1.書き込みウィンドウを出し半角入力に切り替える
2.Wキーを押しっぱなしにする
3.Wキを押しっぱなしにしながらsageのチェックするところをおもむろにクリック


6:デフォルトの名無しさん
09/01/17 21:15:18
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

7:デフォルトの名無しさん
09/01/17 23:40:29
3 は「コテハン記憶チェック」「最前面チェック」「末尾整形」「BE」「Proxy」のどのチェックを操作してもいけるな


8:デフォルトの名無しさん
09/01/27 08:45:05
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

9:デフォルトの名無しさん
09/01/27 11:08:41
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

10:デフォルトの名無しさん
09/01/30 10:49:33
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

11:デフォルトの名無しさん
09/01/30 10:50:17
wwwwwwwwwwwwwwwwwwwwwwwwwww

12:デフォルトの名無しさん
09/01/30 11:00:12
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

13:デフォルトの名無しさん
09/01/30 16:05:21
残ってる期限内の課題はこれだけかな。

C/C++の宿題を片付けます 122代目
スレリンク(tech板:705番)
→解析と言うのも良く知らないが、これってどう言う処理結果を期待してるんだろ?

C/C++の宿題を片付けます 122代目
スレリンク(tech板:891番)
→オレには、「きのこのやまはたべざかり」も解析できないが、多分、ここの学生にも出来ないような・・・

14:デフォルトの名無しさん
09/01/30 16:56:07
異なる30個の数字をうんたらかんたらって課題は早稲田大学理工学部かな

15:デフォルトの名無しさん
09/01/30 20:57:38
wwwwwwwwwwwwwwwww

16:デフォルトの名無しさん
09/01/30 20:58:14
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

17:デフォルトの名無しさん
09/01/30 21:32:00
[1] 授業単元: プロムラミング
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C言語
[4] 期限:1月31日まで
[5] その他の制限:変わった問題ですが、誰かお願いします!!

18:デフォルトの名無しさん
09/01/30 21:35:16
うむ、たしかに変わった問題だ。

19:デフォルトの名無しさん
09/01/30 21:50:10
>>17
これで、しかも、マルチ

20:デフォルトの名無しさん
09/01/30 23:14:45
>>18
>>19
変わった問題ですみません。わかりますか?

21:デフォルトの名無しさん
09/01/30 23:17:45
>>17のレスだけを与えられて問題にたどり着けるかどうか試してみたら?

22:デフォルトの名無しさん
09/01/30 23:26:01
>>21
すみません、どうゆうことですか(><)?

23:デフォルトの名無しさん
09/01/30 23:26:52
>>22
>>17から出発して、自分で問題文を探してみろよって言ってんだ

24:デフォルトの名無しさん
09/01/30 23:39:40
>>23
私の問題はNo.8780ですが、どうしたらいいかわからないんです。。。

25:デフォルトの名無しさん
09/01/30 23:45:44
>>17
URLリンク(kansai2channeler.hp.infoseek.co.jp)

26:デフォルトの名無しさん
09/01/30 23:50:45
>>25
その問題なんですけど、問題の意味がわからないってことですか?

27:デフォルトの名無しさん
09/01/30 23:57:00
>>26
問題文が長いときはzipに入れとこうね。

28:デフォルトの名無しさん
09/01/30 23:59:04
>>27
すみません(><)やり方がいまいちわからなかったもんで。。。
ありがとうございます!!

29:デフォルトの名無しさん
09/01/31 00:10:36
>>17
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これと同じ問題だよね。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

30:デフォルトの名無しさん
09/01/31 00:11:31
>>24
オマエ以外の誰がそれを知ってんだよ、バカ

31:デフォルトの名無しさん
09/01/31 00:12:22
>>28
マルチったレッドで回答ついてるだろ。
死ね。

32:デフォルトの名無しさん
09/01/31 00:22:16
>>29
それとおんなじ問題です。

33:デフォルトの名無しさん
09/01/31 00:23:01
>>30>>31
すみません。。。

34:デフォルトの名無しさん
09/01/31 00:29:04
1万個以下の都市間の距離が記録されている。
近い都市どおしをまとめて、n個のグループに分ける。
これわかる人いますか?

35:デフォルトの名無しさん
09/01/31 00:34:37
ワーシャル・フロイト法?

36:デフォルトの名無しさん
09/01/31 00:35:24
>>34
>>1くらい読め
一刻も早く死ね

37:デフォルトの名無しさん
09/01/31 00:40:59
>>34
スレタイと>>1
まともに訊く気があるなら”近い都市どおしをまとめて”って辺りを詳しく

38:デフォルトの名無しさん
09/01/31 00:43:59
>>34
よく見ると、日本語でおkだ・・・
ねたか・・・

39:デフォルトの名無しさん
09/01/31 01:05:08
すみません。 
都市は円形同サイズで、中心間の距離が記録されています。
2つにわれる場合は、同程度サイズになるようにします。
合併後の都市の中心から橋が離れすぎないようにします。

40:デフォルトの名無しさん
09/01/31 01:06:58
>>39
>>1くらい読め
死ね

41:デフォルトの名無しさん
09/01/31 01:10:08
>>39
スレタイ嫁
あと、書いた文を人が読んで理解できるかどうかを考えて文を書け
3行目以下が意味不明

42:デフォルトの名無しさん
09/01/31 01:23:32
よく読むと微妙にスレタイ変わってるんだな

43:デフォルトの名無しさん
09/01/31 01:38:02
>>17は結局何が悪かったのかに気づいてないんだろうな。
zipじゃなかったことについて怒られたんだと思ってるよきっと。

44:デフォルトの名無しさん
09/01/31 01:42:58
スレタイだけ読んだってしょうがないだろ
テンプレも読ませないと

45:デフォルトの名無しさん
09/01/31 01:43:01
>>42
重複スレだから仕方ない

46:デフォルトの名無しさん
09/01/31 02:48:41
[1] 分岐 一次元配列 繰り返し 外部関数
[2] URLリンク(www.pref.fukushima.jp)(問2問3)
[[3] 環境
 [3.1] OS:Windows XP
 [3.2] visual C++
 [3.3] C++
[4] 期限: 2009年2月3日まで]
[5] main関数以外にユーザ定義関数を作成すること。

困ってます。誰か助けてください。

47:デフォルトの名無しさん
09/01/31 03:08:02
>>46
スパコン甲子園かと思ったら、パソコン甲子園なんだな・・・

48:デフォルトの名無しさん
09/01/31 03:16:41
>>47
高校生が20分掛けずに解くことになっている問題じゃねーか!

49:デフォルトの名無しさん
09/01/31 03:20:20
1問あたり20分?

50:デフォルトの名無しさん
09/01/31 03:49:05
>>49
予選の問題だろ?
180分で10問だってさ。

51:デフォルトの名無しさん
09/01/31 03:52:37
>>50
本選の問題で、240分で12題の配分。

52:デフォルトの名無しさん
09/01/31 04:38:32
>>46
こんな?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

53:デフォルトの名無しさん
09/01/31 05:13:15
>>52
iostreamライブラリ関数(習っていない)を使わないで
入力もscanfをつかって表現できませんか?

実際、C言語習って3か月しかたってないので
基礎しかわかりません・・。

54:デフォルトの名無しさん
09/01/31 05:28:08
46>>
main関数以外と最後に書いてありますが
main関数も使って結構です。
要するに二つの関数を用いれば結構です。
たびたび、すみません

55:デフォルトの名無しさん
09/01/31 05:32:15
[1] 授業単元:while文
[2] 問題文:キーボードから入力された2以上の自然数nが素数であるかどうか繰り返し調べるプログラムを作ってみましょう。
      1回終わるごとに「次の2以上の自然数を入力してください」と再入力
      nに0以下の整数が入力された場合は
      「0以下の整数が入力されました」 「次の2以上の自然数を入力してください」と再入力
      nに1が入力されたら「終了します」として調べるのを終える
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler、bcc developer
 [3.3] 言語: C++
[4] 期限:2009年2月2日10:30まで
[5] その他の制限:while(1)で無限ループとか、goto文使えばできるんですが授業で扱ってません。。

56:デフォルトの名無しさん
09/01/31 05:35:30
>>53
C++なのにiostreamやってないの?
Cなんじゃないの?

57:デフォルトの名無しさん
09/01/31 05:48:28
>>56まだ習ってないです・・汗

58:デフォルトの名無しさん
09/01/31 05:50:34
それは酷いな

59:デフォルトの名無しさん
09/01/31 06:23:56
>>55
URLリンク(kansai2channeler.hp.infoseek.co.jp)

60:デフォルトの名無しさん
09/01/31 09:34:30
>>53
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

殆んど意味不明。
>>46には一次元配列と書いてあるが使うところが無いし

61:デフォルトの名無しさん
09/01/31 09:50:08
問3は配列を使いたいね

62:デフォルトの名無しさん
09/01/31 10:14:54
URLリンク(kansai2channeler.hp.infoseek.co.jp)

63:デフォルトの名無しさん
09/01/31 13:06:46
前スレで回答いただいた者(>>973)ですが、

URLリンク(kansai2channeler.hp.infoseek.co.jp)

をコンパイルしたところ、
59: 警告 return type of 'main' is not 'int'

と表示されます。どう直せばよいのでしょうか?

64:デフォルトの名無しさん
09/01/31 13:20:04
>>63
やむを得まい、int main(void) { return0; } にするしかない。

65:デフォルトの名無しさん
09/01/31 13:37:57
>>64
ありがとうございました!

66:デフォルトの名無しさん
09/01/31 13:42:48
>>46
面白い問題だ
制限時間内に全問正解できる自信がないぜw

67:デフォルトの名無しさん
09/01/31 15:34:18
>>46
高校レベルなの??

68:デフォルトの名無しさん
09/01/31 15:46:13
>>46
プログラムとしてはどうか知らんが
数学的には未解決問題の上に賞金もかけられていたはず

69:デフォルトの名無しさん
09/01/31 15:46:34
>>59
本当にありがとうございます!
すっきりしててわかりやすいです!

70:デフォルトの名無しさん
09/01/31 15:58:37
>>68
与えられた数字より、小さい数字に出来ることを示せばいい。
たとえば、100から始めたら、99以下になる事を示す。
そうすれば数学的帰納法で全ての数字で成り立つ。

71:デフォルトの名無しさん
09/01/31 15:59:47
>>70
言ってることは尤もなんだが
数学者を馬鹿にしてるのかw

72:デフォルトの名無しさん
09/01/31 16:06:39
>>70
たしかICMで我々人類がこれらの問題を解決するにはまだ十分な準備ができていない発言があったはず

73:デフォルトの名無しさん
09/01/31 16:11:29
これって1から逆にたどったら、全ての数字が生成出来るのかな。
もし生成出来て、試行回数に応じた出現回数の上限が存在すれば解ける。

74:デフォルトの名無しさん
09/01/31 16:12:21
間違えた
もし生成出来て、試行回数に応じた出現数字の上限が存在すれば解ける。

75:デフォルトの名無しさん
09/01/31 16:16:33
1から逆にたどったn回の試行で、f(n)以下の数字が全て生成出来る
という関数f(n)が決定出来れば、解ける。

76:デフォルトの名無しさん
09/01/31 16:16:44
>>73
5 → 16
32 → 16
これを逆にたどるとすると枝が多すぎて解析不能

77:デフォルトの名無しさん
09/01/31 16:20:27
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
自動販売機のオブジェクトを作成しないさい
(商品はオレンジジュース、コーラ、サイダーの三つにする事)更に下記の条件を満たすこと
<条件>
自動販売機で購入できる「商品」,「お金」,「自動販売機」は最低限クラス化すること。
「カプセル化」,「継承」,「多様性」を全て利用すること。
例外処理をすること(プログラムが頓挫した時点でNGとします)。
入出力は,下記のとおり行うこと。
【入力】 【出力】
・お金(10円~1000円)の個数(枚数)    ・つり銭(10円~100円)の個数(枚数)と総購入代金
・購入商品選択(複数可)     ・購入商品名(複数)

実現は,main()関数で「自動販売機」クラスのインスタンスを1つ作成し,そのクラスのbuy( )メンバ関数を呼び出したら全てが動作するようにする。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VB2005
 [3.3] 言語: C++
[4] 期限: 2/1まで
[5] その他の制限: 特になし。

78:デフォルトの名無しさん
09/01/31 16:25:12
n回の試行でlog_10(n)以下の数字が全て生成出来るは合ってるか?

79:デフォルトの名無しさん
09/01/31 16:29:35
>>76
だな
コラッツ予想の写像がN→Nへの全単射でないからな
どうにもならん

80:デフォルトの名無しさん
09/01/31 16:43:13
別に、分岐があってもいいんだ。 全ての数字が生成出来るなら1へたどり着けるからな。
n回試行でlog_10(n)以下の数字生成出来るを証明すれば解けるぞ。
この評価は間違ってはいないと思うが。
10^4 = 10000 回試行で4以下を生成すればいいという余裕と思われる評価。

81:デフォルトの名無しさん
09/01/31 16:50:01
2進数だと、シフト(2倍する)と1を加えるで、全ての数字が生成出来るが
同じような理屈でできないか?

82:デフォルトの名無しさん
09/01/31 17:20:24
>>77
おいおいVBってなんだよw

83:デフォルトの名無しさん
09/01/31 17:27:03
ろだのPOSシステムの問題どなたかお願いします。

84:デフォルトの名無しさん
09/01/31 17:43:24
>>83
>>1くらいよめ
読む前に死ね

85:デフォルトの名無しさん
09/01/31 17:44:42
>>46
ハミング問題が15点とかきついな。

86:デフォルトの名無しさん
09/01/31 18:41:57
int isHamming(int n)
{
while(n % 2 == 0) n /= 2;
while(n % 3 == 0) n /= 3;
while(n % 5 == 0) n /= 5;

return n == 1 ? 1 : 0;
}
この程度の関数で十分だろ

87:デフォルトの名無しさん
09/01/31 19:11:33
wwwwwwwwwwwwwwwwwwwwww

88:デフォルトの名無しさん
09/01/31 20:13:36
>>77
例外処理してない&動くかどうかしらんが、

class jusu{ public: virtual int p(){ return 0; } };
class orenji : public jusu{ public: int p(){ return 120; } };
class kora : public jusu{ public: int p(){ return 120; } };
class saida : public jusu{ public: int p(){ return 120; } };
class okane{ int _10, _50, _100, _500, _1000;
public: okane(){} okane(int a, int b, int c, int d, int e){ _10=a; _50=b; _100=c; _500=d; _1000=e; }
int p(){ return _10*10+_50*50+_100*100+_500*500+_1000*1000; }
};
class hanbaiki{ public: okane Buy(okane kane, int o, int k, int s, jusu *syohin){
int out=0;
for(int i=0; i<o; ++i, syohin[out++] = orenji());
for(int i=0; i<k; ++i, syohin[out++] = kora());
for(int i=0; i<s; ++i, syohin[out++] = saida());
int turi = kane.p()-o*orenji().p()+k*kora().p()+s*saida().p();
int _1000=turi/1000; turi-=_1000; int _500=turi/500; turi-=_500; int _100=turi/100; turi-=_100;
int _50=turi/50; turi-=_50; int _10=turi/10; turi-=_10;
return okane(_10, _50, _100, _500, _1000);
}};
int main(){ jusu syohin[100]; okane oturi = hanbaiki().Buy(okane(1,1,1,1,1), 1, 1, 1, syohin); return 0; };

89:デフォルトの名無しさん
09/01/31 20:21:46
ちょっとなおした。でも多分まだ間違ってる。でもやるきないのでこれで終わり。

class jusu{ public: virtual int p(){ return 0; } };
class orenji : public jusu{ public: int p(){ return 120; } };
class kora : public jusu{ public: int p(){ return 120; } };
class saida : public jusu{ public: int p(){ return 120; } };
class okane{ int _10, _50, _100, _500, _1000;
public: okane(){} okane(int a, int b, int c, int d, int e){ _10=a; _50=b; _100=c; _500=d; _1000=e; }
int p(){ return _10*10+_50*50+_100*100+_500*500+_1000*1000; }
};
class hanbaiki{ public: okane Buy(okane kane, int o, int k, int s, jusu *syohin){
int out=0;
for(int i=0; i<o; ++i, syohin[out++] = orenji());
for(int i=0; i<k; ++i, syohin[out++] = kora());
for(int i=0; i<s; ++i, syohin[out++] = saida());
int turi = kane.p()-o*orenji().p()+k*kora().p()+s*saida().p();
int _1000=turi/1000; turi-=_1000*1000; int _500=turi/500; turi-=_500*500; int _100=turi/100; turi-=_100*100;
int _50=turi/50; turi-=_50*50; int _10=turi/10; turi-=_10*10;
return okane(_10, _50, _100, _500, _1000);
}};
int main(){ jusu syohin[100]; okane oturi = hanbaiki().Buy(okane(1,1,1,1,1), 1, 1, 1, syohin); return 0; };

90:デフォルトの名無しさん
09/01/31 20:30:39
0TEN

91:デフォルトの名無しさん
09/01/31 21:03:02
>>89
1660円入れて、おつりが1780円?

92:デフォルトの名無しさん
09/01/31 21:06:48
_10とかの変数名見てふと思ったんだけど、
Javaの変数名って日本語文字使えるのん?


93:デフォルトの名無しさん
09/01/31 21:09:04
使えない

94:デフォルトの名無しさん
09/01/31 21:12:49
使えるよw

95:デフォルトの名無しさん
09/01/31 21:16:23
試してみればいいよ

96:デフォルトの名無しさん
09/01/31 21:19:17
まじだ、JAVAのパーサはUNICODEで解釈するのか。

97:デフォルトの名無しさん
09/01/31 21:19:58
あ、やっぱりだめなのね。
わしの持ってる本にはウムラウトとかが許されるって書いてあるから
漢字もできるのかと思った。

98:デフォルトの名無しさん
09/01/31 21:20:43
あれw
使えるの? あはーん?

Visual Studio 2008はJ++廃止されちゃったから試せない。

99:デフォルトの名無しさん
09/01/31 22:17:54
C#は使えるな

100:デフォルトの名無しさん
09/01/31 23:23:38
1] 授業単元:数値計算演習
[2] 問題文:次の二階微分方程式を解け。初期値は適当にとれ。
dv_x/dt=x/(x^2+y^2) , dx/dt=v_x
dv_y/dt=y/(x^2+y^2) , dy/dt=v_y
 [3.1] OS: Windows
 [3.2] コンパイラ名:Borland C++ Compiler、bcc developer
 [3.3] 言語: C
[4] 期限:2月2日
[5] その他の制限:常微分方程式のルンゲクッタでググって調べたんですが、
この問題は変数が多くて応用できませんでした。どなたかよろしくお願いします。

101:デフォルトの名無しさん
09/02/01 01:04:09
>>100
まあ、この式をどう読むのかも知らん

102:デフォルトの名無しさん
09/02/01 01:05:40
>>98
J++でできるからといってJAVAでできると言ってしまうのはひどい
逆にJAVAで可能なのかどうかを調べる為にJ++を使用するのもひどい

103:デフォルトの名無しさん
09/02/01 01:06:35
>>91
おつり計算のところ、括弧忘れてるね

104:デフォルトの名無しさん
09/02/01 02:33:56
>>100
ルンゲクッタ使うならこんな感じでいい希ガス
URLリンク(kansai2channeler.hp.infoseek.co.jp)

105:デフォルトの名無しさん
09/02/01 12:03:43
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC2005EE
 [3.3] 言語:C++
[4] 期限:09/02/03迄
[5] その他の制限:問4以外は#include <stdio.h> void main(){  ではじまること。
問1はURLリンク(kansai2channeler.hp.infoseek.co.jp)
の続きでお願いします。最小値がどうも0になってしまいます。


それではよろしくお願いします。

106:デフォルトの名無しさん
09/02/01 13:10:04
>>105
問1はmin=1000ぐらいにしとけ

それより問5が正常に動作していない件について

107:デフォルトの名無しさん
09/02/01 14:49:43
>>100
微分方程式の数値解としか言われてないならオイラー法で良かろう。一応1次のルンゲクッタだ。

>>105
問2
/* ヘッダとかdefineとか自分で考えてくれ。 */
int main(void){
char user_name[256];
int i,len;
puts("Input User Name");
scanf("%s",user_name);
len = strlen(user_name) - 1;
if( len > 8 || len <= 0 ) { printf("ユーザー名入力エラーです :: len=%d\n",len); exit(1); }
if( !isupper(user_name[0]) && !islower(user_name[0] ) { printf("ユーザー名の先頭文字が異常です :: %c\n", user_name[0]); exit(1);}
for(i=0;i<8;i++) if( !isalnum(user_name[i])) { printf("ユーザー名の一部が異常です :: %s\n", user_name); exit(1);}
sprintf(user_name,"メールアドレス : %s@%s",user_name,"helloworld.com");
puts(user_name);
reutrn 0;
}

108:デフォルトの名無しさん
09/02/01 15:10:38
if( !isupper(user_name[0]) && !islower(user_name[0] ) {
if( !isalpha(user_name[0]) ) {

for (i=0;i<8;i++)
for (i=1;i<len;i++)

sprintf(user_name,
printf(

puts(user_name);

109:デフォルトの名無しさん
09/02/01 17:19:22
>>105
問1に関して
maxとminを0で初期化するのは適切ではない
2個目のfor文の前で
max=a[0];
min=a[0];
のようにすべき

110:デフォルトの名無しさん
09/02/01 18:30:45
>>105
問4
#include <stdio.h>
#include <math.h>
void main(){
int a,b,c;
double x1,x2;
int D;
printf("a = ");scanf("%d",&a);
printf("b = ");scanf("%d",&b);
printf("c = ");scanf("%d",&c);
D = b*b - 4*a*c;
if(D > 0){
x1 = (-b - sqrt(D))/ 2*a;
x2 = (-b + sqrt(D))/ 2*a;
printf("二次方程式 %d x^2 + %d x+ %d = 0 は相異なる2つの実数解を持ち、解の値は%.2fと%.2fです。\n",a,b,c,x1,x2);
}
else if(D == 0){
x1 = -b / 2*a;
printf("二次方程式 %d x^2 + %d x+ %d = 0 は重解を持ち、解の値は%.2fです。\n",a,b,c,x1);
}
else{
printf("二次方程式 %d x^2 + %d x+ %d = 0 は実数解を持ちません。\n",a,b,c);
}
}

111:デフォルトの名無しさん
09/02/01 19:04:47
>>105 問5
#include <stdio.h>
void main(){
int i;
char str1[256];
char str2[256];
int count1 = 0;
int count2 = 0;
printf("文字列1:");fgets(str1,256,stdin);
printf("文字列2:");fgets(str2,256,stdin);
for(i = 0; str1[i] != '\0'; i++){if(str1[i] == ' ') count1++;}
for(i = 0; str2[i] != '\0'; i++){if(str2[i] == ' ') count2++;}
printf("文字列1中の英単語の数= %d\n",count1+1);
printf("文字列2中の英単語の数= %d\n",count2+1);
printf("英単語の数が多い方の文字列は 文字列%d です。\n",(count1 > count2) ? 1 : 2);
}

112:デフォルトの名無しさん
09/02/01 20:27:47
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: ([2009年02月2日 20:00まで]
[5] その他の制限:


よろしくお願いします。


113:デフォルトの名無しさん
09/02/01 21:47:23
>>112
式の長さの上限は?

114:デフォルトの名無しさん
09/02/01 22:14:05
>>113
特にありません

115:デフォルトの名無しさん
09/02/01 22:40:06
>>112 括弧を対応させる方法が思い出せない
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char b[256], *p = b;
double t(void){
  double t = 0;
  while(1){
    if(isspace(*p)) p++;
    else if(*p == '*'){ p++; t *= strtol(p, &p, 10);}
    else if(*p == '/'){ p++; t /= strtol(p, &p, 10);}
    else if(isdigit(*p)) t = strtol(p, &p, 10);
    else return t;
  }
}
double e(double r){
  while(1){
    if(isspace(*p)) p++;
    else if(*p == '\0') return r;
    else if(*p == '+'){ p++; r += t();}
    else if(*p == '-'){ p++; r -= t();}
    else r = t();
  }
}
int main(int c, char *v[]){
  FILE *in, *out;
  if(c < 3 || (in = fopen(v[1], "r")) == NULL ||
    (out = fopen(v[2], "w")) == NULL) return 1;
  fscanf(in, "%255[^\n]", b);
  fprintf(out, "%g\n", e(t()));
  return fclose(in), fclose(out), 0;
}

116:デフォルトの名無しさん
09/02/01 22:42:36
【質問テンプレ】
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク): URLリンク(keisan.casio.jp)
上記のリンクの様に、
変数x、平均μ、標準偏差σを与えて
正規分布の確率密度 f(x)、下側累積確率 P(x)、上側累積確率 Q(x)を求める関数を実装したいです。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc 3.4.4)
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: 2009年02月02日12:00まで
[5] その他の制限:

過去ログ等を漁りましたがありませんでした。
よろしくお願いします。



117:116
09/02/01 23:00:56
なお、以下のような、平均0、標準偏差1の場合に
下側累積確率、上側累積確率を求める関数を見つけたのですが、
どのように変更を加えて良いのかわかりませんでした。

ご教授お願いします。


#include <math.h>

#define PI 3.14159265358979323846264

double p_nor(double z) /* 正規分布の下側累積確率 */
{
int i;
double z2, prev, p, t;

z2 = z * z;
t = p = z * exp(-0.5 * z2) / sqrt(2 * PI);
for (i = 3; i < 200; i += 2) {
prev = p; t *= z2 / i; p += t;
if (p == prev) return 0.5 + p;
}
return (z > 0);
}

double q_nor(double z) /* 正規分布の上側累積確率 */
{
return 1 - p_nor(z);
}

118:デフォルトの名無しさん
09/02/01 23:48:49
>>107-111
ありがとうございます。
問5はできたのですがそれ以外ができません。
問1は>>109の通りにやったら最小値でました!ありがとうございます。
平均値はどのようにして出せばいいのでしょうか?
それではよろしくお願いします。

119:デフォルトの名無しさん
09/02/01 23:53:00
>>118
> 平均値はどのようにして出せばいいのでしょうか?
値を全部足して、それを値の個数で割る

120:デフォルトの名無しさん
09/02/01 23:53:40
>>118
>問5はできたのですがそれ以外ができません。
難しくて全く理解できないのか、自分で作ってバグがでるのか、何を求めているのか。
言われなきゃ分からんとはな。

121:デフォルトの名無しさん
09/02/02 00:12:12
>>119>>120
ごめんなさい。質問する以前の問題でしたね・・・。

問1:全ての値の合計の仕方がわかりません。
問2:>>107を見てやってみたのですがバグが出てしまって、自分で直そうとしたんですが難しくて手のつけようが・・・。
問3:問2を少し弄れば出来そうな気はします
問4:バグがでます

122:デフォルトの名無しさん
09/02/02 00:12:29
あぁ、またsage忘れたorz

123:デフォルトの名無しさん
09/02/02 00:21:37
これはひどい

124:デフォルトの名無しさん
09/02/02 00:39:39
>>121
合計の出し方
sumを0に初期化
2個目のfor文の中でsum+=a[i];

エラーメッセージを貼るなりしてくれないと
どんなバグが出てるのかわからない

125:デフォルトの名無しさん
09/02/02 00:48:26
>>124
問2>>107を実行すると
1>.\11.cpp(8) : error C3861: 'strlen': 識別子が見つかりませんでした
1>.\11.cpp(9) : error C3861: 'exit': 識別子が見つかりませんでした
1>.\11.cpp(10) : error C3861: 'isupper': 識別子が見つかりませんでした
1>.\11.cpp(10) : error C3861: 'islower': 識別子が見つかりませんでした
1>.\11.cpp(10) : error C3861: 'exit': 識別子が見つかりませんでした
1>.\11.cpp(11) : error C3861: 'isalnum': 識別子が見つかりませんでした
1>.\11.cpp(11) : error C3861: 'exit': 識別子が見つかりませんでした
1>.\11.cpp(14) : error C2065: 'reutrn' : 定義されていない識別子です。
1>.\11.cpp(14) : error C2143: 構文エラー : ';' が '定数' の前にありません。

講義で習ってないものばかりで・・・。
>>108は一体?

問4>>110を実行すると
1>.\11.cpp(12) : error C2668: 'sqrt' : オーバーロード関数の呼び出しを解決することができません。
1> D:\c++\VC\include\math.h(581): 'long double sqrt(long double)' の可能性があります。
1> D:\c++\VC\include\math.h(533): または 'float sqrt(float)'
1> D:\c++\VC\include\math.h(128): または 'double sqrt(double)'
1> 引数リスト '(int)' を一致させようとしているとき
1>.\11.cpp(13) : error C2668: 'sqrt' : オーバーロード関数の呼び出しを解決することができません。
1> D:\c++\VC\include\math.h(581): 'long double sqrt(long double)' の可能性があります。
1> D:\c++\VC\include\math.h(533): または 'float sqrt(float)'
1> D:\c++\VC\include\math.h(128): または 'double sqrt(double)'
1> 引数リスト '(int)' を一致させようとしているとき

126:107
09/02/02 01:10:16
ヘッダ自分で調べるくらいできるだろう。
strlen , exit , isupper , islower , isalnum ググれ。
returnのタイプミスはすまないが、気付かない方も考えてない証拠かと。
return 0; を 「reutrn 0;」と書けば、reutrnを変数などの識別詞とみなすから
「INTMAX 0;」とか「1 0;」と同等に扱われる。
returnに直せば問題解消。無意味だが「reutrn; 0;」とすれば、警告は片方減る。

127:110
09/02/02 01:15:20
>>125
VCでビルドしなかったのは俺のミスだ
sqrt(D)をsqrt((double)D)に直してくれ

128:デフォルトの名無しさん
09/02/02 01:19:33
>>126
仰るとおりです。申し訳ありません。
>>127
ありがとうございます
できました!

129:デフォルトの名無しさん
09/02/02 01:24:31
>>125
>>108>>107の修正分を書いてる。
if( !isupper(user_name[0]) && !islower(user_name[0] ) {

if( !isalpha(user_name[0]) ) {
にする。
一行しかないものは削除

130:デフォルトの名無しさん
09/02/02 03:08:57
>>117
関数の引数を↓のようにして(muは平均sigmaは標準偏差)
double p_nor(double z, double mu, double sigma)

変数を宣言しているすぐ下に
z = (z-mu)/sigma;
を追加すればおk

131:116
09/02/02 03:27:12
>>130
できました!
こんな夜中にありがとうございます!

t = p = z * exp(-0.5 * z2) / (sqrt(2 * PI) * sigma);
のように、ここにもsigmaをかけなければいけないと思ってて
3日間ほどずっと悩んでました。

ほんとありがとうございます!

132:デフォルトの名無しさん
09/02/02 06:14:06
fprintfとfscanfを同時に使用する場合、fopenのモードは何にすれば良いのでしょうか?

当方初心者でかなり無知ですがよろしくおねがいします。

133:デフォルトの名無しさん
09/02/02 06:55:57
自己解決したすまね。
fopenを別々ですね。

134:デフォルトの名無しさん
09/02/02 10:57:09
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C++
[4] 期限: 2009年02月4日 まで
[5] その他の制限:

C言語の宿題だったのでお願いしました。
他の方と系統は違いますが、よろしくおねがいします。

135:デフォルトの名無しさん
09/02/02 11:47:57
フローチャートくらい・・・
って思ってしまう俺は疲れてるのかな。

136:デフォルトの名無しさん
09/02/02 11:49:01
疲れているなら、風呂に入っちゃ~

137:デフォルトの名無しさん
09/02/02 11:50:34
一緒に入りませんか?

138:デフォルトの名無しさん
09/02/02 12:07:40
おれバイト&社会人でプログラム8年くらいやってるんだけど
フローチャートって使ったことない。使うもんなの?

139:デフォルトの名無しさん
09/02/02 12:09:11
>>133
ふつうは "r+" とか "w+" だな
同時と言っても順序・タイミング考えないとぐちゃぐちゃになってしまうが

140:デフォルトの名無しさん
09/02/02 12:09:31
>>138
今はどうか知らんけど、パチンコやパチスロのソフトは認可通すのに必須だとか?

141:デフォルトの名無しさん
09/02/02 12:16:55
>>138
使う場合もあるしない場合もあるけど
ISOなんちゃらの監査の時に資料がいるので一応作っている

142:デフォルトの名無しさん
09/02/02 12:39:06
>>140-141
そういう使い方なのか・・・

フローチャート書けるってことは、論理がわかってるってことだから
結局同じ手間でソースかけるような気がするんだよね。
だからフローチャートの必要性がわからんかった。

143:デフォルトの名無しさん
09/02/02 13:30:04
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio
 [3.3] 言語: C言語
[4] 期限: ([2009年02月3日 23:00まで]
[5] その他の制限:


144:デフォルトの名無しさん
09/02/02 13:47:15
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):URLリンク(beatguiter.xxxxxxxx.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: ([2009年2月2日0:00まで]
[5] その他の制限: 特にないが構造体とファイル処理まで習いました。

145:デフォルトの名無しさん
09/02/02 14:10:00
[1] 授業単元: 人工知能演習
[2] 問題文(含コード&リンク):
Hopfieldネットワークの連想う記憶に関する以下の2つの課題を行いなさい。
Hopfieldネットワークとしては、ニューロン数N=63のものを考える。また記憶さ
せるパターンは、numbers.txtにある、0~9までの数字のイメージをもちいる。
課題→URLリンク(kansai2channeler.hp.infoseek.co.jp)
numbers.txt→URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2月4日23:59まで
[5] その他の制限: 特になし

146:デフォルトの名無しさん
09/02/02 14:21:34
>>145 追記です

よろしくお願いします。助けてください。

147:デフォルトの名無しさん
09/02/02 14:43:29
>>144 問1(exam01)を気まぐれにソースかいてみた。パーツに分けて書いた。

int main(void){
int Ary[5],i;
int Sum,Max,Min;
for(i=0;i<5;i++){ // 入力部
printf("Input Data Ary[%d] ?? ",i);
scanf("%d",Ary+i);
}
for(i=Sum=0;i<5;i++){ // 最大値計算部
Sum += Ary[i];
}
Max = Min = Ary[0]; // 0個目までの最小値最大値
for(i=1;i<5;i++){ // 1~4個目までの最小値最大値
if(Ary[i]>Max) Max = Ary[i];
if(Ary[i]<Min) Min = Ary[i];
}
// 結果出力
printf("\t合計値 = %5d (Sum)\n",Sum);
printf("\t最小値 = %5d (Min), 最大値 = %5d (Max)\n",Min,Max);
printf("逆順:");
for(i=4;i>=0;i--){ // 逆順(forのデクリメント使用)
printf("%+5d ",Ary[i]); // インクリメントが良ければ書き直してくれ
}
return 0;
}

148:デフォルトの名無しさん
09/02/02 15:17:00
>>147
課題1のすっごいわかりやすかったです!!!
ありがとうございます、助かりました!!!

@課題2・3誰か助けてください orz


149:デフォルトの名無しさん
09/02/02 15:47:11
>>144,148
課題2
#include<stdio.h>
void put_n(char c,int n){
while(n--)printf("%c",c);
printf("\n");
}
int main(void){
int i,n;
scanf("%d",&n);
while(n<=0){
printf("正の整数を入力してください。\n");
scanf("%d",&n);
}
for(i=1;i<=n;i++)put_n('*',i);
printf("\n");
for(i=n;i;i--)put_n('*',i);
return 0;
}

150:デフォルトの名無しさん
09/02/02 16:24:03
課題3.コメントアウトつけなかったけど、ま分かるだろう。
#include <stdio.h>
#include <string.h>

int count_char(const char* s, char c){
int i,length,count=0;
length = strlen(s)-1;
for(i=0;i<length;i++) if( s[i] == c) count++;
return count;
}

int main(void){
int Size,i,tmpCount;
char strBuff[5][256];

for(i=0;i<5;i++){
printf("Input String (%d) ?? ",i);
scanf("%s",strBuff[i]);
}

for(i=0;i<5;i++){
tmpCount = count_char(strBuff[i],'a');
if(tmpCount == 0) continue;
printf("文字列[%s]に含まれる'a'の個数は%2dです\n",strBuff[i],tmpCount);
}
return 0;
}

151:デフォルトの名無しさん
09/02/02 16:25:28
>>149
課題提出に問題ないと思うけど
問題文の解釈は自分ではこうなるけど、、、
while(n<=0){
printf("Input n ?? ");
scanf("%d",&n);
if(n>0) break;
printf("正の整数を入力してください。\n"); //問題文から警告と読み取るとこの位置
}
for文と条件演算子使うと1行で(簡単なんだか難解なんだか)
// for(Size=0;Size<1;Size<1?puts("正の値を入力してください"):0 ) scanf("%d",&Size);



152:デフォルトの名無しさん
09/02/02 16:37:51
>>151
scanf("%d",&n);
while(n<=0){
printf("正の整数を入力してください。\n");
scanf("%d",&n);
}

入力部はこれでひと塊なんだ

153:デフォルトの名無しさん
09/02/02 16:48:57
>>144 です

>>150 を試してみましたが
色々入力してみて結果をみると
a が含まれてるのに表示されないのがあります
どう改善すればいいでしょうか;;;

154:デフォルトの名無しさん
09/02/02 16:51:16
>>153
fgets を使う

155:デフォルトの名無しさん
09/02/02 17:03:33
>>154
fgets って言うのは習ってないので
どこに組み込めばいいか分からないです…。

156:150-151
09/02/02 17:11:59
>>152
自分でコンパイルしてなかった。すまん。

>>153>>155
strlenが改行コード含むと思ってプログラムしてたから、自作関数の-1を消してもらえば大丈夫だと思う。

157:デフォルトの名無しさん
09/02/02 17:14:29
>>156
-1を消したらうまくできました!ありがとうございます^^

>>147,149,150,151,152,154,156
いい人が沢山居て本当に助かりました☆
皆さんありがとうございました!!!

158:デフォルトの名無しさん
09/02/02 18:50:58
>>143
読んでないけど、>>115で不満なのか?


159:デフォルトの名無しさん
09/02/02 20:53:12
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++Compiler 5.5
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語
[4] 期限: 2月5日まで
[5] その他の制限:C言語は一通り習ってます。

(1)がさっぱりわかりません・・・・。よろしくお願いします。

160:デフォルトの名無しさん
09/02/02 21:01:55
(x^n) mod m

161:デフォルトの名無しさん
09/02/02 21:04:48
>>160
はええな
マジで?
おれより速い奴がいるなんて興奮して勃起しちゃった

162:デフォルトの名無しさん
09/02/02 21:10:20
>>160
すごいですね!ありがとうございます。

163:デフォルトの名無しさん
09/02/02 21:20:28
>>160
質問者じゃないんだけど
y=1;z=x;
for(i=n;i>0;i>>=1){  ←i>>=1これどういう意味ですか?
if(i%2) y=(y*z)%m;  ←これなんでiが偶数のときは処理しないんですか?
z=(z*z)%m;
}
return y;

164:デフォルトの名無しさん
09/02/02 21:31:18
>>163
URLリンク(www2.cc.niigata-u.ac.jp)

165:デフォルトの名無しさん
09/02/02 21:36:58
>>163
>for(i=n;i>0;i>>=1){  ←i>>=1これどういう意味ですか?
iを右に一つシフトした結果をiに代入する。
結果、iが二分の一になる。


166:デフォルトの名無しさん
09/02/02 21:38:49
>>165
>結果、iが二分の一になる。
端数切捨てね。
5(101)→2(10)

167:デフォルトの名無しさん
09/02/02 22:01:27
[1] 授業単元:DirectX研究2
[2] 問題文(含コード&リンク):
サイコロを転がして目を決める。
 ・テーブルとサイコロを作成する。
 ・キー操作でサイコロを投げ下ろすように振る。
 ・落下してきて,1つの目を上にして止まる。
 ・何度でも遊べる

 ◎テーブルにサイコロの影がある
 ◎回転しながら落下してくる
 ◎自由な方向から見ることができる
 ◎テーブルの上でサイコロは跳ね,転がる。
 ◎サイコロとして正しい
URLリンク(pub.idisk-just.com)
を参考にしてよい。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC8 or VC9
 [3.3] 言語:C/C++どちらでも可
[4] 期限: 2月10日まで
[5] その他の制限:DirectXの課題ですがよろしくお願いいたします。

168:デフォルトの名無しさん
09/02/02 22:37:41
ここって宿題じゃなくて単発の質問はいいのかな?

169:デフォルトの名無しさん
09/02/02 22:41:33
スレを勃てるまでもないC/C++の質問はここで 7
スレリンク(tech板)

170:デフォルトの名無しさん
09/02/02 22:41:35
>>168
答えはNO
スレ違い

171:デフォルトの名無しさん
09/02/02 22:43:50
>>169-170
こっちか。ありがとう

172:デフォルトの名無しさん
09/02/02 22:48:04
内容:[1] 授業単元: プログラミング
[2] 問題文:Visual c++を使って大富豪を作りなさい。
      ルールは、8切りのみです。ペア、階段等は無しにします。 CPUは1名とします。
カード枚数は10枚ずつで、ジョーカーは無しです。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:Visual c++
[4] 期限: できれば早めに・・・・
[5] その他の制限: まだ基礎段階なので、なるべく簡単なプログラムがいいです。         画像の取り込みとかはせずに、文章で表示すればいいらしいです。 Visual c++がよくわからないので、よろしくお願いします

173:デフォルトの名無しさん
09/02/02 22:49:49
>>166
スレ違いなのに質問に答えてくれてありがとうございます

174:デフォルトの名無しさん
09/02/02 23:14:27
>>172
CPUとの1対1でいいのか?
ペアなしっていうのは、常に1枚ずつしかカード出せないってことでいい?

ていうかCPUの思考ルーチン作るのって基礎段階を大幅に超える気がするんだが


175:デフォルトの名無しさん
09/02/02 23:21:42
どなたか>>134をお願いいたします。

176:デフォルトの名無しさん
09/02/02 23:29:56
>>175
お願いされるWORDが無い

177:105
09/02/02 23:33:50
問2をここまでやったのですが、どうも何かが違うようで7桁の数字を入力しても学番は7桁~のほうがでてしまうんです。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void main(){

char x[100];
int y,z;

printf("学番を入力:");
gets(x);

y=strlen(x);
     z=atoi(x);

if(y==7 && z==7){
printf("g%s@yahho\n",x);
}
else{
printf("学番は7桁の数字で入力して下さい\n");
}


}


どこがいけないのでしょうか?
何度も住みませんが、よろしくお願いします。

178:デフォルトの名無しさん
09/02/02 23:37:27
>>175
バブルソート フローチャート
でググれ

179:デフォルトの名無しさん
09/02/02 23:40:46
>>177
Z==7がまずい
というかそれ、問3じゃないのか?

180:デフォルトの名無しさん
09/02/02 23:44:31
>>179
あ、ごめんなさい。問3でした

z==7がいけない、ということは
y==7 か z==7  どちらかしか使用してはいけないということなのでしょうか
文字数が7、尚且つ数字であるとき、という風にしたいのですが・・・

181:デフォルトの名無しさん
09/02/02 23:57:45
>>172
仕様を、常に自分からで敵は出せる最小を必ず出す、とすれば楽になる。
が、10行20行で分かりやすく纏めるのやファイルうpはめんどい。

流れの案だけ、書いとく。

全体 [シャッフル]->[配布]->[スタート(自分の番)]->[ループ&終了判定]->[終了時コメント]->end
ループ部分
自分の番:自分のカードを printf("%d:%d ",i%10,ME[i]);とかで表示
scanfでキーボードの1,2,3,...,9,0を選択。フラグ処理などしないと、同じカード捨てる事になる。
相手の番:場に出ている番号(初めは0)より大きい最小のカードのインデックスを計算
あればそのインデックス。無ければ自分の番に。
細かいシステム管理(枚数チェックとか、場のカードの数・切るとか)も必要だし、
[シャッフル]7行 [配布]2~5行 [ループ&終了判定]30行位[終了時コメント]3行
整理して、こんなもんかな?

182:デフォルトの名無しさん
09/02/02 23:57:45
>>180
言ってることとやってることがめちゃくちゃだぞ

数字かどうか判断するにはxに格納された文字が
'0'と'9'の間にあるかどうかを判断すべき

それと宿題程度ならいいと思うが
getsはなるべく使わない方がいい

183:デフォルトの名無しさん
09/02/03 00:00:57
>>182
よく使ってるscanfも曲者と聞きますし、fgets&sscanfが良いと聞きますが
宿題レベルでもでしょうか?実感ないのですが。

184:デフォルトの名無しさん
09/02/03 00:01:39
z = atoi(x) だから
z==7だと zが7かどうかを判定してることになってしまう。
ほしいのは7桁かどうかだから、これはまずい。

あとはzが7桁の数字かどうか判定すればいいだけだよ。

それとgets()は使わない方がいい。
この辺参考に
URLリンク(www.linux.or.jp)



185:デフォルトの名無しさん
09/02/03 00:05:49
>>183
オーバーフローするような値を
敢えて入力するやつはいないと思うから
宿題レベルでとやかく言われることはないんじゃね?
でもリスクは少なくしておくべき

186:デフォルトの名無しさん
09/02/03 00:05:57
y=strlen(x);

bool b = true;
int i;
for( i = 0; i < 7; ++i ){
if( x[i] < '0' || x[i] > '9' ) b = false;
}
if(y==7 && b ){
printf("g%s@yahho\n",x);
}
else{
printf("学番は7桁の数字で入力して下さい\n");
}

187:デフォルトの名無しさん
09/02/03 00:06:50
>>174
出せるカードの中で一番弱いカードを出す程度で十分。
商用ゲームですらこれのことあるし。

188:デフォルトの名無しさん
09/02/03 00:07:33
>>174
常に1枚だすので大丈夫です。よろしくお願いします。

189:デフォルトの名無しさん
09/02/03 00:17:01
C言語、プログラミング基礎の問題です。

整数型変数xに値16を代入文で直接代入する代わりに、ポインタ変数を用いて
間接的に行う方法を与えよ。

とても簡単だと思うのですがわからなくて。。。
お願いします

190:デフォルトの名無しさん
09/02/03 00:21:08
>>189
int x;
int *px;
px = &x;
*px = 16;

こういうことかな?

191:デフォルトの名無しさん
09/02/03 00:23:53
もしくは px[0] = 16 も。ポインタ理解できると→*(&px[1]-1)=16 でもできる事がわかる。

192:デフォルトの名無しさん
09/02/03 00:24:34
>>182
>>184
ありがとうございます。おかげさまで無事できました!

授業ではgets()しか習っていませんでしたが使わないほうがいいのですね。勉強になります。

193:181
09/02/03 00:40:07
シャッフルだけ。
大富豪以外にもカードゲームボードゲームでも同じ事するはずだから、良いソース持ってる人いるだろうケド
山のシャッフルは、短絡的に実装しました。
バグさえなければ、大雑把にCARD_NUMの2乗オーダーの計算だと思うので
10000枚とかでなければ気にする事無いと思います。

#define CARD_NUM (13*4)
int main(){
int cards[CARD_NUM];// カード番号とカードの数字を対応
int yama[CARD_NUM];// カードをシャッフルして代入
int i,j,ran;
srand((unsigned) time(NULL));

for(i=0;i<CARD_NUM;i++){ cards[i]=i; yama[i]=-1; }
for(i=0;i<CARD_NUM;i++){
ran = rand()%(CARD_NUM);
if(yama[ran]==-1) yama[ran]=i; //トランプの数字にするには yama[ran] = i/4;
else i--; //やり直し
}
/* シャッフル検査 */
for(i=0;i<4;i++){
for(j=0;j<13;j++) printf("%2d/",yama[i*13+j]);
puts("");
}
return 0;
}

194:デフォルトの名無しさん
09/02/03 00:49:48
>>190 >>191
ありがとうございます!!

あと、while(条件){作業}
を、if文とdo-while文を使って表現すると、どうなるのでしょうか・・・

195:デフォルトの名無しさん
09/02/03 00:57:24
マルチポスト

224 名前:デフォルトの名無しさん[] 投稿日:2009/02/02(月) 22:46:51
while文をif文とdo-while文を使って表現せよ

という問題なんですが…ifも使わなきゃいけないというところがわかりません
どうすればよいのですか??


196:デフォルトの名無しさん
09/02/03 01:00:04
>>195
イタチといわれたので

197:デフォルトの名無しさん
09/02/03 01:02:24
それでも前のスレで答えてくれている人がいるだろ。
チェックしてないのかよ。

198:デフォルトの名無しさん
09/02/03 01:03:38
見たけどあってるかわからなかったんで

199:デフォルトの名無しさん
09/02/03 01:05:39
じゃあこのスレで答えても同じことになるだろ。

200:デフォルトの名無しさん
09/02/03 01:08:58
答え2つあったんですけど、どっちがあってるかわかりますか
このスレは答え教えてくれるんで

201:デフォルトの名無しさん
09/02/03 01:15:05
じゃあもう一個増やしてやるよ。

do{
if(!x){ break; }
/*処理*/
}while(x);



202:デフォルトの名無しさん
09/02/03 01:27:04
暇人・・・ww

203:デフォルトの名無しさん
09/02/03 01:55:24
do {
if(!x) break;
/*処理*/
}while(1);
でもよくね?

204:デフォルトの名無しさん
09/02/03 01:58:34
do {
loop:
    if (!x)
        break;
    /* 処理 */
    goto loop;
} while (0);

205:デフォルトの名無しさん
09/02/03 01:59:27
あ~あ夜は暇だなっと。マジレスでもするか
while(cnd){
/* ○処理 */
}
if(cnd?"GO"[0|0]:0x0)do{
/* ○処理 */
}while("yoru"['-'-'-']?cnd:69);

206:デフォルトの名無しさん
09/02/03 06:08:15
[1] 授業単元:(復習課題) 分岐 繰り返し 一次元配列 2重ループ 2次元配列 文字列(これらどれかを使って解け)
[2] URLリンク(www.pref.fukushima.jp) 問6 問7
[3] 環境
 [3.1] OS:Windows
 [3.2]visual C++
 [3.3] 言語:C++
[4] 期限: 2009年2月4日まで
[5] main関数を使いそれ以外にもユーザ定義関数を1つ以上作成すること。

入力はscanf 出力はprintfでお願いします。
>>46の時は、ほんと助かりました。
今回もお願いします。



207:デフォルトの名無しさん
09/02/03 06:57:53
>>158
実行できなかったもので・・・

208:デフォルトの名無しさん
09/02/03 07:38:52
>>206
問6
URLリンク(kansai2channeler.hp.infoseek.co.jp)

209:デフォルトの名無しさん
09/02/03 07:48:04
>>208
>入力はscanf 出力はprintfでお願いします。
ってかいてあるべ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

210:デフォルトの名無しさん
09/02/03 08:16:43
>>206
問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;
}

211:デフォルトの名無しさん
09/02/03 10:13:29
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
   ・2つの分数の分子と分母を入力すると,それらの和・差・積・商を
    出力する.データは構造体で表現すること.
   ・分数計算では通分・約分には最大公約数が必要になる.通分には分母の最小公倍数が,
約分には最第公約数が必要である.したがってこれらを計算する関数をそれぞれ作る.
   ・最大公約数を求めるには,次のアルゴリズムを使うとよい(ユークリッドの互除法).
    ① mをnで割る (ただしm>n).
    ② ①の割る数を①の余りで割る.
    ③ ②の割る数を②の余りで割る.
    ④ 以下同様に,余りが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] その他の制限: 繰り返し文、条件判断文、構造体を勉強しました。
初心者なので、初心者にもわかるようなプログラムをお願いします。

212:デフォルトの名無しさん
09/02/03 11:25:26
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows Vista 
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: ([2009年02月04日17:00まで]
[5] その他の制限:

213:デフォルトの名無しさん
09/02/03 11:28:51
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows Vista 
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: ([2009年02月04日17:00まで]
[5] その他の制限:

214:デフォルトの名無しさん
09/02/03 11:36:27
>>149
これ見てから考えな。あと、これくらい一つのファイルにまとめろ。

215:デフォルトの名無しさん
09/02/03 11:40:08
>>212
#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;
}

216:デフォルトの名無しさん
09/02/03 11:41:04
>>211
構造体はどういう形で作ればいいんだ?
指定なし?
なしなら授業で作った構造体を1つ晒してくれ

217:デフォルトの名無しさん
09/02/03 11:42:41
>>213
#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;
}

218:デフォルトの名無しさん
09/02/03 12:48:06
>>211
どう?
#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;
}

219:デフォルトの名無しさん
09/02/03 13:18:18
全部bunではじめるなよ。 bunsu とbunsu1じゃ大違いだろ。int int1;と同じ。
編集してみた。
#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;

220:デフォルトの名無しさん
09/02/03 13:28:11
>>219
そんなのを気にするくらいなら
BUNSU bunsu_add(BUNSU a, BUNSU b);
的なのを作ったほうがよくないか?

221:デフォルトの名無しさん
09/02/03 13:32:37
>>220
ツッコミドコロは、そこじゃないな。

222:デフォルトの名無しさん
09/02/03 13:39:36
>>218をbun -> "空白"にWORDで置換してみると
文字数 896 -> 680。実にソースの24%がbun成分です。もはやネタソースだろ。

223:デフォルトの名無しさん
09/02/03 13:39:52
大文字の変数とかやめてよ。
しかも一文字

224:デフォルトの名無しさん
09/02/03 13:47:10
分子が息子で分母がお母さんかw

225:デフォルトの名無しさん
09/02/03 13:49:17
>>222
一文字変数にしてご満悦って、70年代の世界からでも来たのかよ?

226:デフォルトの名無しさん
09/02/03 13:50:00
>>219
通分が分からないって、ありえないだろ。
いじらなくても変数名だけ変えられたし。

227:219
09/02/03 13:50:29
小さいプログラムや、ローカルな変数の場合、無駄に長い変数は望ましくないと考えるが。
a,c,i,xは基本の型で、行列や構造体等A,Ary,Array場合によるが大文字も使う。

特にVBとか別言語触れてからは、使い分けるようになった。
>>224 ソースコードで変な想像したら負け組(new_mom?A.mom*B.son:A.son*B.momとか)

228:デフォルトの名無しさん
09/02/03 13:50:52
>>227
ばかか

229:デフォルトの名無しさん
09/02/03 13:52:31
>>227
バカだから、テストどころかコンパイルもしないで貼ってみたわけね・・・

230:デフォルトの名無しさん
09/02/03 13:52:55
>>227
小学校からやり直せよ

231:デフォルトの名無しさん
09/02/03 13:54:02
>>227
そもそも>>219は計算が間違ってるwww

232:デフォルトの名無しさん
09/02/03 14:09:51
計算しなければどうということはない

233:デフォルトの名無しさん
09/02/03 14:18:21
[1] 授業単元: アルゴリズムと数値計算
[2] ニュートン法とオイラー法で√2の近似値を計算するプログラムを作れ
ただし、計算は50ステップ行い、それぞれの初期値とsqrt(2)との差を表示する事。
初期値は各々が定めてよい
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC2005EE
 [3.3] 言語:C
[4] 期限:09/02/04迄
[5] その他の制限:
文字表示・繰り返し文・条件判断とオイラー法の計算は分かります


234:デフォルトの名無しさん
09/02/03 14:58:41
>>233
オイラー法ってこんなか?
#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;
}


235:デフォルトの名無しさん
09/02/03 15:19:50
>>227
VBに触れたから呪われたんだな

236:デフォルトの名無しさん
09/02/03 16:04:45
>>234
ありがとうございます!
for文の中身1行で表せるんですね。
初期値表示と(double)(2-1)を2.0-1.0など軽く置き換えて完成しました。

237:デフォルトの名無しさん
09/02/03 19:48:11
>>193
O(N^2)じゃなくO(NlgN)だ

238:デフォルトの名無しさん
09/02/03 20:41:50
だいたい、プログラム入れてみるとxln(x)が定数なしで自己相関関数に一致してるくらいだな。
つまり、O(NlnN)だな。でも、NlogNだと思ってて、N^2だったってよりよくない?

239:デフォルトの名無しさん
09/02/03 20:51:59
うん。

240:デフォルトの名無しさん
09/02/03 21:18:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
 角度はラジアン単位(rad),度単位(degree)【°】で表される.さらに 度単位は 32.4°と10進小数表示する場合と
32度24分と度分秒で表示する場合がある.(60秒で1分, 60分で1度)

①2つの角度(度単位)を10進小数点2桁 でキーボードから入力し(例  69.21° と 33.73° ) 
 それらを度分秒単位で 表示させるプログラムを作成しなさい.

②さらに度分秒単位で表示された2つの角度の差を求め,度分秒単位で表示しなさい.
 計算は度分秒単位のまま引き算すること(60進法の引き算アルゴリズムを作成すること).

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年2月4日 13:00
[5] その他の制限: よろしくお願いします

241:デフォルトの名無しさん
09/02/03 21:25:50
キーボードから入力し(例  69.21° と 33.73° )
2バイト文字か?まずその入力ができるかが問題だ。
Alt+半角で全角打てるけど、(例 69.21 と 33.73)の間違えだと言ってくれ。

242:デフォルトの名無しさん
09/02/03 21:37:58
>>241
すみません
半角です

243:デフォルトの名無しさん
09/02/03 22:03:28
>>211のものですが、>>219をコンパイルしたら
和と差が計算できなかったのですが、どうすれば
いいでしょうか?

どなたか教えてください。

244:デフォルトの名無しさん
09/02/03 22:18:25
A.son *= B.mom; B.son *= A.mom; A.mom=B.mom=(A.mom*B.mom); // 通分(約分せず)
GCD = 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);

245:デフォルトの名無しさん
09/02/03 22:23:43
分母: mom
分子: son
っていうネーミングセンスが素敵だ

246:デフォルトの名無しさん
09/02/03 22:36:37
辞書片手に英語にしまくったら単語の意味を忘れて自分で読めないというのは聞かなくもないけれど、
日本語の一部を切り出して英語にするっていうのは新しい。

247:デフォルトの名無しさん
09/02/03 22:40:47
>>240
誤差がぁぁぁ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

248:デフォルトの名無しさん
09/02/03 22:42:30
>>240
#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;
}

249:デフォルトの名無しさん
09/02/03 22:55:09
>>240の人気に嫉妬
#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;
}

250:248
09/02/03 22:57:35
degsubの符号の扱いが全然だめだった。>>248は取り下げます。

251:デフォルトの名無しさん
09/02/03 22:58:00
>>243
そのコードはクズだ。捨てろ。

252:デフォルトの名無しさん
09/02/03 23:00:11
[1] 授業単元:ループ
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2]コンパイラ名とバージョン:C++ Compiler 5.5/Turbo Debugger
 [3.3] 言語:C
[4] 期限:一ヶ月以内
[5] その他の制限:2重ループを使うらしいですが使わなくてもいいそうです。

253:デフォルトの名無しさん
09/02/03 23:01:15
>>244
そこで上書きして残りの積と商をどうするツモリだ。

254:デフォルトの名無しさん
09/02/03 23:03:53
>>253
分母と分子に同じ数掛けてるから大丈夫

255:デフォルトの名無しさん
09/02/03 23:16:22
そうだよね。>>253は2/4拍子と3/6拍子の違いが分かってらっしゃる。
#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;
}

256:デフォルトの名無しさん
09/02/03 23:16:46
どなたか>>134をお願いいたします。ググってもわかりません。。。

257:デフォルトの名無しさん
09/02/03 23:21:21
>>256
一番上に書く名前が分かりません><

マジレスはお断りしておきます

258:デフォルトの名無しさん
09/02/03 23:23:35
>>247
degree[i][1] = (int)((input[i] - (int)input[i]) * 10) * 6;
degree[i][2] = (int)((input[i] * 10 - (int)(input[i] * 10)) * 10) * 6;
この計算式は何なのか、後でAAで提出するように。


259:デフォルトの名無しさん
09/02/03 23:23:40
5秒で答えにたどり着いたけど
134は馬鹿なの?死ぬの?

260:240
09/02/03 23:28:32
>>247-249
ありがとうございました

261:デフォルトの名無しさん
09/02/03 23:34:09
>>256
フローチャートは詳しくないが日本語にそれらしく訳してくと
開始
ファイルを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]を表示
終了

262:デフォルトの名無しさん
09/02/03 23:50:17
>>134
オフィスを入れてなかった。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

263:デフォルトの名無しさん
09/02/03 23:55:15
>>262
力作乙
だが、extention error だ
名前と実体が異なっている

264:デフォルトの名無しさん
09/02/04 00:01:47
>>263
そんな突っ込みは想定していない。

OpenOfficeの操作覚えようかな……。

265:デフォルトの名無しさん
09/02/04 00:25:25
>>252
#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;
}

266:デフォルトの名無しさん
09/02/04 00:56:37
>>172
コンソールアプリでいいんだよね?
言語はCとC++どっち?

267:デフォルトの名無しさん
09/02/04 02:13:27
>>266
>[5] その他の制限: まだ基礎段階なので、なるべく簡単なプログラムがいいです。         画像の取り込みとかはせずに、文章で表示すればいいらしいです。 Visual c++がよくわからないので、よろしくお願いします
C++のWindowアプリケーションを望んでいるようには見えない。
求めてるのは”なるべく簡単”でしょ。

268:デフォルトの名無しさん
09/02/04 14:27:20
[1] 授業単元: プロムラミング演習2
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
 [3.1] OS: Windows
 [3.3] 言語:C言語
[4] 期限:2月5日まで

[5] その他の制限:すみません自力ではわかりません.ご指導お願いします

269:デフォルトの名無しさん
09/02/04 14:46:26
void bitpart(int x)
{
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));
なんかちがう

270:897です
09/02/04 14:51:10
すみません...
打ち間違いでした
printf("bit pattern =%s\n", bitpart(x,bit));
です.すみません

271:デフォルトの名無しさん
09/02/04 14:51:44
>>268
char*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;
}

272:デフォルトの名無しさん
09/02/04 15:00:15
>>271
早い返事ありがとうございます
助かりました

273:897
09/02/04 17:01:19
[1] 授業単元: C言語
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
 [3.1] OS: Windows
 [3.3] 言語:C言語
[4] 期限:2月5日まで

[5] その他:お願いします

274:デフォルトの名無しさん
09/02/04 17:17:20
>>273
void 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;
}

275:デフォルトの名無しさん
09/02/04 17:27:54
>>274
ありがとうございます!!
なんとかいけそうです

276:デフォルトの名無しさん
09/02/04 17:46:14
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: ([2009年02月05日12:00まで]
[5] その他の制限:

よろしくお願いします。

277:デフォルトの名無しさん
09/02/04 18:01:53
>>276
#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;
}


278:デフォルトの名無しさん
09/02/04 18:10:45
> for (c = 0; n / kinshu[i]; ++c) n -= kinshu[i];
c=n/kinshu[i]; n-= c*kinsyu[i];

279:デフォルトの名無しさん
09/02/04 18:37:30
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows XP
 [3.3] 言語: C
[4] 期限: 2009年02月05日まで
問題多いですがよろしくお願いします。

280:デフォルトの名無しさん
09/02/04 18:38:16
[1] 授業単元: C言語
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
 [3.3] 言語:C言語
[4] 期限:2月5日まで
[5] その他: 違うところで同様の質問をして,いろいろヒントをもらった
 のですが,いまいちわかりません.その時こちらを紹介されたので,
 どうかお願いします

281:デフォルトの名無しさん
09/02/04 18:52:39
>>280
int 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;
}

282:デフォルトの名無しさん
09/02/04 19:29:50
>>279
どんだけ丸投げだよ。

283:デフォルトの名無しさん
09/02/04 19:37:05
丸投げスレなんだから当然だろ?


ってこれは・・・w

284:280
09/02/04 19:46:00
>>281
ありがとうございます
助かりました!!

285:Rm
09/02/05 00:09:41
[1] 計算システム(C言語)
[2] N×Nの行列A,Bに大して、次のようなプログラムを作成せよ。
・A+B、A-B、A×Bを出力するプログラム

・Aの逆行列を出力するプログラム(ピボット選択法)

ただし
・Nはdefineで4と定義する。
・A,Bそれぞれの成分データはdouble型配列に保存する。
・行列A,Bの各成分のデータは時間に依存した種から与えられる疑似関数により自動生成する。

URLリンク(mathweb.sc.niigata-u.ac.jp)

実際ほかの課題もわかりません。1は出来ましたが。

[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 5日


よろしくお願いいたします。



286:デフォルトの名無しさん
09/02/05 00:52:15
>>273
URLリンク(kansai2channeler.hp.infoseek.co.jp)

287:280 です
09/02/05 02:14:54
>>281 さんの方から解答をいただいたのですが
main関数の所がいまいちわかりません
できたらもう一度お願いします.

288:デフォルトの名無しさん
09/02/05 02:24:30
>>287
わかりませんもなにも見たまんまpushしてpopしてるだけだと思うが
もう一度といわれてもこれ以外書きようがないと思うべ?
どこがどうわからないか考え直してきなさい

289:280 です
09/02/05 02:39:14
push(21);
push(42);
これがよくわかりません
コンパイルしてもこれしかでないのですが・・・

mainは、任意個数の数字を入力させてそれをpushし、
EOFになったら逆にpopで値を取り出して画面に表示する
みたいな感じにしたいのですが・・

290:デフォルトの名無しさん
09/02/05 02:57:53
>>289
>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;
}

291:280 です
09/02/05 03:03:11
>>290
言葉足らずですみません
夜遅くわざわざありがとうございます


292:デフォルトの名無しさん
09/02/05 03:06:14
十分テストコードになってると思うんだけどな。

293:デフォルトの名無しさん
09/02/05 03:23:22
while(1)
{         
     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;
}

こんな毎日、無限ループって怖いよな;;




294:デフォルトの名無しさん
09/02/05 03:48:10
>>285
和、差、積のやつ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

295:285
09/02/05 04:09:48
>>294

ありがとうございます。よろしければ逆行列プログラムもお願いします。

296:デフォルトの名無しさん
09/02/05 04:54:22
>>295
URLリンク(kansai2channeler.hp.infoseek.co.jp)

297:285
09/02/05 05:24:02
>>296

このような時間帯にわざわざありがとうございます。
おかげ様で助かりました。

298:279
09/02/05 06:58:42
>>282
>>283
確かにこれはひどいですよね…
1問でもいいのでお願いしたいです。
一応自分でもやっていますが、数学が苦手なもので…

299:デフォルトの名無しさん
09/02/05 12:42:16
>>167です。
自己解決したので取り下げます。スレ汚し失礼しました。

300:デフォルトの名無しさん
09/02/05 13:13:46
1] 授業単元: C言語
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
 [3.1] OS: Windows
 [3.3] 言語:C言語
[4] 期限:2月6日まで

[5] その他:お願いします

301:デフォルトの名無しさん
09/02/05 14:25:46
[1] 授業単元:C言語プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで
[5] その他の制限:与えられたプログラムを改造(付け足し)する

302:デフォルトの名無しさん
09/02/05 15:16:54
>>301
#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;
}

303:デフォルトの名無しさん
09/02/05 15:18:39
300 の問題って リダイレクトじゃだめなのか?

304:デフォルトの名無しさん
09/02/05 15:26:50
>>300
#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;
}

305:デフォルトの名無しさん
09/02/05 16:09:19
>>302 "ttion"
>>301
URLリンク(kansai2channeler.hp.infoseek.co.jp)

306: ◆g8eVFLrbyk
09/02/05 16:49:09
[1] 授業単元:C++言語プログラミング
[2] 問題文:URLリンク(www.s.kyushu-u.ac.jp)
問題2と3をおねがいします。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++言語
[4] 期限:明日まで
[5] その他の制限:与えられたプログラムを改造(付け足し)する


307:suzuki
09/02/05 16:59:16
君は不可だ!
調査した上で厳正に処理するから首を洗っとれ

308:302
09/02/05 17:09:27
>>305
あ、ホントだ。俺の間違ってたね。

309:デフォルトの名無しさん
09/02/05 17:27:29
スレチですいません。
今日面接でプログラミングの手書きのテストをやってきました。
テスト終わって家に帰ってから効率のいいコードの書き方を思い出しました。
テスト中は時間のことが気になって思い出せずとりあえず動くコードで書きました。

テストの場合は白紙や書き途中で提出するくらいなら、
とりあえず動くコードで書いておけば特に問題はないですよね?

310:デフォルトの名無しさん
09/02/05 17:30:05
宿題やテストの採点思想次第だわな

311:デフォルトの名無しさん
09/02/05 19:25:48
>>309
「動かないよりマシ」って言って欲しいんだろうけど、
採点者が何を見ているか次第なんじゃね?

Fizz-Buzz問題って日本でも実施してるのかな?

ナベアツ問題は、このスレでも何度か回答されてるよね。

プログラマーなら「FizzBuzz問題」解けるよな?
スレリンク(prog板)
Fizz Buzz(ウィキペディア)
URLリンク(ja.wikipedia.org)
どうしてプログラマに・・・プログラムが書けないのか?
URLリンク(www.aoky.net)

312:301
09/02/05 20:15:18
>>305
すみません。問題が間違ってました
正しくはURLリンク(kansai2channeler.hp.infoseek.co.jp)でした

313:デフォルトの名無しさん
09/02/05 20:23:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
データファイル(URLリンク(kansai2channeler.hp.infoseek.co.jp)) には,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

おねがいします。

314:デフォルトの名無しさん
09/02/05 21:03:57
>>312
#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;
}

315:305
09/02/05 21:07:49
上のプログラムに、入力列としてt、i、o、nの並びが与えられた場合にも入力を終了する機能を追加せよ
例 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の並びでないのでそのまま出力)

316:305
09/02/05 23:50:36
>>314 その手があったか。参ったのでソース貼り付け。
#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;
}

317:301
09/02/06 00:46:55
皆さんありがとうございました

318:デフォルトの名無しさん
09/02/06 02:48:49
[1] 授業単元: C言語
[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日の夜まで

期限がせまっていて申し訳ありませんが自分でできなかったためよろしくおねがいします><

319:デフォルトの名無しさん
09/02/06 03:27:02
#include <stdio.h>
#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;
}



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch