C/C++の宿題片付けます 124代目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
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++の宿題片付けます 122代目(実質123代目)
http://pc11.2ch.net/test/read.cgi/tech/1232029287/
2デフォルトの名無しさん:2009/03/02(月) 02:24:21
>>1 よっし!
C/C++の宿題を片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232001038/
3デフォルトの名無しさん:2009/03/02(月) 04:31:50
http://pc11.2ch.net/test/read.cgi/tech/1232029287/998
前すれ998君、ちょっと職員室に来なさいw
4デフォルトの名無しさん:2009/03/02(月) 23:53:25
[1] 授業単元:画像処理 cプログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8949.txt
[3] 環境
 [3.1] OS: win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: c
[4] 期限: 3日朝まで
[5] その他の制限:よろしくお願いします。
5デフォルトの名無しさん:2009/03/03(火) 00:03:08
>>4
1. (1)i*width+j  (2)i*width+width-j-1
2. i <= 20 → i < 10 と j <= 20 → j < 20
3. 45
6デフォルトの名無しさん:2009/03/03(火) 00:05:12
>>4
1. 構造体がどこから出てきたのか分からない
2. エラーが何を指しているのか分からない
3. 実行してみればいいだろ
7デフォルトの名無しさん:2009/03/03(火) 17:27:25
答えのついている演習問題について質問するのは有りなのですか?
8デフォルトの名無しさん:2009/03/03(火) 17:33:05
>>7
こう言う問題に対してこう言う解答でしたが、理解できません教えてくださいって、
初心者スレにでも書き込め。
9デフォルトの名無しさん:2009/03/03(火) 17:36:27
>>8
ありがとうございました
10デフォルトの名無しさん:2009/03/03(火) 22:43:54
[1] 授業単元:文字入力制限
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8950.txt
[3] 環境
 [3.1] OS: win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: c
[4] 期限: 4日朝まで
[5] その他の制限:現在のプログラムでは始めの入力するところがscanfとなっていますが、gets()かgetchar()で文字列として入力して数字以外を受け付けないように変更してもらいたいです。よろしくお願いします。

11デフォルトの名無しさん:2009/03/03(火) 23:05:41
isdigit関数使え
問題文みてないけど
12デフォルトの名無しさん:2009/03/03(火) 23:23:03
どうプログラムに組み込んでいいかがわかりません。
13デフォルトの名無しさん:2009/03/03(火) 23:32:58
ちょっと見てみたけど恐ろしいプログラムだな…
char str[100];
int i;
gets(str);
i = atoi(str);
でいいんじゃね?
14デフォルトの名無しさん:2009/03/03(火) 23:37:06
15デフォルトの名無しさん:2009/03/04(水) 20:10:47
[1] 授業単元:情報処理入門
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8952.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc 3.4.4
 [3.3] 言語: C言語
[4] 期限: 平成21年3月6日金曜日正午まで
[5] その他の制限:
ライブラリ関数はstdio.hとstdlib.hに書かれているもの以外を使用しないこと。
無効な数値が入力されたら、「Invalid value input.」と表示して入力をやり直すようにすること。
goto文とscanf関数は使用しないこと。


友達がいなくて誰にも聞けません。誰か助けてください。
そもそも何をするプログラムなんでしょうか……
16デフォルトの名無しさん:2009/03/04(水) 20:33:46
友達がいないことがよく分かるな
いい年してボーリングもしたことないのか
17デフォルトの名無しさん:2009/03/04(水) 20:43:05
>>10
gets(char*) 使用禁止てことで
char str[10];
fgets(str,10,stdin), year[1] = atoi(str); // scanf("%d",&year[1]);
fgets(str,10,stdin), month[1] = atoi(str); // scanf("%d",&month[1]);
fgets(str,10,stdin), reset = atoi(str); // scanf("%d",&reset);
18デフォルトの名無しさん:2009/03/04(水) 20:48:36
>>15-16
ボ"ウ"リングだろ。
3と5がちょっと微妙だな
ダブルの時に次の1投が4倍になるようにも読める

ま、書いてあるとおりに組むしかないんだろうな
出来るのはクソプログラムだが
19デフォルトの名無しさん:2009/03/04(水) 20:55:54
アルゴリズムに書いてある事を解釈せずに
そのままプログラムを作ったらおかしな事になりそうだなw
20デフォルトの名無しさん:2009/03/04(水) 21:18:40
ballじゃなくてbawlだったのか
球を投げるからballingと思った
21 ◆RGeAEcUDP2 :2009/03/05(木) 09:56:57
[1] 授業単元: プログラミング 
[2] 問題文(含コード&リンク):入力仕様を、入力座標は最大2桁までの整数を
最大10件までとし、入力範囲のチェックと、最大件数のチェックを行うプログラムの
作成。
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン: MSC Ver.5.1
 [3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: 出来れば、各所にコメントを入れて下さい。
どういうプログラムなのか自分でも把握したいのと、コードの勉強も兼ねて。

よろしくお願いします。
22デフォルトの名無しさん:2009/03/05(木) 10:05:39
日本語でおk
23デフォルトの名無しさん:2009/03/05(木) 10:07:50
>>22
うっそー、やだー、お前、日本語も理解できないで日本人をやってるの?
早く海外に逃亡する準備しとけ?な?w
24デフォルトの名無しさん:2009/03/05(木) 10:13:45
また麻呂かw
25デフォルトの名無しさん:2009/03/05(木) 10:23:37
また麻呂を目の敵にする必死な基地外かw
26デフォルトの名無しさん:2009/03/05(木) 10:24:45
>>21の説明で仕様が正確に理解できたんなら、コード書けよw
書けないなら引っ込んでろ、クズが
27本日のMVP:2009/03/05(木) 10:25:13
22 名前:デフォルトの名無しさん 投稿日:2009/03/05(木) 10:05:39
日本語でおk
28デフォルトの名無しさん:2009/03/05(木) 10:33:23
お前の方が頭がおかしいことに気づけよ、意味わんねぇ=自分が理解していない=日本語が理解できないw
最近、日本語でおkとか言う奴に限って、理解力がないだけだったりするから困るね。
こりゃNHKのことばおじさんも大変だ。ネタがあって良いだろうけどw
29デフォルトの名無しさん:2009/03/05(木) 10:34:35
>>21
問題文が意味不明

>>27
自分の言葉で語れよ
30デフォルトの名無しさん:2009/03/05(木) 10:36:18
業務くせーな
この時期にこんな宿題ありえねーしw
31デフォルトの名無しさん:2009/03/05(木) 10:37:58
けしからんな、バグ仕込んでやろうぜw
32デフォルトの名無しさん:2009/03/05(木) 10:41:56
バグ仕込もうにも意味わからんしw
33デフォルトの名無しさん:2009/03/05(木) 11:48:39
>>29
日本語が理解できないなんて、日本人として恥ずかしくないのかね?
麻呂コンプレックスめw
34デフォルトの名無しさん:2009/03/05(木) 11:50:16
プロでもない麻呂に必死に噛み付く素人w
そもそも、本当のプロなら、こんな場所で油を売っている暇がない。
金を稼ぐためのソフトを、次々と開発するし、金にもならん
初歩的な問題なんて、相手にしないだろ。
35モデム接続:2009/03/05(木) 11:51:21
>>21
#include <stdio.h>
int main(void)
{
int i=0, ii, data[10], sts;
puts("整数を入力してください(EOFは^Dです)");
while(i<10){
sts = scanf("%d", &data[i]);
// printf("<%d>", sts);
if(sts==EOF || sts==0)
break;
if(data[i]>=100 || data[i]<=-100)
puts("2桁までの整数ではありません");
else
i++;
}

puts("入力結果");
for(ii=0; ii<i; ii++)
printf("%d:%d ", ii+1, data[ii]);
return 0;
}
36デフォルトの名無しさん:2009/03/05(木) 12:51:28
在日うぜーw
37デフォルトの名無しさん:2009/03/05(木) 14:56:58
在日日本人です
38デフォルトの名無しさん:2009/03/05(木) 14:58:30
>>37
参政権、ある?
39デフォルトの名無しさん:2009/03/05(木) 15:02:20
>>38
あるアルヨ
40デフォルトの名無しさん:2009/03/05(木) 15:14:19
韓国人が政治家になれる時代だぜw
41デフォルトの名無しさん:2009/03/05(木) 15:14:22
朝鮮人は息をするように嘘を吐く
42デフォルトの名無しさん:2009/03/05(木) 15:42:32
その日本語は変、という奴は、まず自分の日本語力を証明しろ。
ほとんどの人が、この世の中の事実を知らないまま、この世を去っていくわけだが?
あれもこれも、適切に発言できる人がいないことくらい、周知のこと。
お前、警察でもないのに、警察の専門用語とか話せる?
あれだって、他人からしてみれば、日本語か?と思えるものもあるぞw
43デフォルトの名無しさん:2009/03/05(木) 15:48:08
日本語でおk
44デフォルトの名無しさん:2009/03/05(木) 15:49:49
お前らスレ違いも甚だしいぞ
害基地は華麗にスルーじゃなかったのか?
45デフォルトの名無しさん:2009/03/05(木) 15:57:31
>>21 でいうと
問題文冒頭の「入力仕様を、」がまず分からない
「入力座標」が何か分からない
「最大10件」とあるが1件の単位は何?

日本語が不自由なのは問題文の不備に気づかないほうじゃないか?
46デフォルトの名無しさん:2009/03/05(木) 16:07:51
その他、法律でも専門用語はある。というか、定義な。
要は、受け手が知らなければそれまでだし、自分も知らないなら
知らないことは曖昧な発言で場を濁すなってことだ。
文法だって話に出るが、句読点の使い方なども、曖昧。
身内に国語の教員がいるが、指導してみて分かることもあるぞ。
47デフォルトの名無しさん:2009/03/05(木) 16:12:43
n次元座標値を管理してて
'(' <num> { ',' <num> }n ')'
<num> := { '-' } <digit> { <digit> }
<digit> := '0' - '9'
こういうフォーマット入力で
<num> の取りえる範囲が -99〜99 で
上記2次元座標値を 10件登録できるように

なんだかんだで高度だな
48デフォルトの名無しさん:2009/03/05(木) 16:24:23
メモリの確保 と言う言葉だけで、どこまで意味が通じる?
プログラミングでは、動的確保なども話しに入ってくるだろう。
しかし、自作ではメモリ増設にも話が及ぶ。いかに認識の違いが
業界、業種で違ってくることやら。分かったか?知らない奴、
知識の乏しい奴には偉そうに出来る、知ったかぶりの青二才めが。
もう一度、小学生からやり直せ、引きこもりニート
49デフォルトの名無しさん:2009/03/05(木) 16:40:07
>>21は、>>47の考え方であってるんじゃないか?
そのままコード書いてみろよ

>>48はいいすぎです
「小学生からやり直せ引きこもりニート」はないんじゃない?
50デフォルトの名無しさん:2009/03/05(木) 17:24:54
>>49
ニートだから仕方ない
51デフォルトの名無しさん:2009/03/05(木) 17:42:22
[1] 授業単元: プログラミング 

[2] 問題文(含コード&リンク):パスワード認証プログラムをつくりたい。
プログラムの概要は、パスワードを入力し、正常なら"パスワードは正常です。"
と表示し、間違っていれば"パスワードが違います。"という表示してプログラムを
終了する。

入力の仕様は、パスワードは4文字とし、1文字入力される毎に'*'を1個表示する。
4文字入力後パスワードをチェックする。

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: MSC Ver.5.1
 [3.3] 言語: C
[4] 期限: 今週中


学校の課題ではないんだけど、ちょうど春休みになるんで
ここいらで一人前になりたいと思いまして。
参考にしたいんで名人の力をお貸しください
52デフォルトの名無しさん:2009/03/05(木) 17:45:57
>>51
余計なことを書く奴だなw
一人前になりたきゃ自分なりにやってみて
初心者スレで晒せ

標準関数だけだと無理だから
getch() でググれよ
53デフォルトの名無しさん:2009/03/05(木) 18:38:13
>>52
初心者スレに変なキチガイ流れ込ませようとすんじゃねえよクズ
54デフォルトの名無しさん:2009/03/05(木) 20:06:47
自分が知っていること、理解できること だけ が日本語といっている時点で駄目。
分からない奴には、辞書を用いて参照してやっているのに、参照したお前が
日本語を知らなかったんだろ、って魂胆だろ?見え見えなんだよ、相手の揚げ足を
取ろうと必死な姿が。まぁ、所詮、こんなところで去勢を張るだけの、詰らないクズな
人生しか歩めないんだろ、お前らクズはw
悔しかったら、プログラミングで金を稼いでみろ。それも、ひと財産を稼ぐだけでなく
権力を勝ち取るくらいの巨大な額をな。
55デフォルトの名無しさん:2009/03/05(木) 20:29:19
rand君大暴れw
56デフォルトの名無しさん:2009/03/05(木) 21:38:48
>>54
大声上げてどうしたの?
57デフォルトの名無しさん:2009/03/05(木) 21:41:26
君は、この世に様々な分野が存在するのだが、母国語で
それら全てに対して、適切な説明が出来るのかね?

この世の中は、ごく普通に言語弾圧というものがある。
決まっていないことに対しては、そいつが勝手にそう思ったんだろ?
と、よく理解できない、知らない人間に、あたかも多数派が正しいという
洗脳を行う習慣がある。もっと、世の中を世界レベルで見るんだな。

ある国では、タブーとされていることを、別の国では当たり前のように行われている
なんてことも、普通にある。しかし、それを理解しない人は、いくら 言葉 で説明しても
理解できないどころか、そいつの言葉がおかしい、と受け止めるだろう。
58デフォルトの名無しさん:2009/03/05(木) 21:43:06
特に、世の中をまだよく知らず、適切に判断できない未熟者、責任能力に欠ける
未成年、あるいは精神が未発達な大人にも見られる、無責任さ。
ここは見ず知らずの人が閲覧し、書き込みをする無責任な場所でもある。
例え、事実無根、相手が嫌がる発言をしても、余程のことでなければ
まず責任が問われることは無い。が、犯罪予告は、書き込みをした人を
警察を介して特定することがある。

今後、日本ではどこまで言論の自由に対して、制限がされるかは分からないが、
インターネットが普及して、ブログ炎上のようなことが頻繁に起これば、
ある特定の語彙を書き込めない、いわば規制をするかもしれないが、
所詮それらも デジタルデータ に過ぎないのが現状。
姑息な手を使って、規制をすり抜ける輩も出てくるだろう。
イタチゴッコになるだろうけど。

そして、ここで解いている問題も、所詮はデジタルデータの演算などを
人間が理解できるプログラム言語にて記述し、コンピュータはそれを
コンパイルして、コンピュータ言語で解釈するのだ。
59デフォルトの名無しさん:2009/03/05(木) 21:44:36
ねえこれ何の宿題?
60デフォルトの名無しさん:2009/03/05(木) 21:50:17
相手の言っていることが理解できないことに対しては、
相手がまともに言葉を知らない、表現力、語彙が乏しい可能性はあるが、
自分の理解力が乏しいくせに、理解できましぇ〜ん、なんてことを
いちいち表現する必要があるのかね?まぁ、世の中、自分が理解できる事、
人間なんてごく一部だが。自分が気に入らなければ、気に入らないことを
している人間に対して、何かしら嫌がらせ、圧力を掛けてくる不届き者はいる。
第一、自分が関与する人間は、この世の何パーセントだと思っているんだ?

一年生になったら、友達100人できるかな?100人?名前を知っているくらいで
相手のことをよく知らないくせに、友達になった気になる?
仮に、100人の人と話をするとしよう。1人1分だけでも、1時間40分掛かるし、
1分で出来る話ってどんなもん?しかも、会うための時間も割かなければならない。
そう、例え同じクラスになった人でも、ごく一部しか友達になっていないんだよ。
また、卒業したら、何人とその後、連絡を取っているか?

人それぞれ職場が違う、職場以外の人間とも会うだろうけど、
プライベートで会う人は、何人?芸能人が芸能人全員と
交流があると思っている?同じ業界にいても、関わる人はごく一部。

そう、この世は自分が理解できないことだらけ。だから、理解できる
似た思想のもの同士が集まる習性がある。ただ、その集団が
変に大きくなると、国家権力にまで影響力が及ぶ危険性もある。
人間社会を統率するのは、本当に苦労する役割だと思いますよ。

最後に、日本語でおk、と指摘するくらいなら、何が問題か?
指摘くらいしろよ。でなければ、結局、自分がその意見を
気に入らなかった、としか、相手には受け止めてもらえないよ。
61デフォルトの名無しさん:2009/03/05(木) 21:58:47
>>60
>最後に、日本語でおk、と指摘するくらいなら、何が問題か?
>指摘くらいしろよ。

>>45を読もうね。
62デフォルトの名無しさん:2009/03/05(木) 21:58:51
>>59
いつものキチガイだからスルー推奨
63デフォルトの名無しさん:2009/03/05(木) 22:12:30
もうこのスレを見ている人は、普通に理解しているだろう。
論より証拠。そう、言うくらいなら、四の五の言ってないで
自分が書いた問題を解くソースコードを提示すれば良いだろ?
よく理解していなくても、もう決まりきった処理をするコードは
定石というものがこの世にはあり、それを引用するだけで良いが。
クイックソートを記述する問題が出ても、世の中に普通に出回って
使われているコードを丸写しで提出すれば、それで評価はされるからねぇ。
ただ、それはその場だけでの評価。社会では、今後、予期せぬ
自分が着手したことのない問題が、嫌と言うほど立ちはだかるだろうけど、
死ぬまでが勉強、人生。がんばれよ、青二才。
君はあと、何年この世でプログラミング、C言語のソースコードを
書き続けるつもりかね?死後も、この世に自分が記述したコード、
あるいは編み出した手法が使われていると良いでちゅね。
そう、学校で習った教科書に記述されていることは、過去の人間が
発見、開発、発案した分かりきった内容に過ぎないのだよw
しかし、当初の目的とは違った形で使われているのも事実。

さて、ノーベル賞で有名な、アルフレッド・ノーベルは、ダイナマイトの発明者として有名だが
その後、ノーベルが目的とした以外に、どのように人類の歴史上ではダイナマイトが使用されたかね?
それを見て、あんたは ダイナマイトでおk と言うのかね?w
64デフォルトの名無しさん:2009/03/05(木) 22:30:57
高校数学レベルの知識が必要な問題になると逃げ出すアホが言っても説得力がないw
65デフォルトの名無しさん:2009/03/05(木) 23:16:38
>>64
意味が分からんけど、あんたは全ての質問に答えているの?
あと、いつ逃げ出したか、証拠でもあるの?むしろ、あんたが出来ずに
他人を頼ったんだろ?w
66デフォルトの名無しさん:2009/03/05(木) 23:19:37
とりあえず、コテハンを付けてもかまってもらえるぐらい大物にならないとな
67デフォルトの名無しさん:2009/03/05(木) 23:21:39
麻呂に、剰余の問題で先を越されて悔しかったあいつかw
あれは中学校レベルだがw
余程、数学が出来ることが優越感に感じる唯一の生き甲斐なんですねw
実に寂しい人生だ。こっちは、初歩的なプログラミングで楽しんで生きているというのにw
68デフォルトの名無しさん:2009/03/05(木) 23:39:29
>剰余の問題で先を越されて
明らかに麻呂の方が後だったけどw
69デフォルトの名無しさん:2009/03/05(木) 23:41:26
いい加減真性のキチガイに構うなよ。
長文連投されて迷惑だ。
70デフォルトの名無しさん:2009/03/05(木) 23:48:27
↓君は、ライト兄弟が発明した飛行機が、その後、自爆テロに使われて
↓飛行機でおkと言うのかね?その言葉や物が、どういった使われ方をするか?
↓そんなのは、時代によって変わってしまうものだよ。
↓ほら、山茶花って言葉、元は漢字を並べた読みの「さんざか」だったんだよ?
↓新しいは「あらたし」が転じたとか。役不足の意味、分かってる?
↓能力が不足してるのではなく、手に余るという意味だよ?日本語はおk?
71デフォルトの名無しさん:2009/03/05(木) 23:50:53
早春に
怨念怨嗟の
長文連投
72デフォルトの名無しさん:2009/03/05(木) 23:51:36
>>70
日本語でおk
73デフォルトの名無しさん:2009/03/06(金) 05:35:22
反論が出来ないんだろ、C言語しか取柄の無い引きこもり基地外が、
麻呂は高校レベルの数学の問題は解けないとか言うしw
逆に、数学の知識は特に必要としない、言語の使用に関しては
ド素人なんだろ、その噛み付いてくる粘着常駐は。だから、ここを
自分のテリトリーと思い込んでいるようだが、ここは2ちゃんねるの管理者が
所有している掲示板。書き込んだ本人が何を思っても、書き込み内容は
サーバーの中にログとして残り、誰かが保存している限り、未来永劫、
半永久的にデジタルデータとして残るわけだが。
そのログを、100年以上も未来の子孫達が閲覧して、時代背景も含めて
書き込み内容をどう思うんだろうねw
74デフォルトの名無しさん:2009/03/06(金) 05:36:31
そもそも、麻呂はここのところ、来ているのか?それすら分かっていないんだろw
ねぇ、とりあえずさ、鏡を見たら?ピザにメガネを掛けたようなものが映った?
それ、誰のだよ?そう、お前の面だよ?ただ、あんたが目の当たりにしたのを
このスレを見ただけじゃ、どんなものだったか、想像できないのが悔しいね。
75デフォルトの名無しさん:2009/03/06(金) 05:46:10
76 ◆.l3Q3ORut2 :2009/03/06(金) 10:15:01
>>52
余計でしたか・・・いやぁいつも周りに言われるんで
どうやらこれは僕の悪い癖みたいですね(^^;

getch()を使うのですかなるほど・・・
もう少しヒントみたいなの貰えませんか?

若しくは簡単でいいので、コード書いていただいて
それを参考に応用してみたいです

名人、よろです
77デフォルトの名無しさん:2009/03/06(金) 10:34:57
    お断りします
        お断りします
            お断りします
      ハ,,ハ ハ,,ハ ハ,,ハ ハ,,ハ
     ( ゚ω゚ )゚ω゚ )゚ω゚ )゚ω゚ )  お断りします
    /    \  \  \  \    お断りします
  ((⊂  )   ノ\つノ\つノ\つノ\つ))   お断りします
     (_⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ       お断りします
      ヽ ヘ } ヘ }  ヘ } ヘ }
  ε≡Ξ ノノ `Jノ `J ノ `J ノ `J
78デフォルトの名無しさん:2009/03/06(金) 13:40:45
MSC 5.1ってどんなコンパイラですかね
smallモデルとかlargeモデルとかあるやつ?
79デフォルトの名無しさん:2009/03/06(金) 15:02:47
>>78
おそらくそのはず。

Wikipediaでは、MS Cの最後のバージョンでC++コンパイラとMFC 1.0がついて、
その次からVisual C++という名称になったということになっている。
そして、VC++は1.5までが16ビット版だった。
80デフォルトの名無しさん:2009/03/06(金) 15:11:04
>>68 は、まだ根に持っているんだなw あの程度のことで、麻呂の態度が気に食わなかったのか
未だに必死に、麻呂がいるもんだとトラウマになっているようだが、それとは無関係に
麻呂以外の第三者を、無闇に煽っていることに気づかない、見えない敵と戦う戦士になったようだw
ちなみに、汎用性については、麻呂の方が明らかに軍配が上がった。所詮、お前は
固有のパターンにしか対応できない、融通の利かないヘボプログラマー。環境が変わると、
一からコードを書き直す、無駄が多いタイプ。そういうの、この世界では生き残れないよ。
そう、先行きを考えた前置きが出来ないから。
81デフォルトの名無しさん:2009/03/06(金) 15:14:11
64 名前:デフォルトの名無しさん 投稿日:2009/03/05(木) 22:30:57
高校数学レベルの知識が必要な問題になると逃げ出すアホが言っても説得力がないw

↑やたらと自分基準で、勘違いをして「アホ」とか罵詈雑言を平気で使う、
知能レベルの低い基地外。このスレが、生き甲斐、自分の縄張りだと思っているらしい。

66 名前:デフォルトの名無しさん 投稿日:2009/03/05(木) 23:19:37
とりあえず、コテハンを付けてもかまってもらえるぐらい大物にならないとな

↑必死に煽るくせに、自分がコテハンを名乗らない小心者。こいつの発言は、いつも無責任。
恐らく無職のニートで、社会に適合しないタイプ。

68 名前:デフォルトの名無しさん 投稿日:2009/03/05(木) 23:39:29
>剰余の問題で先を越されて
明らかに麻呂の方が後だったけどw

↑こいつは、我先にとコードの出来よりも、雑でも早く出すことが目的らしい。
恐らく、学生時代には、他人より先に答えることに集中してしまい、
間違っていても自分の答えは正しいと言い張って、周りから干されたタイプ。
82デフォルトの名無しさん:2009/03/06(金) 15:15:58
いったい何が起きてんだ?
剰余の件とか。
詳しく説明よろ
83デフォルトの名無しさん:2009/03/06(金) 15:17:44
まぁ、ここで陰湿な罵倒をしている、麻呂以外の人にも当り散らしている
精神障害の基地外は、恐らく本当の引きこもりなんでしょう。
まともなプログラマーが、いつまでもこんな場所にいるわけがない。
というか、日頃は商売のためのソフトウェアを開発しているしな。
暇な時は、油を売っていないで、自ら学習するし。無能な職員は
遊んでいて、他人任せで生きるんだろうけど、そういう役立たずは
すぐに首切りにされるからねw
84デフォルトの名無しさん:2009/03/06(金) 15:20:06
っつか、もう答えが分かりきっている、高校生だろうが大学レベルだろうが
その問題を解いたくらいで、得意気になっているこの必死なアンチ麻呂は誰?
第三者から見ても、必死すぎてキモイ。
85 ◆.l3Q3ORut2 :2009/03/06(金) 15:53:55
>>78
昔のNEC製PC9800シリーズに標準で付属してるコンパイラみたいです。
古すぎてこれぐらいしかわからなかったけど、後は>>79の通りなんじゃないかな


というか皆さん>>76を華麗にスルーなさってます・・・
どうかスルーしないでやってくださいお願いします
86デフォルトの名無しさん:2009/03/06(金) 15:57:15
>>85
getch( )ですべてだ
#include <conio.h>
がMSC 5.1で使えるかは知らないが
87デフォルトの名無しさん:2009/03/06(金) 16:14:48
>>84
丁度、春休みに入ったやつじゃね?
88デフォルトの名無しさん:2009/03/06(金) 16:25:17
剰余の問題なんて、中学校レベルだろ、ぎゃはははははwwwww
あの程度で、麻呂ごときに勝ったつもりか?w
89 ◆.l3Q3ORut2 :2009/03/06(金) 17:05:19
>>86
んーそうですか・・・自分が使ってる麻奈ちゃんの「やさしいC」って参考書には
getchar()しか載ってないようでして
しかも詳しく詳細が載ってるという訳でもなく、調べようにも今手元には参考書が
これぐらいしかなくお手上げ状態です(><

なもんで、申し訳ないんですけど簡単なコードでいいのでお手本書いて貰えませんか?
お願いします

>>87
はい、そうです

さっきからぐぐって調べてみてるんですけど、何分情報量が半端じゃなく
ありすぎるので、目的のサイトが中々見つからないんです

調べ方に問題があるような気もしてきてるのですが、どうしたらいいかも
具体的に思いつかなくて困りました

お助け下さい名人
90デフォルトの名無しさん:2009/03/06(金) 17:37:57
>>89
#include<stdio.h>
#include<conio.h>
int main(void)
{
int i;
char c[16];
for (i = 0; i < 4; i++)
{
c[i] = getch();
putch('*');
}
c[i] = 0;
printf("\nPASS=%s\n", c);
return 0;
}
91デフォルトの名無しさん:2009/03/06(金) 18:48:30
なんで別人のふりしてんの?
92デフォルトの名無しさん:2009/03/06(金) 20:17:12
>>89
参考書とか要らないから
googleにgetchと入力してボタンクリックするだけ
93デフォルトの名無しさん:2009/03/07(土) 02:59:15
あなたたちが課題をやってくれなかったせいで留年しました。
本当にありがとうございました。
94デフォルトの名無しさん:2009/03/07(土) 03:01:16
>>93
来年も留年させてあげます。
おたのしみに。
95デフォルトの名無しさん:2009/03/07(土) 03:11:32
麻呂トラウマで必死な引きこもりが痛すぎw
96デフォルトの名無しさん:2009/03/07(土) 05:30:35
>>93
言う事が朝鮮人みたいだな
自分のせいなのに人のせいにしやがって
97デフォルトの名無しさん:2009/03/07(土) 06:08:43
トラウ麻呂w
98デフォルトの名無しさん:2009/03/07(土) 13:22:37
[1]C言語基礎
[2]麻呂と罵倒屋さんとの剰余うんぬんの経緯をも一度
詳しく教えてくれませんか?
[3] 日本語
[4]本日中
99デフォルトの名無しさん:2009/03/07(土) 22:57:14
[1] 授業単元:勝手にやってます
[2] 問題文(含コード&リンク):ばば抜きシミュレーターを作る
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8953.txt
[3] 環境
 [3.1] OS: XP Pro SP3
 [3.2] コンパイラ名とバージョン: Cygwin Gcc
 [3.3] 言語:C
[4] 期限: 無期限 ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

以前配列をむちゃくちゃなことやってここでお世話になりました。
一応プレイをさせれるようなところまで言ったのかなと思ったら、スタックオーバーフローを起こすようになってしまったようです。
これを回避する方法を教えてください。

あいかわらずひどいと思いますが、よろしくお願いします。
100デフォルトの名無しさん:2009/03/07(土) 23:09:45
よく見てないし、関係ないけど、関数呼ぶたびにsrand()するな。
101デフォルトの名無しさん:2009/03/07(土) 23:10:31
スタックオーバーフロー?
0で割ってるだけじゃねーの
102デフォルトの名無しさん:2009/03/07(土) 23:12:08
>>99
本当にスタックオーバフロー?

VC++9.0で確認したら、関数choise()の中の

i = rand()%remain[N_plyer];

で、remain[N_plyer]の値が0になっている。

103デフォルトの名無しさん:2009/03/07(土) 23:12:11
>>99
大域でオブジェクトを宣言するな。
特にカウンタ。局所にしろ。

そんなことしてるから問題の絞込みができないんだ。
関数を分ける意味が薄れるだろうが。
104デフォルトの名無しさん:2009/03/07(土) 23:14:00
もう少し基本的なこと理解してから長いコード書いてくれ
105デフォルトの名無しさん:2009/03/07(土) 23:26:42
209 [main] baba 3536 _cygtls::handle_exceptions: Error while dumping state (
probably corrupted stack)
Segmentation fault (core dumped)

209や3536とかの値は毎回変わるみたいです。

Error while dumpingってのをググったらスタックオーバーフローだっていわれたのでそうだと思ったのですが、違うんですかね?

>101
減らしてみます。

>102
そこのあたり確認してみます。

>103
一回ずつよく使うのをローカルで宣言するの面倒だからと思ったんですが、やっぱり関数ごとに宣言したほうがいいですか?

>104
この前も同じようなこと言われました。
簡単な短いのは習ったんですが、こういう長いのを書くのは初めてな上に勘とgoogle先生に聞きながらやってるのでいろいろひどいと思います。
106デフォルトの名無しさん:2009/03/07(土) 23:29:33
>>99
main以外の関数はプロトタイプ宣言を書いて
そこに説明を書いた方が読みやすいソースになる
107デフォルトの名無しさん:2009/03/07(土) 23:31:13
この前あがってたシャッフルとか、理解するつもり全くないだろw
108デフォルトの名無しさん:2009/03/07(土) 23:40:25
ひどいのわかってて開き直るってw
109デフォルトの名無しさん:2009/03/07(土) 23:48:15
カードがなくなった人が出ると、その人から札を引こうとして0で割ってる。
カードがなくなった人は飛ばす処理が必要。
110デフォルトの名無しさん:2009/03/08(日) 00:08:18
>>105
ループの先で関数呼び出して、そこでも同じループカウンタを使うとあっという間にバグの出来上がり。
独りよがりで誰にもみせねぇってソースなら後でお前が困るだけだからどうでもよし。
111デフォルトの名無しさん:2009/03/08(日) 00:17:04
糞コードの添削するくらいなら1から書いたほうがよっぽど楽。
112デフォルトの名無しさん:2009/03/08(日) 00:23:50
見てたら頭が痛くなってきた・・・
113モデム接続:2009/03/08(日) 00:32:46
>>99
/*int*/void choice() の先頭で、リターンするといい事有るかも。
{
//int i, j, k;
  if(remain[N_plyer] == 0) return; // 上がっているので、1回パス
// srand(time(NULL));
114デフォルトの名無しさん:2009/03/08(日) 06:08:26
>>98って難しい?
115デフォルトの名無しさん:2009/03/08(日) 06:19:54
1^1 + 2^2 + 3^3 + ・・・ n^n を3で割った余りを求める、ような問題だったと思う。
nを指定して、それに応じて。また、発展で 1^1 - 2^2 + 3^3 - 4^4 ・・・ と
+と-が交互になった場合とか。結局、コードの中の定義を変えることで
nや3で割る部分を適当に変更できる使用にした麻呂に軍配が上がったわけだがw
116デフォルトの名無しさん:2009/03/08(日) 06:21:27
それで、後だししただの、麻呂のクソースも見てくれだのと言ったことに
腹を立てたこのスレの常駐引きこもり基地外がファビョって、麻呂は特定可能だからって
麻呂に当り散らしていたw 精神レベルが低いんだろうね、中学校レベルの数学なのに
麻呂では解けないとか、勝手なことを言い出したが、自分がその程度の問題を解いたくらいで
得意気になっているだけという、第三者から見たら滑稽な姿だと気づかないのが痛すぎるwww
117デフォルトの名無しさん:2009/03/08(日) 06:25:00
さらに、麻呂はクソースと題して、単方向、双方向リスト、それに
ファイルを用いる機能を追加、並び替えも独自のコードで実装したわけだが
これまた、後から後から訂正して、何がなんだかw
あの手の問題は、既に定石、ありきたりの手法があるわけだが
丸写しを他人の質問で出しても、答えが側の実力とは言えないしな。
そんなこんなで、ここを自分の縄張りだと思っている、社会では
まともに稼いでいないヘボプログラマーが、初心者が知識が乏しいことを良いことに
好き勝手なことを言っているわけだ。だから、こんなクソスレに成り下がっているわけで、
年々、大学や専門学校の先輩から後輩へ、このスレの存在が伝えられているのか
最近では過去に似た問題、あるいはまったく同じ問題と、同じ学校で同じ授業を受けている
生徒が鉢合わせになることもw
118デフォルトの名無しさん:2009/03/08(日) 08:13:32
このキチガイ長文連投の言うこと信じる奴なんていんのかよw
119デフォルトの名無しさん:2009/03/08(日) 09:05:42
信じる信じない以前に見る気しない。
120デフォルトの名無しさん:2009/03/08(日) 09:13:29
↓おまいは、ある整数を1で割った余りを求めるプログラムでも作ってろ、な?
121デフォルトの名無しさん:2009/03/08(日) 09:47:39
さすがにループ変数を自信満々でdoubleにして元のプログラムを間違ってると言ったアホ
は言うことが違うw
122デフォルトの名無しさん:2009/03/08(日) 17:33:07
コマンドラインからいくつかの文字列を入力し、
文字列を逆さに出力するプログラムを作成。
ただし、入力する文字列の長さや個数に制限をつけないために、
以下のような仕様とする。

文字列毎にその都度メモリを動的に確保する
一度確保したメモリは次の文字列を処理する前に解放する。
malloc とか使うんですかね?
[動作例]
% ./a.out abcde fghijklmn opqr
edcba
nmlkjihgf
rqpo
123デフォルトの名無しさん:2009/03/08(日) 17:47:17
>>122テンプレ
124デフォルトの名無しさん:2009/03/08(日) 19:16:11
125デフォルトの名無しさん:2009/03/08(日) 19:33:33
よく見るとメモリを確保する必要性がないな
126デフォルトの名無しさん:2009/03/08(日) 19:41:38
#include <stdio.h>
char *reverse(char *cs) {
char tmp, *p, *q;
if (!cs) return 0;
for (p = cs, q = p + strlen(p) - 1; p < q; p++, q--) {
tmp = *p;
*p = *q;
*q = tmp;
}
return cs;
}
int main(int argc, char *argv[]) {
int i;
char *p;
for (i = 0; i < argc; i++) {
if (i == 0) continue;
p = reverse(strdup(argv[i]));
printf("%s\n", p);
free(p);
}
}
127デフォルトの名無しさん:2009/03/08(日) 20:09:23
麻呂のクソースに期待
128デフォルトの名無しさん:2009/03/08(日) 20:25:05
最近は<string.h>をincludeしないのでstrlen()を使うのがが流行り?
129デフォルトの名無しさん:2009/03/08(日) 20:45:38
>>127
いない奴に期待してどうすんだ?w
130デフォルトの名無しさん:2009/03/08(日) 20:48:37
#include <stdio.h>

void print_reverse(char * s)
{
char * p = s;
while(*p != 0) p++;
for(; p != s; putchar(*p)) p--;
putchar('\n');
}

int main(int argc, char ** argv)
{
int i;
for(i = 1; i < argc; i++) print_reverse(argv[i]);
return 0;
}
131130:2009/03/08(日) 20:51:48
ごめん問題文読んでなかった。メモリ確保がいるの。
でも別にこれで長さにも個数にも制限なくないですか
132デフォルトの名無しさん:2009/03/08(日) 20:57:13
mallocと麻ー呂っくを掛けたのか?w
133デフォルトの名無しさん:2009/03/08(日) 20:58:33
無意味な仕様であることは確かだな。
134デフォルトの名無しさん:2009/03/08(日) 21:13:41
>for(; p != s; putchar(*p)) p--;
なんでわざわざこんな記法をw
135デフォルトの名無しさん:2009/03/08(日) 21:16:16
p=sのときも表示させるための工夫なんだろ
while(p!=s) putchar(*--p)
でいい気もするが。
136122:2009/03/08(日) 21:30:26
>123-135
いろいろありがとうございました。
次回あれば、テンプレ忘れないよう気をつけます。
137モデム接続:2009/03/09(月) 01:07:40
> 最近は<string.h>をincludeしないのでstrlen()を使うのがが流行り?
実行ファイルが a.out だから、コンパイラは gcc ではないだろうか。
138デフォルトの名無しさん:2009/03/09(月) 03:45:30
Cygwinとかならgccでもa.exeじゃね?
139デフォルトの名無しさん:2009/03/09(月) 07:01:44
>>138
数学で逆は真ならずってならわなかったか
逆、裏、対偶ってあって真なのは対偶
140デフォルトの名無しさん:2009/03/09(月) 08:24:46
いや、それ、命題としてもどうかと。数学とかって話じゃないだろ。
実際に分かりきっている事実なんだから、調べれば良いだけ。
141 ◆v/LK4luEPU :2009/03/09(月) 09:43:46
>>90
遅くなりました、ありがとうございます。
おかげさまで望みのコード勉強が出来ました。

参考書みてるだけじゃ、このレベルのコードも書けないという
勉強にもなり、いい経験になりました。

>>92
なるほど、参考になります。

それと、先日の土日を利用して、図書館へ行きCの参考書を2点程借りてきて
みたのですが、どうやらその参考書にも「getch()」の記述が載ってないんですよね。
「getchar()」の方は載っているのですが、この二つは何か違いがあるのでしょうか?

スレ違いでしたらすみません。

142デフォルトの名無しさん:2009/03/09(月) 10:40:23
getchar と getch は挙動が全く違うし、getch は環境依存だから。
Windows の場合は getch でいいんだが、UNIX系OSの場合は termios (あるいは curses の getch) を使うことになる。
143デフォルトの名無しさん:2009/03/09(月) 12:57:23
>>142
win2kを使っててgetch()に酷い目にあわされたw
144デフォルトの名無しさん:2009/03/09(月) 21:57:36
[1] 授業単元:授業とは関係なし
[2] 問題文(含コード&リンク):
世界のナベアツのネタ「3の倍数と3が付く数字だけアホになり、5の倍数だけ犬っぽくなる」プログラムを作りたいと思っています。
出力は
1 2 ア3 4 犬5 ア6 のようにアホになるときは数字の前に「ア」、犬の時は数字の前に「犬」を付ける形で出力したいです。
1〜10000程度の範囲でお願いします
春休みに入り、プログラミングの授業の復習のつもりでやってみようと思ったのですが、
思っていたよりも難しくて挫折しました。
[3] 環境
 [3.1] OS:Windows VISTA
 [3.2] コンパイラ名とバージョン:BCC Borland C++ 5.5.1
 [3.3] 言語: C
[4] 期限: 早いとうれしいですが、課題ではなく提出期限が無いのでいつでも
[5] その他の制限: あまり深くは習っていません。あまり難しいと困ります。

145デフォルトの名無しさん:2009/03/09(月) 22:17:18
>>144
#include<stdio.h>

int main(void){
int i;

for(i=1;i<=10000;i++) printf("%s%s%d ", (i%3)?"":"ア", (i%5)?"":"犬", i);
return 0;
}
146デフォルトの名無しさん:2009/03/09(月) 22:19:30
147デフォルトの名無しさん:2009/03/09(月) 22:22:58
FizzBuzzと言う名前、忘れてた
これができないというのは正直信じられん
148デフォルトの名無しさん:2009/03/09(月) 22:29:29
>>147
もう久しく紙に書く習慣がなくなってしまったので、cでも急に紙に書けといわれるとどうかな。
149144:2009/03/09(月) 22:47:04
FizzBuzzは書けました。ですが、3が付く数字がどう判定して良いかわかりません。
150145:2009/03/09(月) 22:52:10
>>144
3がつく数字忘れてた
#include<stdio.h>

int chk3(int num){
if(num%3==0) return 1;
for(;num>0;num/=10) if(num%10==3) return 1;
return 0;
}

int main(void){
int i;
for(i=1;i<=100;i++) printf("%s%s%d ", !chk3(i)?"":"ア", (i%5)?"":"犬", i);
return 0;
}
151デフォルトの名無しさん:2009/03/09(月) 22:56:17
>>145
俺はお前のような漢になりたい
152規制解除したようす:2009/03/09(月) 23:56:00
#include <stdio.h>
int main(void)
{
  int i;
  for(i=1;i<=10000;i++){
    printf("%s%s%d ", (i%3==0 || (i/10)-(i/100)*10==3
                || (i/100)-(i/1000)*10==3
                || (i/1000)-(i/10000)*10==3 )?"ア":"", (i%5==0)?"犬":"", i);
    if(i%10==9) puts("");
  }
  return 0;
}
153デフォルトの名無しさん:2009/03/10(火) 02:52:49
154デフォルトの名無しさん:2009/03/10(火) 02:54:49
>num = rand() % 53;
こう書くと偏るからダメだって言う奴がでるからダメ。
155デフォルトの名無しさん:2009/03/10(火) 02:59:31
>>154
randの偏りをなくすのは諦めたw
あと、カードを取ってあがった場合の処理もw
156デフォルトの名無しさん:2009/03/10(火) 03:07:41
num = rand() % (i + 1) もしくは num = i + rand() % (53 - i) にする。
または、
for(i=53; i>1; ) {
num = rand() % i--;
temp = allcard[i];
allcard[i] = allcard[num];
allcard[num] = temp;
}
にする。
157デフォルトの名無しさん:2009/03/10(火) 03:42:25
>>153見ずに>>154見て、下位ビットは云々という話かとおもた
158152:2009/03/10(火) 10:24:48
>>152 の6〜8行目。間違っていました。
訂正後:printf("%s%s%d ", (i%3==0 || i%10==3 || (i/10)%10==3 || (i/100)%10==3 || (i/1000)%10==3)
159デフォルトの名無しさん:2009/03/10(火) 11:34:33
>>144
嫌がらせのように見にくいコード
#include <stdio.h>
#include <string.h>

int main()
{
    char buf[256];
    int i;

    for(i = 1; 1; i++, sprintf(buf, "%d", i))
        printf("%s%s%d ", ((i % 3 == 0 || strchr(buf, '3') != NULL) ? "ア" : ""), ((i % 5 == 0) ? "犬" : ""), i);
    return 0;
}
160デフォルトの名無しさん:2009/03/10(火) 11:58:21
別にこれでええやん

#include "stdafx.h"
#include <iostream>
#include "windows.h"
using namespace std;

int main(void){
int i;
for(i=1;i<=10000;i++){
if(i%3==0 && i%5!=0){
cout << "ア";
}else if(i%5==0 && i%3!=0){
cout << "犬";
}else if(i%3==0 && i%5==0){
cout << "ア犬";
}
cout << i << endl;
Sleep(500);
}
return 0;
}
161デフォルトの名無しさん:2009/03/10(火) 12:11:27
>3が付く数字
162デフォルトの名無しさん:2009/03/10(火) 12:12:41
>>160
*30から*39も全部アホにならないといけないそうだ
300から399も
163デフォルトの名無しさん:2009/03/10(火) 12:15:49
1からnまでの間に3の倍数と3のつく数字がいくつあるか求める関数
int nabeatu(int n)
を作れ
というのを以前見たような気がする
164デフォルトの名無しさん:2009/03/10(火) 13:32:53
>>150に勝てる気がしなくてやめた
165デフォルトの名無しさん:2009/03/10(火) 13:50:54
倍数を求めるのは難しくないが、3の付く数字は
一度文字列に置き換えて、3が含まれるかチェキするとか。
166デフォルトの名無しさん:2009/03/10(火) 13:51:44
って、文字列に置き換える必要はなかったか。10で割った余りが3かどうかで
順に10で割っていけば良いか、すまそ。
16799:2009/03/10(火) 16:11:22
>>153

ありがとうございます。
今夜にでもゆっくりソースを読ませてもらいます。

今後の書き方の参考にもさせてもらいます。
168デフォルトの名無しさん:2009/03/10(火) 18:33:38
>>161-162
あぁ読み間違えてた
俺もプログラミング習いたてだけど
一応できたわ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8964.txt

つうか、>>150みたいな短い書き方あるんだな
俺もそういう書き方してえわ
169デフォルトの名無しさん:2009/03/10(火) 22:12:07
生年月日を2000/01/01もしくは2000/1/1の形式で入力し、
誕生日から現在まで何日経過したか、現在の年齢の2項目を表示するプログラムをお願いします。
170デフォルトの名無しさん:2009/03/11(水) 01:35:21
>>169 かなり制約つき
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8965.txt
コンパイラ:VC++ 2005
日数;満日数
年齢:数え年齢(めんどうなので。満年齢は勝手にどうぞ)
誕生日:1970年以降
現在日付:2038年迄
171デフォルトの名無しさん:2009/03/11(水) 01:52:00
172デフォルトの名無しさん:2009/03/11(水) 01:54:59
おまえら優しいな…
173デフォルトの名無しさん:2009/03/11(水) 09:04:04
>>169
2行目が曖昧かな?誕生日からというのは、前の誕生日からなのか、
生まれたその日からのどちらか?
174デフォルトの名無しさん:2009/03/11(水) 09:25:19
>>173
お誕生日会と誕生日の違いだな。
175デフォルトの名無しさん:2009/03/11(水) 09:29:37
>>174
お誕生日”会” ???
176170:2009/03/11(水) 09:50:29
そもそも、生まれた当日は0日目なのか、1日目なのか。
それの方が悩んだ。
177デフォルトの名無しさん:2009/03/11(水) 10:01:16
年齢計算に関する法律について調べるべし。
178170:2009/03/11(水) 10:26:20
オッケー、日本語で。0日目で正しいようだ。
「年齢計算に関する法律」で検索した。
179デフォルトの名無しさん:2009/03/11(水) 17:28:08
法律を知らないとプログラムって書けないんだね><
180デフォルトの名無しさん:2009/03/11(水) 17:44:12
>>179
法律を知らないと書けないと言うか
作ろうとしてるプログラムの内容を知ってないと
作れない
18199:2009/03/11(水) 19:19:39
要求定義ってやつじゃないか?
182デフォルトの名無しさん:2009/03/11(水) 19:34:42
>>178
年齢ハ出生ノ日ヨリ之ヲ起算ス
初日不算入の例外が年齢だよ
出生日が1日目
183デフォルトの名無しさん:2009/03/11(水) 20:19:05
指定した年に、13日の金曜日があるか調べ、あるならそれが何月か表示せよ
184デフォルトの名無しさん:2009/03/11(水) 20:54:30
指定した年に、13日の金曜日があるか調べ、あるならその日を災いにせよ

>>182 例外に含まれるのを見落としてました。
なるほどしかし、法律的には4月1日に生まれた子女は翌年の3月31日
午後12時に1歳に成るとなっている。4月1日午前0時でなく。
満年齢はそれでいいとして、課題は"経過した"日数も…(2項目)だから生まれた日の
翌日が第1日目でいいじゃないかと思う。生まれた当日は何かとバタバタしてるし。
正確に言えば翌日も出生時刻までが0日目で、第2日目てことは無いと思う。
185デフォルトの名無しさん:2009/03/11(水) 21:06:52
186185:2009/03/11(水) 21:12:19
187デフォルトの名無しさん:2009/03/11(水) 22:39:41
>>186
今年って3回もあるんだ
ジェイソンも大変だなw
188デフォルトの名無しさん:2009/03/12(木) 02:21:34
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8969.txt
言語・コンパイラ:C・VC++ 2005
日数;満日数
年齢:数え年齢(めんどうなので。満年齢は勝手にどうぞ)
誕生日:1901年以降 <--- new
現在日付:2038年迄 <--- なんとか?
189デフォルトの名無しさん:2009/03/12(木) 02:46:53
>>188
struct tmからtime_tをつくるmk_time()つー関数がなんか便利だたよ
190デフォルトの名無しさん:2009/03/12(木) 02:59:04
× mk_time
○ mktime

tm構造体つくる→年月日時分秒メンバを書き換える→mktime()
→localtime_s()でstruct tmに変換
→曜日・日数が自動補完されてうまー
191デフォルトの名無しさん:2009/03/12(木) 11:27:49
皆C言語で書いてるってことなのか?
よくわからないんだけどCとC++が微妙に構文違うのはなぜなの?
192デフォルトの名無しさん:2009/03/12(木) 11:44:11
>>191
struct tm 変数名; // C structが必要
tm 変数名; // C++ structをつけなくていい
C++は、変数の宣言が処理の途中で出来る。等々
193デフォルトの名無しさん:2009/03/12(木) 15:13:21
ttp://www3.uploader.jp/dl/akaiup/akaiup_uljp00797.zip.html

[1] 授業単元: エムピーアイ
[2] 問題文(含コード&リンク):ガウス消去法を並列化せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2009/03/13中
[5] その他の制限:
エムピーアイの問題ですが、後退代入以外完成してます。上三角型の行列を作るところまでは
出来たのであとは単純に答えを計算するだけなのですが、アルゴリズムがわかりません。
なので115行目の”後退代入”のところを埋めて下さいまし。
エムピーアイというか単にC言語のループの書き方のレベルなのでエムピーアイを知らなくても
アルゴリズムがわかれば書けると思います。なおプロセス数はmpirun -np 4 ./a.out
で実行して下さい(添付のインプットファイルが4行4列なので)
194デフォルトの名無しさん:2009/03/12(木) 19:50:50
プログラム教えてください
配列の中の数値をランダムに入れ替えたいんです

たとえば
int A[]={ 1,2,3,4,5,6,7,8,9,10}
↓ランダム
4,9,5,1,8,6,2,10,3,7

教えてください
195デフォルトの名無しさん:2009/03/12(木) 20:08:15
>>194
for ( i = 0; i < 100; i++)
{
乱数で0-9の数字を2個( p , q )作成
tmp = A[ p ];
A[ p ] = A[ q ];
A[ q ] = tmp;
}
196デフォルトの名無しさん:2009/03/12(木) 20:34:59
#include <stdio.h>
#include <time.h>

int main(void)
{
int ar[]={11,12,13,14,15,16,17,18,19,20};
int size=sizeof(ar)/sizeof(ar[0]);
int i, num, temp;

srand( (unsigned)time( NULL ) );
for(i=size-1; i>=0; i--){
num = rand() % (i + 1);
temp = ar[i];
ar[i] = ar[num];
ar[num] = temp;
printf("%d ", ar[i]);
}
return 0;
}
197デフォルトの名無しさん:2009/03/12(木) 21:00:29
>>196
偏りそうにも見えるが、上手くいくのかな?
誰か優しく証明して。
198デフォルトの名無しさん:2009/03/12(木) 21:15:23
なんでこう、乱数絡みの問題が定期的に湧くんだw
199デフォルトの名無しさん:2009/03/12(木) 21:21:01
偏りっていうのはrandをつかうからってことなの?
どれぐらい偏るもんなの?
200デフォルトの名無しさん:2009/03/12(木) 21:24:01
いやいや、randのせいじゃなく、
単純に処理としての話。

for(i=0; i < size; i++)だと分かるんだけど、
逆でも良いのかなってこと。
201デフォルトの名無しさん:2009/03/12(木) 21:50:49
>>200
> for(i=0; i < size; i++)だと分かるんだけど、
> 逆でも良いのかなってこと。

逆のほうが簡潔に書けるって話だな
デバッガで追っかけるとわかる

for(i=0; i < size; i++)で書いてみ
最終的に行き着くのが196になる
202デフォルトの名無しさん:2009/03/12(木) 21:59:46
なんで196に行くのかが全然わからないや。
203デフォルトの名無しさん:2009/03/12(木) 22:32:48
>>196
出来ました!
ありがとうございます
すごいですね

でも、randを使っているから同じ数字が入りそうなんですけど
なんで同じ数字が入らないんだろう?
204デフォルトの名無しさん:2009/03/12(木) 22:38:04
ああ、iだからrand減って行くんですね
分かりました
i=size-1と(i + 1)がまだ分かりませんが
なんとか分かるように頑張ります
ありがとうございます
205デフォルトの名無しさん:2009/03/12(木) 22:40:21
私の知能じゃ10年かかっても思いつきませんでした
ありがとうございますm(_;)m
206デフォルトの名無しさん:2009/03/12(木) 23:35:10
まず、全体の中から1個選んで一番後ろに入れる。
次に、残ったものから1個選んで後ろから二番目に入れる。
これを残り0個になるまで繰り返す。

簡単だろ?
207デフォルトの名無しさん:2009/03/13(金) 00:30:49
規則性はあるけど、乱数発生器をiで割っているのがいいよね
208デフォルトの名無しさん:2009/03/13(金) 00:31:24
要するに松田優作ってことだ
209デフォルトの名無しさん:2009/03/13(金) 01:06:18
210デフォルトの名無しさん:2009/03/13(金) 07:17:51
>>206
なるほど
211デフォルトの名無しさん:2009/03/14(土) 17:04:38
学校の課題を手伝ってください。
[1] 授業単元: データ構造アルゴリズム
[2] 問題文(含コード&リンク):
キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。
"1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される
キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。
また、以下の関数を作成し、使用しなさい。
vaio enqueue(int val)キューにデータを追加する
vaio dequeue() キューからデータを取り出す
vaio queue_print()キュー全内容を表示する
以上ですお願いします。
[3] 環境
 [3.1] OS: Linux ソラリス
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: C
[4] 期限: ([2009年3月15日])
[5] その他の制限: なし

212デフォルトの名無しさん:2009/03/14(土) 17:10:44
プリントキューの仕様が不明だな。
213デフォルトの名無しさん:2009/03/14(土) 17:12:10
vaioも不明
214デフォルトの名無しさん:2009/03/14(土) 17:17:14
頭が弱いと生きるの大変そうだね
215デフォルトの名無しさん:2009/03/14(土) 17:17:56
ちょww vaio?wwww
216デフォルトの名無しさん:2009/03/14(土) 17:19:25
失礼しましたvaioじゃなくvoidでした。
キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。
"1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される
キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。
また、以下の関数を作成し、使用しなさい。
void enqueue(int val)キューにデータを追加する
void dequeue() キューからデータを取り出す
void queue_print()キュー全内容を表示する
217デフォルトの名無しさん:2009/03/14(土) 17:41:08
学校の課題でどうしてもできないC言語があるのですかどなたか手伝ってください。
スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
お願いします。
218デフォルトの名無しさん:2009/03/14(土) 17:42:22
219デフォルトの名無しさん:2009/03/14(土) 18:05:23
[1] 授業単元: データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、クイックソートを用いて昇順にソートするプログラムを作成しなさい。
[3] 環境
 [3.1] OS: (Linux/)
 [3.2] コンパイラ名とバージョン: (わかりません)
 [3.3] 言語: (C)
[4] 期限: [無期限]
[5] その他の制限: なし
220デフォルトの名無しさん:2009/03/14(土) 18:56:32
[1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: [3/16]
[5] その他の制限: なし
221デフォルトの名無しさん:2009/03/14(土) 19:03:19
222デフォルトの名無しさん:2009/03/14(土) 19:08:53
>>220 osはunixでした。
223デフォルトの名無しさん:2009/03/14(土) 19:11:10
>>219 私もosはunixでした。


224デフォルトの名無しさん:2009/03/14(土) 20:01:14
>>221
dequeue()の戻り値もvaioだぞw
225デフォルトの名無しさん:2009/03/14(土) 20:14:08
>>219
#include<stdio.h>
#include<stdlib.h>
#define N 10
int f(const void*a,const void*b){
 return *(const int*)a-*(const int*)b;
}
int main(){
 int a[N],i;
 for(i=0;i<N;++i)scanf("%d",a+i);
 qsort(a,N,sizeof(int),f);
 for(i=0;i<N;++i)printf("%d ",a[i]);
}
226デフォルトの名無しさん:2009/03/14(土) 20:19:18
>>225ありがとうございます。
227デフォルトの名無しさん:2009/03/14(土) 20:28:39
osによってプログラムの違いってあるんですか?
228デフォルトの名無しさん:2009/03/14(土) 20:56:28
 for(i=0;i<N;++i)scanf("%d",a+i);
 for(i=0;i<N;++i)printf("%d ",a[i]);

なんか気持ち悪いな
229デフォルトの名無しさん:2009/03/14(土) 20:57:42
>>228
意図が読めないなんてピュアな方ですねw
230デフォルトの名無しさん:2009/03/14(土) 21:09:19
>>220 終了はCtrl+Z
#include<stdio.h>
#include<stdlib.h>
int s[99],p;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 char b[99];
 for(;scanf("%98s",b)==1;){
  switch(*b){
   case'+':push(pop()+pop());break;
   case'-':push(pop()-pop());break;
   case'*':push(pop()*pop());break;
   case'/':{int t=pop();push(pop()/t);}break;
   default:push(atoi(b));
  }
  printf("%d\n",s[p-1]);
 }
}
231デフォルトの名無しさん:2009/03/14(土) 21:12:19
>>230dクス
232230:2009/03/14(土) 21:13:38
やべバグあるわ。今直す
233デフォルトの名無しさん:2009/03/14(土) 21:17:42
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8975.txt
データを表示する場合に,データの昇順と降順の両方向での表示が選択で
きるように,このプログラムに変更してください
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限: 2009/03/16
[5] その他の制限: ありません

よろしくお願いします
234230:2009/03/14(土) 21:18:22
>>220 少し短くなったかな
#include<stdio.h>
#include<stdlib.h>
int s[99],p;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 char b[99];
 for(;scanf("%98s",b)==1;printf("%d\n",s[p-1]))
  switch(*b){
   int t;
   case'+':t=pop();push(pop()+t);break;
   case'-':t=pop();push(pop()-t);break;
   case'*':t=pop();push(pop()*t);break;
   case'/':t=pop();push(pop()/t);break;
   default:push(atoi(b));
  }
}
235デフォルトの名無しさん:2009/03/14(土) 21:24:11
>>234さんたびたびdクスです。
236デフォルトの名無しさん:2009/03/14(土) 21:27:49
>>233
void PrintTreeRev(BinNode *p){
if (p != NULL) {
PrintTree(p->right);
PrintData(p->data);
PrintTree(p->left);
}
}
を追加してメニューから呼ぶようにしろ
237236:2009/03/14(土) 21:28:40
おーう、中のPrintTreeもPrintTreeRevだ
逝ってくる
238デフォルトの名無しさん:2009/03/14(土) 21:33:53
>>227
微妙に質問が質問として成立してないんじゃね?
OS自体がプログラムだから、プログラムとして違いがあるし、
OSの機能を使うプログラムの場合も、OSが違うからプログラムとして違いがある。

>>234
いい感じ
でも、"%98s"じゃなく、"%98[^\n]"じゃないとダメぽ
239234:2009/03/14(土) 21:44:06
>>238
すまん。なぜダメなのか教えてくれないか。
何が入力されたときにまずい?
240デフォルトの名無しさん:2009/03/14(土) 21:48:53
>>239
すんません。
勘違いしてました。
scanf一回で、式を全部持ってくるのかと思ってました。。。
241234:2009/03/14(土) 21:51:32
>>240おk。
242デフォルトの名無しさん:2009/03/14(土) 22:12:01
>>237
出来ました!ありがとうございます!
243デフォルトの名無しさん:2009/03/14(土) 22:54:57
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8976.txt
[3] 環境
 [3.1] OS:ウィンドウズvista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: [2009年3月15日]
[5] その他の制限:なし

お願いします
244デフォルトの名無しさん:2009/03/15(日) 00:23:05
245デフォルトの名無しさん:2009/03/15(日) 00:37:13
あるある
246デフォルトの名無しさん:2009/03/15(日) 01:19:15
osの違いでC言語に違いが出てくることってあるんですか?
247デフォルトの名無しさん:2009/03/15(日) 01:19:53
>>244
ありがとうございます
248デフォルトの名無しさん:2009/03/15(日) 01:49:26
[1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
逆ポーランド電卓
逆ポーランド記法の数式を入力してリターンキーを押すと答えを表示してくれるもの。スタックを使用して以下のように計算する。
1.数値なら、そのままスタックにつむ
2.演算子なら、2つの数をスタックからおろして演算を行い、その結果を再びスタックにつむ。
※逆ポーランド記法とは演算子を後ろに置く記法。例えば1+2は12+に、(1+2)*3は12+3*になる。逆ポーランド記法は後置法ともよばれる。
[3] 環境
 [3.1] OS: (unix)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: [3/16]
[5] その他の制限: なし
よろしくお願いします。
249デフォルトの名無しさん:2009/03/15(日) 02:08:17
>>248

>>220>>234を見ろ。
なんというか、まあ、お前らのところ本当にどうしようもないのしかいないんだな
250デフォルトの名無しさん:2009/03/15(日) 02:18:35
>>249 問題が同じでも細かいところが違うんですよ。
251デフォルトの名無しさん:2009/03/15(日) 02:24:17
確かにOSが違うな
252249:2009/03/15(日) 02:51:34
>>250
すまん、その細かいところってどこだ?

>>251
>>222見る限りOSも同じだが。
253デフォルトの名無しさん:2009/03/15(日) 03:22:19
すみません、C初心者で、今課題をやってるのですが、入門書見ながらでもさっぱりです。
よろしくおねがいします。。

↓↓↓↓↓
以下のプログラムは、入力された10個の数値を引き算し、その結果を表示するプログラムです。
9〜11行目を別の関数(関数名はFuncDev)とし、修正しなさい。ただし、グローバル変数は使わないこと。
またFuncDev内のローカル変数名は任意とします
FuncDev関数は以下の定義とします
int FuncDec(void);
FuncDev関数の戻り値は、画面入力されたint型データとします。

1:#include<stdio.h>
2:void main(void);
3:void main(void)
4:{
5: int n1 n2;
6; int nt;
7: nt=0;
8: for(n1=0;n1<10;n1++){
9: printf("0-9の数値を入力:");
10: scanf(" %d",&n2);
11: nt-=n2;
12: }
13: printf("結果は%dです",nt);
14:}
254>>253:2009/03/15(日) 03:34:52
#include <stdio.h>
int FuncDev(void);
int main(void)
{
int nt, n1;
nt = 10000;
for(n1 = 0; n1<10; n1++){
nt -= FuncDev();
}
printf("結果は%dです", nt);
}
int FuncDev(void)
{
int n2;
scanf(" %d", &n2);
return n2;
}
255デフォルトの名無しさん:2009/03/15(日) 03:41:45
>>254
すばやいご回答ありがとうございました。
私は問題の意味を勘違いしていたみたいでした。
自分一人だったら白紙で出すところでした。

本当にありがとうございました
256デフォルトの名無しさん:2009/03/15(日) 03:52:02
OSがunixって幅が広すぎるよな。
257デフォルトの名無しさん:2009/03/15(日) 04:01:21
[1] 授業単元: データ構造アルゴリズム
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8979.txt
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: BCC Borland C++ 5.5.1
 [3.3] 言語: C
[4] 期限: ([2009年3月15日])
[5] その他の制限:なし
258>>253:2009/03/15(日) 04:18:12
>>254さま
すみません、
今読んでいて疑問に思ったのですが、
6行目の
nt=10000;
とはどういう意味なのでしょう?
簡単に解説をしてくださると助かります
259デフォルトの名無しさん:2009/03/15(日) 04:50:50
>>252 問題はいっしょだが条件が追加されてる。
260デフォルトの名無しさん:2009/03/15(日) 05:09:36
>>259
どんな条件?

逆ポーランド電卓の説明が追加されているだけにしか見えんが?
261デフォルトの名無しさん:2009/03/15(日) 09:48:42
>>260
ようわからんが実行結果がちがったんじゃねーの?たぶん同じやつが書き込んでるとおもわれる。
262>>253:2009/03/15(日) 09:58:05
ntは引かれる数。10000は一万。
263デフォルトの名無しさん:2009/03/15(日) 13:42:22
>>253
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "windows.h"
using namespace std;

int FuncDec(){
int n2;
cout << "input 0-9" << endl;
cin >> n2;
return n2;
}

int main(void){
int n1;
int nt=0;
for(n1=0;n1<10;n1++){
nt-=FuncDec();
}
cout << "output " << nt;
Sleep(10000);
}
264デフォルトの名無しさん:2009/03/15(日) 13:45:44
このスレ、己の描いた独自プログラムと簡単な問題文しか出さない人が多いけど
独自プログラムなんて出すよりも
詳しい問題文やどういったアルゴリズムにしようとしてるか描いてくるほうがありがたい
というのもプログラムなんざ千差万別だから、そんなもの提示されても
俺のプログラムと描き方の雰囲気が少しでも違ってたらいちいち面倒なことになる
265デフォルトの名無しさん:2009/03/15(日) 14:12:06
>>264
宿題スレに何を求めているの?
266デフォルトの名無しさん:2009/03/15(日) 15:55:22
この世に存在するソフトウェアのソースが公開されているものなんて
ほんのごく一部だぞ?他人の猿真似でどうにかなるもんでもなかろう
定石なんて、書店に行けばいくらでも見つかるぞ
267デフォルトの名無しさん:2009/03/15(日) 15:55:41
osの違いでC言語に違いが出てくることってあるんですか?
268デフォルトの名無しさん:2009/03/15(日) 15:56:24
>>267
環境依存に関わるライブラリではあり得る。
269デフォルトの名無しさん:2009/03/15(日) 16:16:48
>>267
Cの規格上、差異を認めている部分(処理系定義)では起こりうる。
もちろんOSの値が以外の原因で起こることもあるけど。

型の大きさとか表現方法とか。
270デフォルトの名無しさん:2009/03/15(日) 17:24:29
>>264
所詮、ここはC系で一番バカな質問を受け付ける/受け流すためのハコだからな。
問題文の読み方も分からないって手合いが多数だし、「ここまで書きました」は大概読まないほうがいい。
動かないコードを見て、何のツモリか当て推量するのは不毛だしな。

・・・動いているコードでさえ、何のツモリ(仕様)かなんて、推量はあてにならないしな。
271デフォルトの名無しさん:2009/03/15(日) 17:57:16
>>248 parseあんま自信無いw
#include<stdio.h>
#include<ctype.h>
int s[99],p,a;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 int c,t;
 for(;(c=getchar())!=EOF&&c!='\n';){
  if(isspace(c));
  else if(c=='+')t=pop(),push(pop()+t);
  else if(c=='-')t=pop(),push(pop()-t);
  else if(c=='*')t=pop(),push(pop()*t);
  else if(c=='/')t=pop(),push(pop()/t);
  else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);
  else return fprintf(stderr,"Parse error!");
 }
 printf("%d\n",pop());
}
272271:2009/03/15(日) 18:00:01
悪い。修正版。
#include<stdio.h>
#include<ctype.h>
int s[99],p;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 int c,t;
 for(;(c=getchar())!=EOF&&c!='\n';)
  if(isspace(c));
  else if(c=='+')t=pop(),push(pop()+t);
  else if(c=='-')t=pop(),push(pop()-t);
  else if(c=='*')t=pop(),push(pop()*t);
  else if(c=='/')t=pop(),push(pop()/t);
  else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);
  else return fprintf(stderr,"Parse error!");
 printf("%d\n",pop());
}
273デフォルトの名無しさん:2009/03/15(日) 18:03:04
getchar()使うヤツって……
274デフォルトの名無しさん:2009/03/15(日) 18:03:50
いちいち言うくせに、指摘や適切なものを提示しないヤツって・・・口先だけのインポ野郎だなw
275デフォルトの名無しさん:2009/03/15(日) 18:07:58
>>272さんありがとうございます。
276デフォルトの名無しさん:2009/03/15(日) 18:09:15
こんなスレで偉そうにしているヤツって……
277デフォルトの名無しさん:2009/03/15(日) 18:09:51
>>273
普通につかうガナ
278デフォルトの名無しさん:2009/03/15(日) 18:18:36
>>270
初心者のコード見てこき下ろしたり、黒歴史を思い返したりするのもまた一興じゃないか。
279デフォルトの名無しさん:2009/03/15(日) 20:03:56
お願いします

[1] 授業単元: データ構造アルゴリズム
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8979.txt
こののプログラムのクイックソートを行っている関数quickを,非再帰的なアルゴリズムに書き換えてください.
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C
[4] 期限: ([2009/3/15])
[5] その他の制限:なし
280デフォルトの名無しさん:2009/03/15(日) 21:55:22
非再帰って自前でスタック使ったら、再帰アルゴリズムを
言語の再帰使わずに実装しているだけの様な。
281デフォルトの名無しさん:2009/03/15(日) 22:37:11
クソ課題だなあ
282自分が解けもしないくせに口だけは大きい馬鹿:2009/03/15(日) 22:40:26
281 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:37:11
クソ課題だなあ
283デフォルトの名無しさん:2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
284デフォルトの名無しさん:2009/03/15(日) 23:02:32
こんな感じかな?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;
int pr;
Data x;
while(1)
{
pl =left;
pr =right;
x = a[(pl+pr)/2];
do {
while(Cmp(x, a[pl], order)) pl++;
while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){
swap(Data , a[pl], a[pr]);
pl++;
pr--;
}
} while(pl <= pr );
if (left < pr) {right = pr; continue;}
if (pl < right) {left = pl; continue;}
break;
}
}
285自分が解けもしないくせに口だけは大きい馬鹿:2009/03/15(日) 23:14:59
283 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
286デフォルトの名無しさん:2009/03/15(日) 23:15:35
オレが解けないのは課題が悪いからだ!
287デフォルトの名無しさん:2009/03/15(日) 23:18:06
>>281>>283
スレ違い。公開オナヌーは他所でどぞ。
288デフォルトの名無しさん:2009/03/15(日) 23:26:07
口先だけのヤツは、いつも自分がそれに対してどう思うか?
という主観しか述べず、問題があるなら問題点を指摘するなり
客観性のある見解を示さず、自分が言ったことを反対されると
ファビョるだけの井の中の蛙なんだなぁ
289デフォルトの名無しさん:2009/03/16(月) 00:15:42
>>284さんありがとうございますm(_;)m
290デフォルトの名無しさん:2009/03/16(月) 00:51:08
>>289
間違っる。
最初のleftとrightを記憶し、
左側を絞り込み、記憶しておいたleftとrightで右側を絞り込むように
2回に分けないといけないみたい。
291デフォルトの名無しさん:2009/03/16(月) 01:04:18
>>283
再帰を反復に変換するのは普通の課題だろ。
292デフォルトの名無しさん:2009/03/16(月) 01:15:13
初心者です。
/*BMI.c*/

#include<stdio.h>

int main()
{
double a,b,c;
c=b/(a*a);

printf("あなたの身長(m)を入力してください。-----");
scanf("%f",&a);
printf("あなたの体重(kg)を入力してください。-----");
scanf("%f",&b);


printf("あなたのBMIは%fです。\n",c);

if(c >=25){

printf("あなたは肥満です。");
}

return 0;


これはあってますか?
293デフォルトの名無しさん:2009/03/16(月) 01:19:08
>>292
間違ってます。
294デフォルトの名無しさん:2009/03/16(月) 01:25:59
修正?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;int pr;Data x;int _right;
_right = right;
while(1)
{
pl = left;pr = right;x = a[(pl+pr)/2];
do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;}
} while(pl <= pr );
if (left < pr) {right = pr; continue;}
break;
}
left = 1;right = _right;
while(1)
{
pl = left;pr = right;x = a[(pl+pr)/2];
do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;}
} while(pl <= pr );
if (pl < right) {left = pl; continue;}
break;
}
}
295デフォルトの名無しさん:2009/03/16(月) 02:16:47
それじゃ無理だろ
296デフォルトの名無しさん:2009/03/16(月) 03:09:37
修正の修正?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;
int pr;
Data x;
int _right;
_right = right;
while(1)
{
pl = left;
pr = right;
x = a[(pl+pr)/2];
do {
while(Cmp(x, a[pl], order)) pl++;
while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){
swap(Data , a[pl], a[pr]);
pl++;
pr--;
}
} while(pl <= pr );
if (left < pr) {right = pr;continue;}
else
right = _right;
if (pl < right) {left = pl;continue;}
break;
}
}
297デフォルトの名無しさん:2009/03/16(月) 04:16:12
>>294
>>295
>>296
重ね重ねありがとうございます
298デフォルトの名無しさん:2009/03/16(月) 04:28:20
>>296
無駄が多い
299デフォルトの名無しさん:2009/03/16(月) 04:55:23
>>298
模範解答をお願いします。
300デフォルトの名無しさん:2009/03/16(月) 05:27:00
クイックソート 非再帰でググればいくらでも転がってるだろ
301デフォルトの名無しさん:2009/03/16(月) 11:35:25
>>292
a,bに値が格納される前にcを計算しているので間違い。
302デフォルトの名無しさん:2009/03/16(月) 12:03:26
>>298
指摘するくらいなら、自分がそれに応じたコードを示せよ?
ここんとこ、口先だけの役立たずw
303デフォルトの名無しさん:2009/03/16(月) 16:54:19
>>301
ありがとうございます。
304デフォルトの名無しさん:2009/03/16(月) 17:16:54
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整列配列を用意します。
要素を入力し、クイックソートを用いて昇順にソートするプログラムを作成しなさい。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: qsortを使わないでお願いします。
305デフォルトの名無しさん:2009/03/16(月) 17:24:06
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):qsort関数を用いてソートするプログラムを作成しなさい。身長の昇順、視力の降順など、複数の条件でソートすること。
※qsort関数
書式 void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void))
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限:
306デフォルトの名無しさん:2009/03/16(月) 17:26:47
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):文字列から任意の文字を探索するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします。
307デフォルトの名無しさん:2009/03/16(月) 17:34:56
308デフォルトの名無しさん:2009/03/16(月) 17:41:24
>>307
その問題はqsortを使っているので…
309デフォルトの名無しさん:2009/03/16(月) 18:01:55
>>306
#include <stdio.h>
#define BUFSIZE 108
char *mstrchr(const char *src, char ch)
{
for(;*src;++src) if(*src==ch) return (char*)src;
return 0;
}
int main()
{
char buf[BUFSIZE], ch, *p;
int c = '0';
printf("文字列:", buf);
fgets(buf, BUFSIZE, stdin);
/*if(!mstrchr(buf, '\n')) while(c!='\n'&&c!=EOF) c = getchar();
if(c==EOF) return 1;*/
printf("文字:", buf); ch = getchar(); p = mstrchr(buf, ch);
if(p) printf("%d文字目\n", p-buf+1);
else printf("なかった\n");
return 0;
}
310デフォルトの名無しさん:2009/03/16(月) 18:25:04
>>309さんありがとうございます。
311デフォルトの名無しさん:2009/03/16(月) 18:26:40
>>304
#include <stdio.h>
#define N 10
void mqsort(int x[], int left, int right){
int i=left,j=right,p=x[(i+j)/2];
while(1){
while(x[i]<p) i++;
while(p<x[j]) j--;
if(i>=j) break;
{int tmp = x[i]; x[i] = x[j]; x[j] = tmp;}
i++;j--;
}
if(left<i-1) mqsort(x, left, i-1);
if(j+1<right) mqsort(x, j+1, right);
}
int main(){
int a[N],i;
for(i=0;i<N;++i)scanf("%d",a+i);
mqsort(a,0,N-1);
for(i=0;i<N;++i)printf("%d ",a[i]);
return 0;
}
312デフォルトの名無しさん:2009/03/16(月) 18:29:24
>>309
strchr() に準じてだろうけど
const char* で受けた一部を char* で戻すのって微妙に気持ち悪いよね
313デフォルトの名無しさん:2009/03/16(月) 18:34:35
>>311
dクスです。
314デフォルトの名無しさん:2009/03/16(月) 18:38:22
315デフォルトの名無しさん:2009/03/16(月) 18:56:12
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク): "string"の先頭の三文字を入力した文字の三文字と比較して、
一致すれば0を一致しなければ1を出力するプログラムを作成しなさい。また、"XXXX"を入力すると終了するようにしなさい。

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします
316デフォルトの名無しさん:2009/03/16(月) 19:04:01
[1] 授業単元:データ構造アルゴリズム
[2] 問題文 ある文の中に指定した語が見つかるとその場所を表示するプログラムをBM法を用いて作成しなさい。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
おねがいします
317デフォルトの名無しさん:2009/03/16(月) 19:13:43
どんだけ宿題溜め込んでるんだよw
318デフォルトの名無しさん:2009/03/16(月) 19:45:41
>>315
#include <stdio.h>
#include <string.h>
int main(){char s[]="string",b[5];return fgets(b,5,stdin)&&strcmp(b,"XXXX")&&printf("%d",strncmp(b,s,3)?1:0)>=0;}
319デフォルトの名無しさん:2009/03/16(月) 19:54:58
>>318
短いっすね。ありがとうございます。
320デフォルトの名無しさん:2009/03/16(月) 20:01:32
>>318
これで出したらやり直しくらいそうだがな
321デフォルトの名無しさん:2009/03/16(月) 20:16:21
>>318
教員もこんな簡単な問題に対して,こんな大人げない解答出されたら疑問に思うわなw
322デフォルトの名無しさん:2009/03/16(月) 20:54:37
>>318
お前のような漢になりたい
323デフォルトの名無しさん:2009/03/16(月) 21:17:48
>>320-322
むしゃくしゃしてやった。反省はしていない。

>>316
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt
324デフォルトの名無しさん:2009/03/16(月) 21:44:34
>>323
これは信用していいんですよね?
325デフォルトの名無しさん:2009/03/16(月) 21:47:51
>>311
だからqsortは使っちゃだめ!
326デフォルトの名無しさん:2009/03/16(月) 22:05:18
>>315 ./a <ソース.c
#include <stdio.h>
int main()
{
  char s[] = "string", b[1024]; /*
string */
  do {
    if(!gets(b)) return 1;
    printf("%d\n", strncmp(b,s,3) ? 1:0);
  } while(strcmp(b, "XXXX"));
  return 0;
}
327デフォルトの名無しさん:2009/03/16(月) 22:19:52
>>326
./a<ソース.cが意味不明なんですけど
328デフォルトの名無しさん:2009/03/16(月) 22:26:25
>>326
>>318の後にこれを貼る勇気に乾杯
とりあえずgetsはやめろ
329デフォルトの名無しさん:2009/03/16(月) 22:36:55
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、シェルソートを用いて昇順にソートするプログラムを作成しなさい。
今回は、比較幅を1,2,4,8…のような2のべき乗とする。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします
330デフォルトの名無しさん:2009/03/16(月) 22:42:12
2021年か、結構先だな
331デフォルトの名無しさん:2009/03/16(月) 23:11:38
>>315 ./a <ソース gets使ってしまった。
#include <stdio.h>
int main()
{
  char s[] = "string", b[1024]; /*
string */
  do {
    if(!fgets(b,1024,stdin)) return 1;
    printf("%d\n", strncmp(b,s,3) ? 1:0);
  } while(strcmp(b, "XXXX\n"));
  return 0;
}
332デフォルトの名無しさん:2009/03/17(火) 00:07:12
333デフォルトの名無しさん:2009/03/17(火) 00:10:26
>>329
比較幅って言葉の意味がわかんね。
334デフォルトの名無しさん:2009/03/17(火) 00:17:02
>>332さんありがとうございます。
335デフォルトの名無しさん:2009/03/17(火) 00:54:07
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):qsort関数を用いてソートするプログラムを作成しなさい。身長の昇順、視力の降順など、複数の条件でソートすること。
※qsort関数
書式 void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void))
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([09年3月17日まで] )
[5] その他の制限:
336335:2009/03/17(火) 00:58:08
お願いします。この問題とかないと単位がやばいです。
337デフォルトの名無しさん:2009/03/17(火) 01:01:11
>>335
入力の形式が分からん。勝手に決めていいのか?
338335:2009/03/17(火) 01:05:26
いいです。レスください!
339デフォルトの名無しさん:2009/03/17(火) 01:32:54
340デフォルトの名無しさん:2009/03/17(火) 01:44:02
341335:2009/03/17(火) 06:18:57
>>340ありがとうございます。
342335:2009/03/17(火) 07:09:00
すいません!ヘッダとしてが必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!
343335:2009/03/17(火) 07:10:59
すいません訂正ですヘッダとして<stdlib.h>が必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!
344335:2009/03/17(火) 07:16:32
>>340さんせっかくレスくれたのに申し訳ありません。
345デフォルトの名無しさん:2009/03/17(火) 07:39:30
>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
346335:2009/03/17(火) 07:45:25
そこをなんとか!せっぱつまってるんです。
347デフォルトの名無しさん:2009/03/17(火) 07:48:51
340の
void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void*));
の代わりに
#include <stdlib.h>
にすりゃいいだけだろw
348デフォルトの名無しさん:2009/03/17(火) 07:51:12
>>346
qsort()のプロトタイプ宣言を#include<stdlib.h>に置き換える
349335:2009/03/17(火) 08:00:10
>>347さん>>348さんありがとうございます。
350デフォルトの名無しさん:2009/03/17(火) 12:41:52
論より証拠、言葉よりソースコード、日本語よりプログラム言語
分かったか?最近、口先だけの、新入りは?
351デフォルトの名無しさん:2009/03/17(火) 13:02:20
>>350
ソースでくれ
352デフォルトの名無しさん:2009/03/17(火) 13:27:20
353デフォルトの名無しさん:2009/03/17(火) 13:28:06
いまどきそれかよw
354デフォルトの名無しさん:2009/03/17(火) 13:34:08
355デフォルトの名無しさん:2009/03/17(火) 13:48:04
腹減るじゃんか。
356デフォルトの名無しさん:2009/03/17(火) 15:06:26
やっぱり今時はおたふくだよねー
357デフォルトの名無しさん:2009/03/17(火) 16:46:44
よろしくお願いします。
[1] 授業単元: プログラミング実習
[2] 問題文 キーボードから名前と年齢を入力し、入力した順序につながったリストを作成して、それを利用して表示するプログラムを作成しなさい。
(実行例)
>%a.out
Please,write down your name >taro
How old are you? >27
Continue?yes(1)or no(0)>1
Please,write down your name >hanako
How old are you? >27
Continue?yes(1)or no(0)>0

taro /27
hanako /27
>%

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([09年3月17日まで] )
[5] その他の制限: (なし)
358デフォルトの名無しさん:2009/03/17(火) 17:31:22
このプログラム./a.outしても%がでてしまうのですがどこを直せばいいですか?
http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt
359デフォルトの名無しさん:2009/03/17(火) 17:45:20
>>357張り付いてリロードリロード大変でしょ?
ネタ投下したらしばらく
本読むなりバイトするなり有意義に時間使いなよ
360デフォルトの名無しさん:2009/03/17(火) 17:50:20
 323 :デフォルトの名無しさん :2009/03/16(月) 21:17:48
 >>320-322
 むしゃくしゃしてやった。反省はしていない。

 >>316
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt
./a std <8981.c     <-- これでOK
361デフォルトの名無しさん:2009/03/17(火) 17:53:11
>>360
いやそれじゃだめなんすよ…
362デフォルトの名無しさん:2009/03/17(火) 18:06:35
363デフォルトの名無しさん:2009/03/17(火) 18:10:50
>>362 嫌そうじゃないだろう。
(実行例)
% ./a.out <8981.c
入力した文字列は:#include <stdio.h>
検索する文字列を入力してください:std
10 文字目で一致しました。(一致する文字列が見つかりませんでした。)
% でOK?
364デフォルトの名無しさん:2009/03/17(火) 18:15:51
365デフォルトの名無しさん:2009/03/17(火) 18:17:52
え?./a.out<8981.cって入力するんですか?
366デフォルトの名無しさん:2009/03/17(火) 18:19:49
>>364さん。ありがとうございます。
367360:2009/03/17(火) 18:22:37
>>361 以下のように入力すると答えが出る。
% ./a.ou std <8981.c
10
%
368デフォルトの名無しさん:2009/03/17(火) 18:34:47
>>357 364に先越されたorz...
#include<stdlib.h>
#include<stdio.h>
typedef struct P{struct P*x;char n[64];int a;}P;
P h,*c=&h;int q;
int main(){
 for(;
  c->x=malloc(sizeof(*c)),c=c->x,c->x=0,
  printf("Please,write down your name >"),scanf("%63s",&c->n),
  printf("How old are you? >"),scanf("%d",&c->a),
  printf("Continue?yes(1)or no(0)>"),scanf("%d",&q),q;
 );
 for(c=&h;c=c->x;printf("%s /%d\n",c->n,c->a));
}
369デフォルトの名無しさん:2009/03/17(火) 18:38:53
>>368さんありがとうございます。
370デフォルトの名無しさん:2009/03/17(火) 18:39:00
くせぇくせぇ、後だし麻呂の臭いがぷんぷんすんぜ
371デフォルトの名無しさん:2009/03/17(火) 18:40:48
こりゃ〜生粋のクソースだ、クソースを消毒だ〜
372デフォルトの名無しさん:2009/03/17(火) 19:31:03
>>357 オリジナルは>>368さんのソース。
#include<stdio.h>
typedef struct P {
  struct P *x;
  char name[64];
  int age;
} Q ;

int main(){
  Q h, *c = &h;
  int qa;
  char dmy[2];

  do {
    c->x = malloc(sizeof(*c));
    c = c->x;
    c->x = 0;
    printf("Please,write down your name >"), fgets(c->name, 64, stdin);
    c->name[strlen(c->name)-1] = '\0';
    printf("How old are you? >"), scanf("%d", &c->age);
    printf("Continue?yes(1)or no(0)>"), scanf("%d%c", &qa, dmy);
  } while (qa);
  for( c = &h; c = c->x; )
    printf("\n%s /%d", c->name, c->age);
}
373デフォルトの名無しさん:2009/03/17(火) 21:19:37
ネタ切れー?
374デフォルトの名無しさん:2009/03/17(火) 21:35:51
mallocしたあとfreeしなくていいのか?
375デフォルトの名無しさん:2009/03/17(火) 21:37:47
課題だから書かないとダメってぐらいのレベルじゃね?
376デフォルトの名無しさん:2009/03/17(火) 21:39:26
いまどきのハードウェアでfreeしなくちゃならんヤツなんて皆無だろ
freeとか気取ってやってるソース見たらデスクトップ破りたくなる
377デフォルトの名無しさん:2009/03/17(火) 21:41:12
>>376
好きなだけ破ってろよマヌケ
378デフォルトの名無しさん:2009/03/17(火) 23:04:22
379デフォルトの名無しさん:2009/03/17(火) 23:50:49
>>357 >>374free追加したぞ。>>376のデスクトップ破れ。
#include<stdlib.h>
#include<stdio.h>
struct P{struct P*x;char n[64];int a;}h,*c=&h,t;
int main(){
 for(;
  (c=c->x=malloc(sizeof(*c)))->x=0,
  printf("Please,write down your name >"),scanf("%63s",&c->n),
  printf("How old are you? >"),scanf("%d%*c",&c->a),
  printf("Continue?yes(1)or no(0)>"),getchar()-'0';
 );
 for(c=&h;c=c->x;t=*c,free(c),c=&t)printf("%s /%d\n",c->n,c->a);
}
380今年度最高峰のレス:2009/03/18(水) 03:28:13
381デフォルトの名無しさん:2009/03/18(水) 12:35:35
ハードがどうとか言う前に、例えmainの最後だろうと、メモリの動的確保をしたら
それに対してfreeはセットで使うのが望ましいのだが
382デフォルトの名無しさん:2009/03/18(水) 12:49:28
struct P tいらんかった。
 for(;c=h.x;h=*c,free(c))printf("%s /%d\n",c->n,c->a);
383デフォルトの名無しさん:2009/03/18(水) 12:58:14
たまに、プログラムが異常終了して、跡が残ることはある。
自分は大学で、ネットワーク関連の管理に携わったことがあるが、
ユーザがログオフしても、まだログインしたまま残ることもあった。
そう、コンピュータやプログラムには完璧なんて無いんだよ。
だから、こうやって今も、昔から色々と改善がされているんだろ?
その改善の経緯をもとに、こういったものも作られていくんだよ。
ただ単に、電子計算機に数値を与えて、処理をすれば良いわけじゃない、
システムを運営するのは。
384デフォルトの名無しさん:2009/03/18(水) 13:01:14
どこを縦読み?
385デフォルトの名無しさん:2009/03/18(水) 13:06:27
ネットゲームでクライアントを終了してもキャラがサーバーに残って
再ログインしようとしても入れませんでしたw
386デフォルトの名無しさん:2009/03/18(水) 13:19:57
大学でUNIXを使っていたが、まぁそれは管理者が今も普通に使っている
OSの基本。学生がワークステーションからログインして、終了するときに
ログオフの手続きをせずに、接続、作業で使っているプログラムを
Windowsのウィンドウの右上にあるクローズボックスで閉じてしまう人もいる。
それ以前に、コンピュータの電源スイッチを押して起動は出来るのだが
終了する際に、OSの終了手続きを取らずに電源を切ってしまった人もいた。
それにおけるトラブルも体験したさ。そういった、管理者側の立場になれば、
エンドユーザの身勝手さや、それを阻止する手立てや仕組みを作るのも、
プログラマーには必要なのさ、ワトソン君。
387デフォルトの名無しさん:2009/03/18(水) 13:51:52
また、OSも完璧ではない。プログラムを作った側の措置が不十分だったのか、
あるいはハードウェアに問題があったのか?それに応じてデバッグされることもある。
ただ、それも本当は、プログラマーの思い違いにより、作り直せば解決するものもあるが、
巨大なプロジェクトでいくら個別にモジュールを改良できるとしても、根幹、組み合わせ方に
問題があれば、やり直すしかない。ただ、この世には既にある定石、常套手段を用いてやれば
特に余計なことをしなければ、問題は起きないもんだよ。
しかし、人間の行動までは、正直、予期できない。今もなお、過去から続く争い。
裁判、解決のための判例作り。そして、判例に基づいて、今後は処理される人間同士の
トラブル。PCのトラブルなんて、電子計算機をちょちょいと弄れば済むことが多く、
楽なものですね、ポワロ殿。
388デフォルトの名無しさん:2009/03/18(水) 14:02:47
>>386,387___
  / || ̄ ̄||   ∧∧
  |  ||__||  (   )
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___    ゴキッ
  / || ̄ ̄|| <⌒ヽ ))
  |  ||__|| <  丿
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___
  / || ̄ ̄||   ∧∧
  |  ||__||  (   )
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___
  / || ̄ ̄||
  |  ||__||        ミ ゴトッ
  | ̄ ̄\三⊂/ ̄ ̄ ̄/ミ ,'⌒>
  |    | ( ./     /  l、_>
389デフォルトの名無しさん:2009/03/18(水) 14:17:40
それで、結局、例え初歩的だろうとプログラムを作る以上は、何かしら
そういったシステムに関わる部分の知識も必要になるわけだろ?
第一、APIを使っているだけでも、既に出来上がったその仕組みを知ることになるし。
麻ー呂っくの後に、振りーを忘れないで賜う。
390372:2009/03/18(水) 15:41:13
実体のコピーを省く。
P *t;
for( c=h.x; c!=0; c=t) printf("\n%s /%d", c->n, c->a), free((t=c->x,c));
391デフォルトの名無しさん:2009/03/18(水) 15:49:31
病気が進行してるw
392デフォルトの名無しさん:2009/03/18(水) 17:02:20
聞き方が悪いかもしれませんが

hairetsu[0] = 10
hairetsu[1] = 5
hairetsu[2] = 13
...
というようなものにたいして
rank[0] = 1
rank[1] = 0
rank[2] = 2
...
というような感じにしてくれる関数はありますか?

それとも,自分で作らないとないですか?
393デフォルトの名無しさん:2009/03/18(水) 17:11:30
>>392
無いです
multimap もしくは map
にいれてイテレータで取り出せばおk
394デフォルトの名無しさん:2009/03/18(水) 17:14:41
何がしたいのか訳わからん。エスパー検定?

rankと聞くと行列の階数を思い出す。
なんか、肝心な所を省略してません?
395デフォルトの名無しさん:2009/03/18(水) 17:15:50
hairetsuのそれぞれの要素の大小関係をrankに0から入れていると?
並び替えの応用でやってみ。
396デフォルトの名無しさん:2009/03/18(水) 17:25:42
>>392
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int hairetsu[10], rank[10], i, j, temp;

srand(time(NULL));
for(i=0; i<10; i++) rank[i] = i, hairetsu[i] = rand() % 100;

for(i=0; i<10; i++) {
for(j=9; j>i; j--) {
if(hairetsu[rank[j]] < hairetsu[rank[j-1]]) {
temp = rank[j];
rank[j] = rank[j-1];
rank[j-1] = temp;
} } }

for(i=0; i<10; i++) printf("hairetsu[%d] = %2d, rank[%d] = %d\n", i, hairetsu[i], i, rank[i]);

return 0;
}

こんな感じにrankの方をソートしても可
397デフォルトの名無しさん:2009/03/18(水) 17:42:36
398デフォルトの名無しさん:2009/03/18(水) 17:59:18
>>397
どした?
399デフォルトの名無しさん:2009/03/18(水) 19:15:15
>>398 やらないか?
400デフォルトの名無しさん:2009/03/18(水) 19:19:17
>>396 ん?んんんっ?
401デフォルトの名無しさん:2009/03/18(水) 21:04:01
struct{int hairetu; int rank;} data[10];
rankには0を初期値として入れておいて、dataをhairetuでソートして、
次にrankに0〜9をセットして、もう一度、dataをrankでソート。
これは、「バブルソート」という名前。
#include <stdlib.h>
#include <time.h>

int main(void)
{
  int hairetsu[10], rank[10], i, j, temp;

  srand(time(NULL));
  for(i=0; i<10; i++)
    rank[i] = i, hairetsu[i] = rand() % 100;

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(hairetsu[j] < hairetsu[j-1]) {
        temp = rank[j], rank[j] = rank[j-1], rank[j-1] = temp;
        temp = hairetsu[j], hairetsu[j] = hairetsu[j-1], hairetsu[j-1] = temp;
  } } }

  for(i=0; i<10; i++)
    printf("hairetsu[%d] = %2d, rank[%d] = %d\n", rank[i], hairetsu[i], rank[i], i);

  return 0;
}
402デフォルトの名無しさん:2009/03/18(水) 21:18:19
stdio.h
同じ値でもrankの中の値が違う
403392:2009/03/18(水) 23:24:12
適当な聞き方をしてしまってすみません。

ただ配列の値がでかい順や小さい順で順位をつけられないかなと思ったので。

ありがとうございました。
404デフォルトの名無しさん:2009/03/18(水) 23:37:12
[1] 授業単元:プログラミング実習
[2] 問題 ガウス・ジョルダン法+ピボット選択法を用いて以下の連立1次方程式を解くプログラムを作成しなさい。
2x+3y+z=4
4x+y−3z=-2
−x+2y+2z=2

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] : (gcc)
 [3.3] 言語: (C)
[4] 期限: ([09年3月19日12:00まで] )
[5] その他の制限: (なし)
よろしくおねがいします。

405デフォルトの名無しさん:2009/03/18(水) 23:50:24
[1] 授業単元: アルゴリズム
[2] 問題文:ハッシュ探索(チェイン法)のプログラムを作成しなさい。
1・データファイル「j2」を読み込みなさい。
      2・任意の語彙がいくつ使われているか調べなさい。
      3.データの追加、削除、表示ができるようにしなさい。
      データはyahooのtopページをテキスト化したものとする。
      検索文字列:任意の文字(列)、(例として「配信」など)の使用回数を
      調べなさい。
      画面の表示例は、
      1:表示 2:検索(任意の文字検索&任意の文字の個数) 3:追加 4:削除 5:終了
   
      以上のことをふまえたプログラムをサンプルを変更して作りなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 3月19日夕方まで
[5] その他の制限: ライブラリ関数はサンプル以外使用しない。
406デフォルトの名無しさん:2009/03/18(水) 23:51:43
407デフォルトの名無しさん:2009/03/18(水) 23:58:15
よろしくお願いします。
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):タグ名をpricetype,メンバ名をteika,waribikiとする構造体kakakuとタグ名goodstype,
メンバ名をname[30],kakaku(←構造体)とする要素数10個の構造体配列goodsを作成し、商品名と定価を入力すると商品名、
定価、割り引き価格の一覧が表示されるプログラムを作成しなさい。」ただし、割引価格は、定価が1000円以上の場合は
定価の2割引、それ以外は1割引とする。また、表示するときはポインタを使用すること。
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
408407:2009/03/19(木) 00:04:18
すいません環境等書き忘れていましたosはUNIX、コンパイラはgcc期限無期限その他制限なしでお願いします。
409デフォルトの名無しさん:2009/03/19(木) 00:56:43
>>399何を?
410デフォルトの名無しさん:2009/03/19(木) 01:56:56
>>392 >>396への追加。
#include <stdio.h>
#include <time.h>
int main(void)
{
  int hairetsu[10], rank[10], index[10], i, j, temp;
  srand(time(NULL));
  for(i=0; i<10; i++)
    rank[i] = i, hairetsu[i] = rand() % 100;

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(hairetsu[rank[j]] < hairetsu[rank[j-1]]) {
        temp = rank[j];
        rank[j] = rank[j-1];
        rank[j-1] = temp;
  } } }
  for(i=0; i<10; i++) {
    printf("hairetsu[%d] = %2d, index[%d] = %d\n", i, hairetsu[i], i, rank[i]);
    index[i] = i;
  }

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(rank[index[j]] < rank[index[j-1]]) {
        temp = index[j];
        index[j] = index[j-1];
        index[j-1] = temp;
  } } }
  for(i=0; i<10; i++) printf("rank[%d] = %d\n", i, index[i]);
  return 0;
}
411デフォルトの名無しさん:2009/03/19(木) 04:17:31
>>410
人のコードに無駄なもの付け足すなw

for(i=0; i<10; i++) index[rank[i]] = i;

で十分だろうが
412デフォルトの名無しさん:2009/03/19(木) 07:01:36
ありがとうございます。それで、2回もソートする必要ないですね。
やってみます。
413407:2009/03/19(木) 07:59:06
すみません言語c言語で期限は今日のお昼までにお願いします!
414デフォルトの名無しさん:2009/03/19(木) 08:42:42
>>407
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef struct pricetype{int teika, waribiki;}kakaku;
typedef struct goodstype{char name[30];kakaku kakaku;}goods;
int get_waribiki(int price){
return (price>=1000)?round(price*0.8):round(price*0.9);
}
void print_goods(goods *p){
printf("name:%s teika:%d waribiki:%d\n", p->name, p->kakaku.teika, p->kakaku.waribiki);
}
int main(void){
goods goods[10];
int i, price, goods_num;
char buf[30], *p;
for(i=0;i<10;i++){
printf("Input name : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if((p=strchr(buf, '\n'))) *p='\0';
strcpy(goods[i].name, buf);
input_price:
printf("Input price : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if(sscanf(buf, "%d", &price)!=1) goto input_price;
goods[i].kakaku.teika=price;
goods[i].kakaku.waribiki=get_waribiki(price);
}
goods_num=i;
for(i=0;i<goods_num;i++) print_goods(goods+i);
return 0;
}
415デフォルトの名無しさん:2009/03/19(木) 09:21:23
#include <stdio.h>
#define N 10
struct goodstype {
  char name[30]; /* 商品名 */
  struct pricetype {
    int teika; /* 定価 */
    int waribiki; /* 割り引き価格 */
  } kakaku;
} goods[N];
int main(void)
{
  int i, num;
  struct goodstype *work;
  for(i=0; i<N; i++) {
    work = &goods[i];
    printf("商品名[%d/%d]?",i+1,N); fgets(work->name, 30, stdin);
    work->name[strlen(work->name)-1] = '\0';
    do {
      printf("定価[%d/%d]?",i+1,N); num = scanf("%d", &work->kakaku.teika); getchar();
    } while(num == 0);
    if(work->kakaku.teika >= 1000)
      work->kakaku.waribiki = work->kakaku.teika * (1-0.2);
    else
      work->kakaku.waribiki = work->kakaku.teika * (1-0.1);
  }
  printf("商品名,定価,割り引き価格\n");
  for(i=0; i<N; i++) {
    work = &goods[i];
    printf("\"%s\",%d,%d\n",work->name, work->kakaku.teika, work->kakaku.waribiki);
  }
  return 0;
} >>407
416407:2009/03/19(木) 16:23:45
>>415さんありがとうございます
417デフォルトの名無しさん:2009/03/20(金) 01:16:32
>>405
こうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8991.txt

サンプルにファイルを読む関数がないんだが、「読み込みなさい」とか「調べなさい」は手作業?
探索や削除が間違っとる気がして変えたが、間違ってなかったらマクロを両方とも100に戻しといてくれ。
418417:2009/03/20(金) 01:48:36
ごめん。寝付けん暇つぶしでやっとったら、期限見落としとったorz
419デフォルトの名無しさん:2009/03/20(金) 17:59:26
ネタ投下キボン
420デフォルトの名無しさん:2009/03/20(金) 19:57:17
問題出す方も大変だ。
[1] 授業単元:
[2] 問題文(含コード&リンク): http://pc11.2ch.net/test/read.cgi/tech/1232627790/211

【 課題 】
課題1.
以下のような賭をすることを考えます.
  1. 開始時の所持金をA円とします.
  2. 目標とする金額をB円とします.
  3. さいころを投げて偶数の場合は1円を獲得,奇数の場合は1円を失います.
  4. 所持金が目標額のB円に到達すれば賭は終了,また所持金が0になった場合は破産で終了とします.
数学的な考察をすると,この賭の期待値はA円となります.つまり,何回もこの賭を続けていると,成功したり破産したりしますが,平均すると元の所持金しか得られないということです.
また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
たとえば,開始時の所持金をA=8円,目標額をB=10円とすると,勝つ確率は8割,1ゲームあたり平均すると(10-8)×8=16回,さいころを投げることになります.
このことは,賭をしても儲からない,ことを意味していますね.
このことを確かめるプログラムを作成しなさい.
421デフォルトの名無しさん:2009/03/20(金) 21:02:31
入力した文字に対応するモールス信号を出力するプログラム、お願いします
422デフォルトの名無しさん:2009/03/20(金) 21:12:20
>>1
423デフォルトの名無しさん:2009/03/20(金) 21:14:19
>>421テンプレ嫁
424デフォルトの名無しさん:2009/03/20(金) 21:17:15
読んだけど課題じゃないし書くのめんどくさい

頼んだぜ
425デフォルトの名無しさん:2009/03/20(金) 23:06:55
>>424
・・・−−−・・・
426デフォルトの名無しさん:2009/03/21(土) 00:39:28
>このことは,賭をしても儲からない,ことを意味していますね.
ダウト。一部の人間が損をし(破産し)、一部の人間が儲かることを意味している。
427デフォルトの名無しさん:2009/03/21(土) 00:46:19
分散と試行回数による
428デフォルトの名無しさん:2009/03/21(土) 00:51:43
問題の問題点を指摘するルートに入ってるw

>問題出す方も大変だ。
本人も問題を出すつもりだったのだから,本望かw
429デフォルトの名無しさん:2009/03/21(土) 00:54:33
>また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
マジで?
430デフォルトの名無しさん:2009/03/21(土) 02:21:08
[1] 授業単元:C言語
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
[3] 環境
 [3.1]OS:Win
 [3.2] VC 6.0
 [3.3]言語:C
[4]期限:3月24日
[5]その他の制限:main関数以外に自作の関数を利用する

どなたかよろしくお願いします。
431デフォルトの名無しさん:2009/03/21(土) 02:39:02
>>430
最高に間抜けだな
432デフォルトの名無しさん:2009/03/21(土) 02:41:04
前スレにあった気がする
433デフォルトの名無しさん:2009/03/21(土) 02:42:14
スレと時刻的に8992だろ?
434デフォルトの名無しさん:2009/03/21(土) 02:57:50
435デフォルトの名無しさん:2009/03/21(土) 03:38:25
>>420
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i, j, targetMoney, startMoney, currentMoney;
int totalGame = 10000, totalDice = 0, totalWin = 0;

srand(time(NULL));

printf("所持金を入力してください:");
scanf("%d", &startMoney);
printf("目標額を入力してください:");
scanf("%d", &targetMoney);

for(i=0; i<totalGame; i++) {
for(j=1, currentMoney = startMoney; ; j++) {
if((int)(rand() / (RAND_MAX + 1.0) * 6) & 1 ) currentMoney++;
else currentMoney--;
if(currentMoney == targetMoney) { totalWin++; break; }
if(currentMoney == 0) break;
}
totalDice += j;
}

printf("勝率%.2f%% 平均回数%.2f\n", 100.0 * totalWin / totalGame, (double)totalDice / totalGame);

return 0;
}
436デフォルトの名無しさん:2009/03/21(土) 12:08:02
>>434
すみません、8992です
ありがとうございました
437デフォルトの名無しさん:2009/03/22(日) 02:29:33
[1] 授業単元:基礎演習
[2] 問題文:ttp://www.pref.fukushima.jp/pc-concours/2009/03/pdf/2008honsen.pdf
10ページ目の6問目です
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C

考えれば考えるほどわからなくなっていましました…
良ければよろしくお願いします。
438437:2009/03/22(日) 02:38:00
437です。

[4]期限:4月1日12:00
[5]その他制限:特になし

改めてお願いします。
439デフォルトの名無しさん:2009/03/22(日) 02:56:56
440デフォルトの名無しさん:2009/03/22(日) 02:58:58
あ、printfに\n入れるの忘れてた
441デフォルトの名無しさん:2009/03/22(日) 03:05:55
>>437
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, *data, key, begin, end, mid, i;

    while(1){
        scanf("%d", &n);
        if(n <= 0) break;
        data = (int *)malloc(sizeof(int) * n);
        for(i = 0; i < n; i++) scanf("%d", &(data[i]));
        scanf("%d", &key);
        begin = 0; end = n - 1;
        for(i = 0; begin <= end; i++){
            mid = (begin + end) / 2;
            if(data[mid] == key){
                i++;
                break;
            }
            if(data[mid] < key) begin = mid + 1;
            else end = mid - 1;
        }
        printf("%d\n", i);
        free(data);
    }
    return 0;
}
442デフォルトの名無しさん:2009/03/22(日) 03:06:27
速いなorz
443デフォルトの名無しさん:2009/03/22(日) 03:11:59
i++を二箇所に書くくらいならi=1からはじめればいいのに。
444デフォルトの名無しさん:2009/03/22(日) 03:23:14
begin > endで抜けることを考えてi++2つとしたが、非常に頭悪いことをしてる気がする。
445デフォルトの名無しさん:2009/03/22(日) 03:53:53
こんなプログラムメンテしたくない。というか、プログラミングのセンスないね、チミ。
446デフォルトの名無しさん:2009/03/22(日) 03:54:54
>>445
先生のセンスをこのスレの奴らに見せ付けてやってください!
447デフォルトの名無しさん:2009/03/22(日) 09:22:37
>>445
うん、ないよ。でも、趣味でしかないし、1人でのんびりやれればいいから
下手の横好きでもいいかなー。
448デフォルトの名無しさん:2009/03/22(日) 10:03:53
>>445
メンテじゃなくて、先輩社員が作ったプログラムを触る仕事しかさせてもらえないんだろ?
449デフォルトの名無しさん:2009/03/22(日) 12:32:16
>>441
ぱっと見、無限ループの可能性有だな〜
問題10ではOKだけど、脱出条件組み込んだ方が吉
if(begin == end) break;見たいな
450デフォルトの名無しさん:2009/03/22(日) 12:35:24
>>449
へーそーなのかーwww
451デフォルトの名無しさん:2009/03/22(日) 12:44:41
scanfで値読んでるからマイナス入れれば終了するか・・・
>>450サンクス

それより、問題文だとファイルアクセスっぽいがコマンドラインでよいのか?
452デフォルトの名無しさん:2009/03/22(日) 12:52:55
何を言ってるのかわからない
>for(i = 0; begin <= end; i++){
で脱出条件とやらは十分だと思うが
453デフォルトの名無しさん:2009/03/22(日) 13:02:46
>>452
いや、外のWhile抜けないでしょそれじゃ。
While抜ける条件が、nのScanf or 値が同じ時のみ。
同値無し && 入力無し時のことを言ってる
454デフォルトの名無しさん:2009/03/22(日) 13:06:44
外のwhile抜けるのになんでbeginとendが出てくるんだよw
455デフォルトの名無しさん:2009/03/22(日) 13:10:30
>>454
441のプログラムを見れば分かると思うが、While(1)で無限ループしてんだぞ?
んで、beginとendで配列範囲を設定して、2文探索をしてる。
同値無し時にbeginとend判定しなくなるから、同値breakがキャンセルされ、あとはScanf()のbreakだけになる。

何を持ってbegin/endで煽るのか分かりかねる。
456デフォルトの名無しさん:2009/03/22(日) 13:12:58
二分探索で見つからなかった場合に終了なんて、問題文のどこを探しても書いてありませんがw
457デフォルトの名無しさん:2009/03/22(日) 13:14:22
終了しないとも書いてないなw
458デフォルトの名無しさん:2009/03/22(日) 13:16:39
もしかして、見つかった場合のbreakで外側のループ抜けるとか思ってないか?
459デフォルトの名無しさん:2009/03/22(日) 13:18:06
>>417
返事遅くなってすいません。
期限が延びて明日までになりました。

サンプルでは読み込む関数はないので自分で作成せよと本日問題追加されました。
460デフォルトの名無しさん:2009/03/22(日) 13:30:33
>>455
begin/endはプログラムの終了と関係ないからだろ。
見つからなかった場合でも、終了するのはプログラムじゃなくて「探索」だぞ。
>探索の範囲がつきてしまった時に探索
>を終了します。
461デフォルトの名無しさん:2009/03/22(日) 13:32:02
>>453
> While抜ける条件が、nのScanf or 値が同じ時のみ。
値を見つけた時に抜けているのはforだぞ
462デフォルトの名無しさん:2009/03/22(日) 13:32:47
そもそも0を読み込んだら終了なのも理解できてないようだ
463デフォルトの名無しさん:2009/03/22(日) 13:33:38
WhileとかScanfとか書いてるからただのアホだろw
464デフォルトの名無しさん:2009/03/22(日) 15:56:15
>>441 さん
>>459 % ./a.out <data でファイル入力[Enter]
#include <stdio.h>

int BinarySearch(void);
int main(void) {
  while(!BinarySearch()); return 0;
}
int BinarySearch(void) {
  int n=0, *data, key=0, begin=0, end, mid, i;

  if(scanf("%d", &n) != 1) return 1;
  if(n == 0) return 0;
  if(n < 0) return 2;
  if((data = (int *)malloc(sizeof(int) * n)) == NULL) return 3;
  for(i = 0; i < n; i++)
    if(scanf("%d", &(data[i])) != 1) {free(data); return 1;}
  if(scanf("%d", &key) != 1) {free(data); return 1;}

  for(i = 1, end = n-1; begin < end; i++){
    mid = (begin + end) / 2;
    if(data[mid] < key)
      begin = mid + 1;
    else
      end = mid - 1;
  }
  printf("%d\n", i);
  free(data); return 0;
}
465デフォルトの名無しさん:2009/03/22(日) 16:01:02
n==0のとき0返してどうすんだよw
466465:2009/03/22(日) 16:12:54
0はfalse、while(!false);で次のデータ。
467デフォルトの名無しさん:2009/03/22(日) 16:42:40
問題は0で終了なのに、また関数呼び出してscanf()失敗してからループ抜けるってのがどうなのかって話
468466:2009/03/22(日) 16:48:42
464が俺だ。どうすんだよd どうもしない。
469464:2009/03/22(日) 18:28:13
>>464 修正
#include <stdio.h>
#define returnVal(n) {free(data); return n;}
int BinarySearch(void);
int main(void) {
  while(BinarySearch() == 0); return 0;
}
int BinarySearch(void) {
  int n=0, *data, key=0, begin=0, end, mid, i;

  if(scanf("%d", &n) != 1) return 2;
  if(n == 0) return 1;
  if(n < 0) return 0;
  if((data = (int *)malloc(sizeof(int) * n)) == NULL) return 3;
  for(i = 0; i < n; i++) {
    if(scanf("%d", &(data[i])) != 1) returnVal(2)
    if(data[i] == 0) returnVal(1)
  }
  if(scanf("%d", &key) != 1) returnVal(2)
  if(key == 0) returnVal(1)

  for(i = 1, end = n-1; begin < end; i++){
    mid = (begin + end) / 2;
    if(data[mid] < key)
      begin = mid + 1;
    else
      end = mid - 1;
  }
  printf("%d\n", i);
  returnVal(0)
}
470デフォルトの名無しさん:2009/03/22(日) 18:56:59
気持ち悪いマクロだw
471デフォルトの名無しさん:2009/03/22(日) 19:09:48
#define returnVal free(data); return
{returnVal 2;}
のほうがよかったかd
472デフォルトの名無しさん:2009/03/22(日) 22:11:35
いやそこじゃないだろw
473デフォルトの名無しさん:2009/03/23(月) 02:02:49
BinarySearch() で
nの入力
malloc
free
をやろうとする頭がキモイ
474デフォルトの名無しさん:2009/03/23(月) 09:38:05
>>437 負の値と零も検索出来るように。マクロ似のmainも外した。
#include <stdio.h>

int main(void) {
  int n=0, *data, key=0, begin, end, mid, i;

  while(1) {
    if(scanf("%d", &n) != 1) break;
    if(n == 0) break;
    if(n < 0) continue; // 暫定コンティニュー
    if((data = (int *)malloc(sizeof(int) * n)) == NULL) break;
    for(i = 0; i < n; i++) {
      if(scanf("%d", &(data[i])) != 1) break;
    }
    if(i != n) { free(data); break; }
    if(scanf("%d", &key) != 1) { free(data); break; }

    for(i = 1, begin = 0, end = n-1; begin < end; i++){
      mid = (begin + end) / 2;
      if(data[mid] < key)
        begin = mid + 1;
      else
        end = mid - 1;
    }
    printf("%d\n", i);
    free(data);
  }
  return 0;
}
475デフォルトの名無しさん:2009/03/23(月) 09:46:38
いつまでも引っ張るようなもんでもない
476デフォルトの名無しさん:2009/03/23(月) 21:39:26
char*型を引数にとる関数に
std::string型に格納されてる文字列を渡したいんですが、
c_str()の返す型がconst char *であるためうまく渡せません。
(char *)でキャスト変換するとコンパイルは通るのですが安全とはいえないです。
これを安全に渡すための方法があれば教えてください。
strcpyでコピーする方法はwarningが出てしまいます。
環境はVS2005です。
477デフォルトの名無しさん:2009/03/23(月) 21:41:26
>>476
(char *)でキャストで良いと思います。
478デフォルトの名無しさん:2009/03/23(月) 21:43:38
キャストを用いることはプログラマーが結果に関して責任を持つということ。
プログラマーが安全だと判断すればそれで良い。
479デフォルトの名無しさん:2009/03/23(月) 21:50:04
const_cast使えば?

だがスレ違いだ
480デフォルトの名無しさん:2009/03/23(月) 21:51:15
C++なら(char *)じゃなくconst_cast<char *>だろーと議論に資しないことを申し奉りさぶらわんと欲す
481デフォルトの名無しさん:2009/03/23(月) 21:54:18
[1] 授業単元:C言語
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8997.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:4月2日
[5] その他の制限:ユーザ定義関数を利用する

よろしくお願い致します。
482デフォルトの名無しさん:2009/03/23(月) 22:11:37
コラッツの問題だw
きっと誰かが剰余演算子を使わず,さらにはアクロバティックに書いてくれると期待w
483デフォルトの名無しさん:2009/03/23(月) 22:16:06
>>481
#include <stdio.h>

int collatz(int n)
{
    int i;

    for(i = 0; n > 1; i++){
        if(n % 2 == 0) n /= 2;
        else n = n * 3 + 1;
    }
    return i;
}

int main()
{
    int n;

    while(1){
        scanf("%d", &n);
        if(n == 0) break;
        printf("%d\n", collatz(n));
    }
    return 0;
}
484デフォルトの名無しさん:2009/03/23(月) 22:17:47
>>477-480
本当にありがとう。参考になりました。
485デフォルトの名無しさん:2009/03/23(月) 22:34:37
これくらいしか思いつかんかった。
#include <stdio.h>
void main(){
int i=0,j;
while((!i||printf("%d\n",j))&&scanf("%d",&i)&&i)
for(j=0;i!=1;i=((i^1)&1)*(i>>1)+(i&1)*((i<<1)+i+1),++j);
}
486デフォルトの名無しさん:2009/03/23(月) 23:26:57
>>483 さん
#include <stdio.h>
static int n = 0;
void collatz(void)
{
  int i;

  for(i = 0; n > 1; i++)
    if(n & 1) n *= 3, n++;
    else n >>= 1;
  printf("%d\n", i);
}

int main(void)
{
  while(scanf("%d", &n) != EOF && n) collatz();
  return 0;
}
487デフォルトの名無しさん:2009/03/24(火) 00:00:33
>>483
ありがとうございました
助かりました
488デフォルトの名無しさん:2009/03/24(火) 09:42:53
>>476>>484
おいキャストするな。
c_strを元にコピーすることを薦める次第だ。
489デフォルトの名無しさん:2009/03/25(水) 20:07:37
490デフォルトの名無しさん:2009/03/27(金) 04:12:17
初歩的な問題だと思いますが、勉強し始めでわかりません。どうかよろしくお願いします

下記のソースを記述しコンパイルと実行を確認しなさい
/** データ型 */
#include<stdio.h>

void printDataType1();

main(){
printDataType1();
}
/**
* データ型の表示
* 単純に表示
*/
void printDataType1(){
int intData = 10;
491デフォルトの名無しさん:2009/03/27(金) 04:21:13
ごめん、難解すぎる
492デフォルトの名無しさん:2009/03/27(金) 08:04:15
printf("dec %d\n", intData);
printf("hex %x\n", intData);
printf("oct %o\n", intData);
}
と、後ろに追加する。コンパイルのしかたは、調べれば分かるので省略する。
493デフォルトの名無しさん:2009/03/27(金) 08:09:41
ソースの書き方とコンパイルの仕方を質問しているんじゃないかとエスパーする
どっちにしてもこれ以上のエスパーは無理だが
494デフォルトの名無しさん:2009/03/27(金) 13:20:00
一番下に"}"を付けるだけでいいんじゃね
495デフォルトの名無しさん:2009/03/27(金) 15:59:32
[1] 授業単元:
[2] 問題文(含コード&リンク):ファイル出力で二つ以上の関数が同じファイルに続けて出力させるにはどうすればいいですか?
毎回file openさせてやってみたら、途中まで上書きになってしまいました。
[3] 環境
 [3.1] OS:Win xp
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:
496デフォルトの名無しさん:2009/03/27(金) 16:11:04
>>495
二回目はアペンドモード"a"で開くしかないよ
ただしXPならMS-DOSの系統なのでテキストモードだと
EOFが最後に入っているのでこれを1バイト切り詰めてから
アペンドしないといけない
497デフォルトの名無しさん:2009/03/27(金) 16:13:52
「途中まで上書き」と言ってるから、俺はfseekで解決と予測。
498デフォルトの名無しさん:2009/03/27(金) 16:19:26
>>495
ファイルポインタを関数で使いまわす
FILE* fp = fopen("***", "w");
func1(fp);
func2(fp);
fclose(fp);
499デフォルトの名無しさん:2009/03/27(金) 16:25:10
>>498
それあかんよ
FILE構造体にはデータも書き込むので

func1(&fp);
func2(&fp);

としておき

受ける側は

func1(FILE **fp)
func2(FILE **fp)

としないといけない
実際に実験してみればわかる
500495:2009/03/27(金) 16:26:59
みなさんありがとうございます。
やってみます。
501デフォルトの名無しさん:2009/03/27(金) 17:40:12
>>499
どういう実験か書いてみそ
502デフォルトの名無しさん:2009/03/27(金) 17:56:08
実験してないし流れも読めないが、
>>499の主張は間違っている気がする。
だって、FILE* fpなんでしょ?
> FILE構造体にはデータも書き込むので
FILEへのポインタの値を変えたりするつもりは無いはず。
503デフォルトの名無しさん:2009/03/27(金) 18:00:09
C++のifstreamとかofstreamのようなオブジェクトなら
リファレンス渡しまたはアドレス渡しをしなければいけないのは
わかるが、CのFILE*ってポインタなんだからそのまま渡していいと思う
504デフォルトの名無しさん:2009/03/27(金) 18:14:38
>>499 への容赦ない怒涛のツッコミにワロタww
本人ではないが、func1() や func2() の中で fopen する場合と
勘違いしたんじゃないか、とフォローしてみる。
505デフォルトの名無しさん:2009/03/27(金) 18:53:06
void foo(FILE *fp) {
fputs("foo\n", fp);
}
void bar(FILE *fp) {
fputs("bar\n", fp);
}
int main() {
FILE *fp = fopen("124-495.txt", "w");
foo(fp);
bar(fp);
fclose(fp);
return 0;
}
出力結果は
foo
bar
506デフォルトの名無しさん:2009/03/27(金) 23:31:46
>>504
>>498にfopenも書いてあるからその勘違いは無いんじゃね?
507デフォルトの名無しさん:2009/03/27(金) 23:57:18
499> それあかんよ
あかんって何が?
508デフォルトの名無しさん:2009/03/28(土) 02:35:51
992 名前:デフォルトの名無しさん 投稿日:2009/03/26(木) 23:10:42
世界的には日本語を使う人よりも英語を使う人の方が多い

前スレのこいつが必死なんだろ。日本語よりと比較したら間違いでもないんだが。
509デフォルトの名無しさん:2009/03/28(土) 10:52:35
誤爆としてもワロた
510デフォルトの名無しさん:2009/03/28(土) 12:28:32
>>498
そらあかんわ
FILE *fp = fopen("***", "w");

FILE* fp, fl; は同じように見えるが2つの変数は型が違う。
FILE *fp, *fl; と書く。Javaではない。
511デフォルトの名無しさん:2009/03/28(土) 12:33:19
だれか>>501を翻訳してくれ
512デフォルトの名無しさん:2009/03/28(土) 13:38:41
どういう実験か書いてみてください
513デフォルトの名無しさん:2009/03/28(土) 14:01:25
ところでこのゴミ、
どこに捨てたらいい?
   ∧_∧
  (´∀`)
  /⌒  丶
 / /   \_M
( /|  |\__E)
 \/  | / \
  (  イ / ウワァァン丶
  | /|ハ( `Д)ノ|
  | / / 丶(>>510) ノ
  ( 丿丿   ̄ ̄ ̄
  |||
  |||
  / ト、\
 /_ノ  ̄
514デフォルトの名無しさん:2009/03/28(土) 17:50:42
515デフォルトの名無しさん:2009/03/29(日) 15:19:16
初めまして。
http://www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlに記載されている2006年の本選問題の
問7のヘビの問題と問8のバス路線の問題をお願いします。
お手数だと思いますが、よろしくお願いします。
単元;c言語
期限なんですがなるべく早めによろしくお願いいたします。
環境;os xp
コンパイル名;gcc

516デフォルトの名無しさん:2009/03/29(日) 15:40:40
>>515
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/449

ヘビもあったな
517デフォルトの名無しさん:2009/03/29(日) 15:58:17
ヘビのは正規表現使えたらすごく楽なんだけどな…。
518デフォルトの名無しさん:2009/03/29(日) 16:09:07
問8
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8863.txt
どこが仕様を満たしてない!
519デフォルトの名無しさん:2009/03/29(日) 16:19:50
いろいろ回答ありがとうございます。
問題文通りでお願いします。


520デフォルトの名無しさん:2009/03/29(日) 16:36:39
すいません。追加なんですけど、2007年度の本選の問9、12をよろしくお願いします。
問題通りの出力、入力でお願いします。
後、先程の問題の回答も引き続きお願いします。
もし、何か質問で至らない点があったらこちらですぐに回答します。
521デフォルトの名無しさん:2009/03/29(日) 17:19:24
問題文どおりか、ありがと、蛇の問題は考えておく。ところで、問題のタイトルは
問題9 円に内接する多角形の面積
問題12 ブラックジャック・ゲーム
522デフォルトの名無しさん:2009/03/29(日) 18:08:07
>>520
#include <stdio.h>
int getLine(int*a){
int temp = 0;int i=0;int c;
while(c = getchar(),c!='\n'){
if(c==' '){
a[i]=temp<10?temp:10;i++;temp = 0;
}else{
temp*=10;temp+=c-'0';
}
}
a[i]=temp<10?temp:10;i++;
return i;
}
int main(){
int a[21];int len;
while(len = getLine(a),a[0]!=0){
int sum = 0;int cnt = 0;
for(int i=0;i<len;i++){
if(a[i]==1)cnt++;
sum+=a[i];
}
for(int i=0;i<cnt;i++){
if(sum+10<=21)sum+=10;
}
if(sum>21)sum=0;
printf("%d\n",sum);
}
return 0;
}
523デフォルトの名無しさん:2009/03/29(日) 18:37:10
>>515 ヘビ
#include<stdio.h>
#include<string.h>

int is_typeA(const char *p){
int i, j;
if(strncmp(p, ">'", 2)!=0) return 0;
for(i=0,p+=2;*p=='=';i++,p++);
if(i<1 || *p++!='#') return 0;
for(j=0;j<i && *p=='=';j++,p++);
return !(j<i || strcmp(p, "~"));
}

int is_typeB(const char *p){
int i;
if(strncmp(p, ">^", 2)!=0) return 0;
for(i=0;strncmp(p+=2, "Q=", 2)==0;i++);
return !(i<1 || strcmp(p, "~~"));
}

int main(void){
char buf[100+1];
int n=0, i;
scanf("%d\n", &n);
for(i=0;i<n && gets(buf);i++){ // gets!
if(is_typeA(buf)) printf("A\n");
else if(is_typeB(buf)) printf("B\n");
else printf("NA\n");
}
return 0;
}
524デフォルトの名無しさん:2009/03/29(日) 19:21:57
>>520 あってるかどうか・・・
//09 gcc -std=gnu99 main.c -o main.exe
#include <stdio.h>
#include <math.h>
double s(int n){
double sum = 0;
for(int i=0;i<n;i++){
int in=0;
scanf("%d",&in);
double theta =3.14 * (90-(in/2))/180;
sum += sin(theta)*cos(theta)*sin(theta)*cos(theta);
}
return sum;
}
int main(){
int n;
while(scanf("%d",&n),n!=0){
double sum1 = s(n);
scanf("%d",&n);
double sum2 = s(n);
//
if(sum1==sum2){
printf("0\n");
}else if(sum1>sum2){
printf("1\n");
}else{
printf("2\n");
}
}
return 0;
}
525521:2009/03/29(日) 19:40:11
>>523
短いコード!しかし、gets() を使うから、100文字を超えても一致してしまう。
バスの再掲
#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');
}
526デフォルトの名無しさん:2009/03/29(日) 19:43:02
あみだくじを自動的に生成するプログラムをお願いします。

参加者の人数と当たりの数を入力し、当たり部分には◎ハズレには×
となるようにお願いします。
527デフォルトの名無しさん:2009/03/29(日) 19:43:46
本当に助かります。ありがとうございます
申し訳ないですけど2007年本選の6と7、2007年予選10番もお願いします
528デフォルトの名無しさん:2009/03/29(日) 19:54:30
ってかもう全部の問題をお願いしますね
529デフォルトの名無しさん:2009/03/29(日) 20:02:14
527番の者ですが
528番の回答は自分の発言ではありません
530デフォルトの名無しさん:2009/03/29(日) 20:10:49
>>529
言ってることは同じ
531デフォルトの名無しさん:2009/03/29(日) 20:13:45
後からちょこちょこ追加されるよりは>>528のほうがマシ
532デフォルトの名無しさん:2009/03/29(日) 20:23:27
すいませんでした。しかし期限が詰まっているもので527番の回答なんですが、引き続き回答のほう
よろしくお願いします。今回はちょこちょこと付け加えてしまい迷惑をかけました。
533デフォルトの名無しさん:2009/03/29(日) 20:28:01
>>532
過去ログくらい読めカス
534デフォルトの名無しさん:2009/03/29(日) 20:29:02
解き方問題文中で丁寧に説明してるのになんで解けないのか理解できない
535527:2009/03/29(日) 20:30:04
お前らガタガタ抜かさんととっとと答えんかい!!
536デフォルトの名無しさん:2009/03/29(日) 20:38:01
527さん、偽者が現れ始めているのでfusianasanやった方がいいですよ
537IP address:2009/03/29(日) 20:40:22
問題10 マトリョーシカ
問題6 有料道路料金
問題7 おはじき取り

>>蛇の模様
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9003.txt
538デフォルトの名無しさん:2009/03/29(日) 21:21:48
>>524
theta=3.14*in/180.0;
sum+=0.5*sin(theta);

じゃないかな?
539IP address:2009/03/29(日) 21:42:56
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
  int i, r, atari, deta=0, hito, honn;

  atari = 1; // printf("あたりの本数を入力:%d\n", atari);
  printf("あみだくじに参加する人数を入力:"); scanf("%d", &hito);
  printf("あみだくじの本数を入力:"); scanf("%d", &honn);
  if(honn < atari) {
    printf("あたりの数が多すぎます\n"); return 2;
  }
  if(honn < hito) {
    printf("くじの本数が足りません\n"); return 2;
  }
  srand(time(NULL));
  for(i=1; i<=hito; i++) {
    r = rand();
// printf("%d/%d=%d 残り%d本\n", r, RAND_MAX/honn, r/(RAND_MAX/honn), honn );
    if(r/(RAND_MAX/honn) >= 0 && r/(RAND_MAX/honn) <= atari-1) {
      printf("%d 番の人◎\n", i);
      atari--; honn--;
    } else {
      printf("%d 番の人×\n", i);
      honn--;
    }
  }
  return 0;
}
540デフォルトの名無しさん:2009/03/29(日) 22:07:53
>>527 2007年本選の6 有料道路料金
#include<stdio.h>
void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
int get_distance(int from, int to){
static const int distance[]={0, 6, 13, 18, 23, 43, 58};
if(from>to) swap(&from, &to);
return distance[to-1]-distance[from-1];
}
int get_normal_price(int from, int to){
static const int price[][6]={
{ 300}, { 500, 350}, { 600, 450, 250}, { 700, 600, 400, 250},
{1350,1150,1000, 850, 600}, {1650,1500,1350,1300,1150, 500} };
if(from>to) swap(&from, &to);
return price[to-2][from-1];
}
int is_special_time(int hour, int min){
return (1730<=(hour*100+min) && (hour*100+min)<=1930);
}
int get_price(int from_ic, int from_hour, int from_min, int to_ic, int to_hour, int to_min){
int price=get_normal_price(from_ic, to_ic);
if(get_distance(from_ic, to_ic)<=40 && (is_special_time(from_hour, from_min) || is_special_time(to_hour, to_min))) price=((price/2)+50-1)/50*50;
return price;
}
int main(void){
int from_ic=0, from_hour, from_min, to_ic, to_hour, to_min;
for(;;from_ic=0){
scanf("%d %d %d %d %d %d", &from_ic, &from_hour, &from_min, &to_ic, &to_hour, &to_min);
if(from_ic==0) break;
printf("%d\n", get_price(from_ic, from_hour, from_min, to_ic, to_hour, to_min));
}
return 0;
}
541デフォルトの名無しさん:2009/03/29(日) 22:25:36
>>527 2007年本選の7 おはじき取り
#include<stdio.h>

int main(void){
int strategy_size, strategy[25];
int i, j, rest;

for(;;){
strategy_size=0;
scanf("%d", &strategy_size);
if(strategy_size<1) break;
for(i=0;i<strategy_size;i++) scanf("%d", &strategy[i]);
for(rest=32,j=0;rest>0;j++)
{
rest-=(rest-1)%5;
printf("%d\n", rest);
rest-=strategy[j%strategy_size];
if(rest<0) rest=0;
printf("%d\n", rest);
}
}
return 0;
}
542デフォルトの名無しさん:2009/03/29(日) 22:43:14
int main(void)
{ return 0; }
543デフォルトの名無しさん:2009/03/29(日) 23:01:52
回答ありがとうございました。
544IP address:2009/03/30(月) 00:05:18
>>539 問題文の読み違いがあったので、修正します。
printf("あたりの本数を入力:", atari); scanf("%d", &atari);
printf("あみだくじに参加する人数を入力:"); scanf("%d", &hito);
honn = hito; // printf("あみだくじの本数を入力:%d\n", honn);
if(honn < atari) {
 :
// printf("%d/%d=%d 残り%d本\n", r, RAND_MAX/honn, r/(RAND_MAX/honn), honn );
if(r/(RAND_MAX/honn) <= atari-1) {
545デフォルトの名無しさん:2009/03/30(月) 19:55:03
>>526
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void){
int hito, atari;
int i, j;

printf("参加者の人数 : ");
scanf("%d", &hito);
printf("当たりの数 : ");
scanf("%d", &atari);
srand(time(NULL));

printf("\n");
for(j=0;j<15;j++){
if(j%2) printf("│");
for(i=j%2;i<hito-1;i+=2) printf("%s", (rand()%3)?"├┤":"││");
if(i<hito) printf("│");
printf("\n");
}
for(i=0;i<hito;i++){
if((rand()%(hito-i))<atari){
atari--;
printf("◎");
}else printf("×");
}
printf("\n");

return 0;
}
546デフォルトの名無しさん:2009/03/30(月) 21:40:37
[1] 授業単元:C言語
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9005.txt
[3] 環境
 [3.1]OS:Windows
 [3.2] VC6.0
 [3.3]言語:C言語
[4]期限:4月1日
[5]その他の制限:ユーザ定義関数を利用する

どなたかよろしくお願いします。
547デフォルトの名無しさん:2009/03/30(月) 21:47:58
http://www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlにある2008年本選の
問1の三目並べの答えお願いします。
c言語 コンパイル gcc 
548デフォルトの名無しさん:2009/03/30(月) 21:49:07
http://www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlにある2008年本選の
問1の三目並べの答えお願いします。
c言語 コンパイル gcc 
549デフォルトの名無しさん:2009/03/30(月) 22:00:29
#include <stdio.h>
double abs(double d){ return d < 0 ? -d : d; }
double BMI(int h, int w){ return 10000.0 * w / h / h; }
void main(){
  int n, i, h, w, j;
  double d;
  while(scanf("%d", &n) && n){
    d = 2000000; /* BMI(1,200) */
    while(n--){
      scanf("%d %d %d", &i, &h, &w);
      if(abs(BMI(h,w)-22) < d){
        j = i;
        d = abs(BMI(h,w)-22);
      }
    }
    printf("%d\n", j);
  }
}
550デフォルトの名無しさん:2009/03/30(月) 22:29:36
>>547
#include <stdio.h>
int judge(int p){
  return (p & 7) == 7 || (p & (7<<3)) == (7<<3) || (p & (7<<6)) == (7<<6) ||
    (p & 73) == 73 || (p & (73<<1)) == (73<<1) || (p & (73<<2)) == (73<<2) ||
    (p & 273) == 273 || (p & 84) == 84;
}
void main(){
  char c;
  int n = 0, b = 0, w = 0;
  while(scanf("%c ", &c) && c != '0'){
    b <<= 1; b |= c == 'b' ? 1 : 0;
    w <<= 1; w |= c == 'w' ? 1 : 0;
    if(++n == 9){
      if(judge(b)) printf("b\n");
      else if(judge(w)) printf("w\n");
      else printf("NA\n");
      n = 0; b = 0; w = 0;
    }
  }
}
551デフォルトの名無しさん:2009/03/30(月) 22:53:30
http://www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlに記載されている
2007年の本選の問12 ブラックジャックの問題よろしくお願いします。
あと、問題を解く上でどのようなアルゴリズム、データを利用したか。と何の
処理を関数としたのかを付け加えてお手数だと思いますがよろしくお願いします。
OS xp
C言語
コンパイル gcc
552デフォルトの名無しさん:2009/03/30(月) 23:58:22
春休みに宿題があるわけが無いとはいえ、
大学生ならともかく、高校生の問題を解くのは飽きた・・・
553デフォルトの名無しさん:2009/03/31(火) 00:58:19
>>552
マトリョーシカの問題が結構難しいよ
554デフォルトの名無しさん:2009/03/31(火) 01:38:05
555デフォルトの名無しさん:2009/03/31(火) 10:09:51
どなたか>>546をお願いできませんか?
556デフォルトの名無しさん:2009/03/31(火) 10:20:48
>>546
557デフォルトの名無しさん:2009/03/31(火) 11:34:46
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double bmi(int height, int weight) { return 10000.0 * weight / (height * height); }

int main(void)
{
int *p, i, n, height, weight, indx = 0;
double min, temp;
FILE *fp;

if((fp=fopen("data.txt", "r"))==NULL) return 0;
while(1) {
fscanf(fp, "%d", &n);
if(n==0) break;
p = malloc(sizeof(int) * n);
fscanf(fp, "%d%d%d", p, &height, &weight);
min = fabs(22 - bmi(height, weight));
for(i=1; i<n; i++) {
fscanf(fp, "%d%d%d", p + i, &height, &weight);
temp = fabs(22 - bmi(height, weight));
if(temp < min || (temp == min && p[i] < p[indx])) min = temp, indx = i;
}
printf("%d\n", p[indx]);
free(p);
}
return 0;
}
558デフォルトの名無しさん:2009/03/31(火) 12:18:18
>>546
#include<stdio.h>
#include<math.h>

typedef struct tag_info_t{
long i;
double h, w;
}info_t;

double get_bmi(double h, double w){
return w/(h*h);
}

int main(void){
long i, n;
double bmi, best_bmi;
info_t x, best;

for(;;){
if(scanf("%ld", &n)!=1 || n<1) break;
for(i=0;i<n;i++){
scanf("%ld %lf %lf", &x.i, &x.h, &x.w);
bmi=get_bmi(x.h/100., x.w);
if(i==0 || fabs(best_bmi-22)>fabs(bmi-22)){
best=x;
best_bmi=bmi;
}
}
printf("%ld\n", best.i);
}
return 0;
}
559デフォルトの名無しさん:2009/03/31(火) 15:29:51
>>558
>受付番号の小さい方を出力することとします。
忘れてた
560デフォルトの名無しさん:2009/03/31(火) 15:39:46
>>559

>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。

そのくらいの修正は自分でやればいいとおもうんだな
561デフォルトの名無しさん:2009/03/31(火) 16:03:22
>>560
いや、問題文に書かれている文言で、
>>558は仕様を満たしてないってこと。
562デフォルトの名無しさん:2009/03/31(火) 16:06:28
>>561
ああ、失敬失敬
早計だった
563デフォルトの名無しさん:2009/03/31(火) 17:58:12
>>553
h優先とr優先の二系統で組み入れられる人形の多い方をとればいいよ。
564デフォルトの名無しさん:2009/03/31(火) 18:31:37
いちおー>>549>>546の回答なんやけどな。アンカ付け忘れたけど。
見て分からんのは、本人、問題読んでないんちゃうやろか?
読んでたらBMIって関数ある時点で判断できるやろ。すぐ下やし。
565デフォルトの名無しさん:2009/03/31(火) 19:53:11
>>564
C/C++系のスレで一番バカでやる気の無い質問者の溜まり場だからな
566デフォルトの名無しさん:2009/04/01(水) 04:35:17
ここで描かれたプログラム甲子園の回答は不合格とします
567デフォルトの名無しさん:2009/04/01(水) 13:28:50
[1] 授業単元:ばば抜きの者です
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9010.zip
[3] 環境
 [3.1] OS:Redhat, Win Xp Pro
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:いつもお世話になっています。153さんのソースを丸々使わせてもらいながらやっています。ほかにもいろいろ伺いながらやっています。
シミュレータなので何回か実行させて結果を比べたいのですが、どうも、最初の配る段階でいつも同じようにしか配ってくれない(並び替えが最初のまま)様です。
srandのtime(NULL)にプレイ回数をかけて見たら変わるかなとも思ったのですがどうやら変わらないようです。
何かヒントがあればよろしくお願いします。

今後書き出し方を変えてRで読み込めるようにしていこうと思っています。
568デフォルトの名無しさん:2009/04/01(水) 13:41:05
宿題じゃないなら続きはこっちでやってくれ

C言語でトランプゲームを作りたい
http://pc12.2ch.net/test/read.cgi/tech/1189892773/
569デフォルトの名無しさん:2009/04/01(水) 15:09:08
C言語の問題なんですが、

n個の実数データx(i)(i=1,2,3・・・n)を入力し、合計kei,件数n,平均ave,標準偏差sdを計算し、表示しなさい。ただし、ave,sd,の名で関数を作りなさい。また、終了データは0とする。計算式は次の通りである。

平均値:ave=1/n納i=1,n]x(i)
標準偏差:sd=√{1/n納i=1,n](x(i)-x')^2} x'は平均値

お願いします。
570569:2009/04/01(水) 15:10:44
細く
↑のC言語のプログラムを教えてください。
571569:2009/04/01(水) 15:12:05
○補足
×細く
572デフォルトの名無しさん:2009/04/01(水) 16:47:29
>>569
#include <stdio.h>
#include <math.h>
double kei(const double *data, unsigned int n)
{
unsigned int i;
double sum = 0.0;
for(i = 0 ; i < n; i++){ sum += data[i]; }
return sum;
}
double ave(const double *data, unsigned int n)
{ return kei(data, n) / n; }
double sd(const double *data, unsigned int n)
{
unsigned int i;
double a = ave(data, n), t = 0.0;
for(i = 0 ; i < n; i++)
{ t += (data[i]-a)*(data[i]-a); }
return sqrt(t/n);
}
int main()
{
unsigned int n = 0;
double data[1024];
while(!n || data[n-1] != 0.0){ scanf("%lf", data+n); n++; }
printf("kei: %lf\nave: %lf\nsd: %lf\n", kei(data,n), ave(data,n), sd(data,n));
return 0;
}
573デフォルトの名無しさん:2009/04/03(金) 04:04:53
[1] 授業単元:基礎
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9011.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:4月5日
[5] その他の制限:上記のソースに最低一つユーザ定義関数をつける

上記のソースにユーザ定義関数をつけてくださいorz
574デフォルトの名無しさん:2009/04/03(金) 04:22:43
>>573
それ以前に、そのプログラムは何をするプログラム?
575デフォルトの名無しさん:2009/04/03(金) 04:49:45
>>574
A君、Bさん、C君でバドミントンをします。
A君 VS Bさんの勝負をC君が記録しましたが、記録していたのはサーブの順番だけでした。
1セット3ゲーム11点先取で行い、デュースを適用しました。
C君が残した記録から得点を出力するプログラムを作成してください。
1ゲーム目は必ずA君から始まり、以降は最終ゲームの勝者からです。
また、1ゲーム中のサーブ回数は必ず100回以内です。

こういうものです。
576デフォルトの名無しさん:2009/04/03(金) 08:37:29
#include<stdio.h>
#include<string.h>
#define GM 3
#define MAX 101

void tokuten(char *buf){
int g,len;
int Ac = 0, Bc = 0;

len=strlen(buf);
for(g=1;g<len;g++){
if(buf[g]=='A') Ac++;
if(buf[g]=='B') Bc++;
}
printf("%d %d\n", Ac, Bc);
}

int main(void){
int i;
char buf[GM][MAX];

for(i = 0; i < GM; i++){
scanf("%s", buf[i]);
if(buf[i][0] == '0'){
return -1;
}
}
for(i = 0; i < GM; i++){
tokuten(buf[i]);
}
return 0;
}
577569:2009/04/03(金) 15:05:12
>>572
ありがとうございましたm(_ _)m
578デフォルトの名無しさん:2009/04/04(土) 13:53:55
[1] 授業単元:C++
[2] 問題文:
C++ではvalidではないがCではvalidなプログラムを書きなさいというなぞなぞみたいな
宿題が出ました。普通に考えるとCで動くプログラムはC++で動くはずですが、そうでないものを
書けというものみたいです。ヒントは、「C言語の経験がなくても出来る」だそうです。
型にはまらない発想でシンプルなコードを書きなさいと言われました。問題文は以上です。
(validの意味がコンパイル可能を指すのか動作可能なのかを確認し忘れてしまい、今確認
できないのですが、それでも何かピンと来る方宜しくお願いします)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限:4月6日
579デフォルトの名無しさん:2009/04/04(土) 14:01:10
>>578
スレを勃てるまでもないC/C++の質問はここで 8
http://pc12.2ch.net/test/read.cgi/tech/1235921779/489

489 名前:デフォルトの名無しさん[sage] 投稿日:2009/03/23(月) 09:24:50
char hoge[4] = "ABCD"; // これがエラーになるかどうか
580デフォルトの名無しさん:2009/04/04(土) 14:40:46
なそなぞではなく、C++ 優位
int main(void)
{
   char data;
   char pointer = &data;

   pointer = &data;
}
581デフォルトの名無しさん:2009/04/04(土) 14:47:29
>>578
関数プロトタイプのない関数の呼び出し
void* からの暗黙のポインタ変換
582デフォルトの名無しさん:2009/04/04(土) 15:40:42
[1] 授業単元:上級C++
[2] 問題文:ttp://www.dotup.org/uploda/www.dotup.org23539.zip.html
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語: C++
[4] 期限:4月6日
[5] その他の制限:
初回の宿題から難しく全く理解出来ないのでよろしくお願いします
サンプルコードを使って書くのか、単純にこれは参考に使うものなのかすらわかっていませんがよろしくおねがいします
583578:2009/04/04(土) 16:21:13
>>579, 580, 581
ありがとうございました
584デフォルトの名無しさん:2009/04/04(土) 16:25:51
[1] 授業単元:C++
[2] 問題文:std::copyと同じような機能が<algorithm>ヘッダのstd::tranformから提供されている。
使い方を理解し、std::transformを使用して以下のようなプログラムを作成しなさい。
- vectorにfloatを複数書き込む。
- 元のvectorのそれぞれの要素を二乗したものからなる新しいvectorを生成する。
- 新しいvectorを画面に表示する。
(ostream_iteratorを使う場合は出力時最後にコンマがつくかもしれないが、気にしなくて良い)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語: C++
[4] 期限:4月6日
585デフォルトの名無しさん:2009/04/04(土) 16:43:58
586デフォルトの名無しさん:2009/04/04(土) 20:17:52
>>582
使えってかいてあるからとりあえず使うだけのコード
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9014.cpp
587デフォルトの名無しさん:2009/04/04(土) 20:30:19
>>584
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
float power2(float x)
{ return x*x; }
int main()
{
const int size = 10; float c = 0.1;
std::vector<float> vec1(size), vec2(size);
for(int i = 0; i < size; ++i){ vec1[i] = c; c += 1.1; }
std::transform(vec1.begin(), vec1.end(), vec2.begin(), power2);
std::copy(vec2.begin(), vec2.end(), std::ostream_iterator<float>(std::cout, ","));
return 0;
}
588デフォルトの名無しさん:2009/04/05(日) 00:55:26
>>586
助かりました!有り難うございました。
589584:2009/04/05(日) 01:55:15
>>587
ありがとうございました!これから解読します
590デフォルトの名無しさん:2009/04/05(日) 03:21:24
解読する価値ねーだろ
591デフォルトの名無しさん:2009/04/05(日) 03:23:05
価値というか、問題文そのまま書き下しただけだな
592デフォルトの名無しさん:2009/04/05(日) 03:29:26
お前引っこんでろ
593デフォルトの名無しさん:2009/04/05(日) 03:33:04
>>589
あんまいじると可哀想だろ 
そのへんでやめとけ
594デフォルトの名無しさん:2009/04/05(日) 12:59:37
#include <stdio.h>
【  1  】      /* 文字列の標準ヘッダーファイルの取り込み */
#define TRUE 1
#define FALSE 0

int passCheck(char *p); /* ユーザー作成関数のプロトタイプ宣言 */

void main()
{
char buff[256];
int cnt, flg = FALSE;

for (cnt=1; 【  2  】 ; cnt++)
{
printf("パスワードは?=> ");
scanf("%s",buff);

flg = 【  3  】 ;

if (flg == TRUE)
printf("パスワードは合致しました。\n");
else
printf("%d回目 入力ワード %s は間違っています。\n",cnt,buff);
}
}

595デフォルトの名無しさん:2009/04/05(日) 13:00:24
int passCheck(char *p)
{
static char *pass = "MissionC";
int flg;

flg = strcmp(pass,p);

if (【  4  】 )
return TRUE;
else
return FALSE;
}
596デフォルトの名無しさん:2009/04/05(日) 13:02:59
1,2,3,4に入る解答を教えて
597デフォルトの名無しさん:2009/04/05(日) 13:13:16
>>595-596 3回もしなくても、1回で投稿できるだろう。
#include <string.h>
!fig
passCheck(buff)
!fig
598デフォルトの名無しさん:2009/04/05(日) 13:22:14
回答群から選ぶ問題だった

1
#include "string.h"
#include <string.h>
#include <strcmp.h>
#include <strings.h>

2
cnt<=3 and flg==FALSE
cnt<3 && flg!=TRUE
cnt<=3 && flg==FALSE
newStr[5]

3
passCheck(*p)
passCheck(p)
passCheck(&buff)
passCheck(buff)

4
flg > 0
flg = 0
flg < 0
flg == 0
599デフォルトの名無しさん:2009/04/05(日) 13:26:16
>>598
>>1
>・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
#include <string.h>
cnt<=3 && flg==FALSE
passCheck(buff)
flg == 0
600デフォルトの名無しさん:2009/04/05(日) 15:08:13
[1] 授業単元:C++
[2] 問題文:
16行からなるパスカルの三角形をコンソールに出力するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語: C++
[4] 期限:4月7日
[5] その他制限事項:
(1)正三角形にすること。(各行がコンソール左端ぴったりから始まるような直角三角形ではない)
(2)一つのデータの入る領域を「レンガ」とすると、レンガのサイズは三角形を構成するデータの
最大値の桁を格納出来る大きさとしなさい。ただし見栄えの点から偶数の場合は奇数にした方がよいでしょう。
(=>つまりサイズは4桁(+1)=5にしろって言ってるんだと思います)
(3)数値はレンガの真ん中に位置するようにしなさい。
(4)入れ子のコンテナを使用しなさい。(例 vector<vector<int>>)

よろしるおねがいします
601デフォルトの名無しさん:2009/04/05(日) 15:22:37
>>600
ぐぐれ
602600:2009/04/05(日) 15:38:41
>>601
ぐぐると似た者はたくさんあるのですが制限事項を満たした者がありませんでした。
ttp://www.daniweb.com/forums/thread49939.html
とかは6行目くらいから正三角形が崩れて来るし、最終的に微妙な三角形になるし、
というわけでよろしるおねがいします
603デフォルトの名無しさん:2009/04/05(日) 16:53:55
あなたは、10とか1000の桁数偶数の場合は、5桁の中央にどう配置するのか?
604デフォルトの名無しさん:2009/04/05(日) 17:36:04
_1_0_
10_00
605デフォルトの名無しさん:2009/04/05(日) 17:57:49
>>604 OK. あと、STL使うみたい。
#include <iostream>
int main(void){ std::cout <<
"_______________________________________________1__ \n" <<
"____________________________________________1_____1__ \n" <<
"_________________________________________1_____2_____1__ \n" <<
"______________________________________1_____3_____3_____1__ \n" <<
"___________________________________1_____4_____6_____4_____1__ \n" <<
"________________________________1_____5____1 0___1 0____5_____1__ \n" <<
"_____________________________1_____6____1 5___2 0___1 5____6_____1__ \n" <<
"__________________________1_____7____2 1___3 5___3 5___2 1____7_____1__ \n" <<
"_______________________1_____8____2 8___5 6___7 0___5 6___2 8____8_____1__ \n" <<
"____________________1_____9____3 6___8 4___126___126___8 4___3 6____9_____1__ \n" <<
"_________________1____1 0___4 5___120___210___252___210___120___4 5___1 0____1__ \n" <<
"______________1____1 1___5 5___165___330___462___462___330___165___5 5___1 1____1__ \n" <<
"___________1____1 2___6 6___220___495___792___924___792___495___220___6 6___1 2____1__ \n" <<
"________1____1 3___7 8___286___715__12 87_17 16_17 16_12 87__715___286___7 8___1 3____1__ \n" <<
"_____1____1 4___9 1___364__10 01_20 02_30 03_34 32_30 03_20 02_10 01__364___9 1___1 4____1__ \n" <<
"__1____1 5___105___455__13 65_30 03_50 05_64 35_64 35_50 05_30 03_13 65__455___105___1 5____1__ \n" ;
}
606600:2009/04/06(月) 00:52:27
↑こんな感じで表示出来ると助かるのですが
どなたかコンテナを使ったプログラムでお願い出来ないでしょうか
607デフォルトの名無しさん:2009/04/06(月) 01:06:27
これって正三角形じゃなくて二等辺三角形だよな
608デフォルトの名無しさん:2009/04/06(月) 01:16:04
教員の端末がプロポーショナルフォントだったら・・・
609600:2009/04/06(月) 01:28:10
「正」じゃなくて二等辺でもたぶん大丈夫です
610デフォルトの名無しさん:2009/04/06(月) 01:42:20
printf("%*d",WID,NUM);
WID 文字数の指定
NUM 値
611デフォルトの名無しさん:2009/04/06(月) 01:43:05
C++でも書式の指定ができるものがあったような・・・
612デフォルトの名無しさん:2009/04/06(月) 01:44:52
#include <vector>

typedef std::vector<int> VecInt;
typedef std::vector<VecInt> VecVecInt;

void main()
{
VecVecInt vvi;

vvi[0][0] = 1;

vvi[1][0] = 1;
vvi[1][1] = 1;

vvi[2][0] = 1;
vvi[2][1] = 2;
vvi[2][2] = 1;
}
613デフォルトの名無しさん:2009/04/06(月) 02:14:45
#include <stdio.h>
#include <vector>

typedef std::vector<int> VecInt;
typedef std::vector<VecInt> VecVecInt;

void main()
{
VecVecInt vvi;
VecInt vi;
int iRow, iCol;
int iStep = 10;

vi.push_back(1);
vvi.push_back(vi);
for (iRow = 0; iRow < iStep; iRow++) {
vi.clear();
vi.resize(iRow + 2, 0);
vvi.push_back(vi);
for (iCol = 0; iCol <= iRow; iCol++) {
vvi[iRow + 1][iCol] += vvi[iRow][iCol];
vvi[iRow + 1][iCol + 1] += vvi[iRow][iCol];
}
}

for (iRow = 0; iRow < iStep; iRow++) {
for (iCol = 0; iCol <= iRow; iCol++) {
printf("%d,", vvi[iRow][iCol]);
}
printf("\n");
}
}
614デフォルトの名無しさん:2009/04/06(月) 02:16:20
1,
1,1,
1,2,1,
1,3,3,1,
1,4,6,4,1,
1,5,10,10,5,1,
1,6,15,20,15,6,1,
1,7,21,35,35,21,7,1,
1,8,28,56,70,56,28,8,1,
1,9,36,84,126,126,84,36,9,1,
615600:2009/04/06(月) 02:27:33
毎行左端からスタートではない左辺と右辺の二等辺である三角形に出来ませんか?
(イメージ的に605みたいな)
616デフォルトの名無しさん:2009/04/06(月) 02:33:38
#include <stdio.h>
#include <string.h>

char* NumFmt(unsigned int uiNum)
{
static int aiPos[][5] = {{2},{1,3},{1,2,3},{0,1,3,4},{0,1,2,3,4}};
static char acRet[6];
char acBuf[16];
size_t uiLen;
unsigned int ui;

sprintf(acBuf, "%u", uiNum);
uiLen = strlen(acBuf);
if (5 < uiLen) return NULL;
strcpy(acRet, "_____");
for (ui = 0; ui < uiLen; ui++) {
acRet[aiPos[uiLen - 1][ui]] = acBuf[ui];
}
return acRet;
}

void main()
{
printf("%s\n", NumFmt(5));
printf("%s\n", NumFmt(55));
printf("%s\n", NumFmt(555));
printf("%s\n", NumFmt(5555));
printf("%s\n", NumFmt(55555));
}
617デフォルトの名無しさん:2009/04/06(月) 02:35:52
__5__
_5_5_
_555_
55_55
55555

一応、骨格と部品は用意したんで
適当に加工してちょ
もっと綺麗に書けたらなぁw
618デフォルトの名無しさん:2009/04/06(月) 03:51:43
619600:2009/04/06(月) 04:00:09
>>618
完璧です。。ほんとに感謝です!
ありがとうございました!
620デフォルトの名無しさん:2009/04/06(月) 09:00:45
#include <stdio.h>
#include <string.h>
#include <vector>

#define N 14

using namespace std;

void main()
{
vector< vector<int> > vvi;
vector<int> vi;
char acBuf[16];
int iRow, iCol, iMax = 0, iMaxLen, i, iSpc;

for (iRow = 0; iRow < N; iRow++) {
vi.push_back(1);
for (iCol = iRow - 1; 0 < iCol; iCol--) {
vi[iCol] += vi[iCol - 1];
iMax = __max(iMax, vi[iCol]);
}
vvi.push_back(vi);
}
621デフォルトの名無しさん:2009/04/06(月) 09:02:04
sprintf(acBuf, "%d", iMax);
iMaxLen = strlen(acBuf);
iMaxLen |= 1; // 奇数に繰り上げ

for (iRow = 0; iRow < N; iRow++) {
for (i = 0; i < (iMaxLen / 2 + 1) * (N - 1 - iRow); i++) putchar(' ');
for (iCol = 0; iCol <= iRow; iCol++) {
sprintf(acBuf, "%d", vvi[iRow][iCol]);
iSpc = iMaxLen - strlen(acBuf);
for (i = 0; i < iSpc / 2; i++) putchar(' ');
printf(acBuf);
for (i = 0; i < (iSpc + 1) / 2; i++) putchar(' ');
putchar(' ');
}
putchar('\n');
}
}

もう解答は上がってるけど、別解として
622デフォルトの名無しさん:2009/04/06(月) 09:30:13
くせぇくせぇ、後出し麻呂の臭いがぷんぷんすんぜ
こりゃ〜クソースだぁ〜クソースは消毒だぁ〜
623デフォルトの名無しさん:2009/04/06(月) 09:38:04
g++ だと、void main はコンパイルエラーになる。
#define __max(a,b) a>b?a:b
どれだけ花がいいんだ。
624デフォルトの名無しさん:2009/04/06(月) 10:31:46
ttp://www.dotup.org/uploda/www.dotup.org26594.zip.html

四つの引数をとるバージョンのaccumulateを使用して、26行目、27行目のtransformとaccumulate(三つの引数バージョン)
を合体するにはどうしたらいいですか?単純に繋いだらコンパイルエラーになりますた(28行目)
あっそれとinnerproductは使っちゃいけないみたいなのであくまでも4つの引数をとるaccumulateバージョンでお願いします
625デフォルトの名無しさん:2009/04/06(月) 11:23:42
template<class T>
struct power : public binary_function<T, T, T> {
T operator()(const T& x, const T& y) const {
return x + y * y;
}
};

sum=std::accumulate(new_vec.begin(), new_vec.end(), 0, power<float>());

こんな感じにすればいいんじゃね?よく分からんが
626デフォルトの名無しさん:2009/04/06(月) 14:49:20
>>618 #define N 17 だと、なぜかダメ。
627デフォルトの名無しさん:2009/04/06(月) 15:25:28
>>626
最大表示桁数が5桁を超えるからじゃないの?
628デフォルトの名無しさん:2009/04/06(月) 15:28:48
>>578
new delete 等の C++ キーワードを変数名に
629624:2009/04/06(月) 16:10:26
>>625
おぉ!すごいできました。
ありがとうございました。(^人^)感謝♪
630569:2009/04/08(水) 19:10:27
>>572のプログラムについてなんですが、
各行にコメントをつけなきゃなくて、さらに提出するときに説明しなきゃないんですけど、
while(!n || data[n-1] != 0.0){ scanf("%lf", data+n); n++; }の文について誰か詳しく教えてくれませんか?
あとこのプログラムだと平均値が終了データの0まで件数にカウントされているらしく、
例えば1、2、3の平均値は2になるはずが、(1+2+3+0)÷4=1.5となってしまっているので、
修正の仕方を教えてくださいm(_ _)m
631デフォルトの名無しさん:2009/04/08(水) 19:35:20
while (n < 1024) {
if (scanf("%lf", &data[n]) != 1) { // 入力
scanf("%*s"); // 入力バッファ読み捨て
printf("error\n");
continue;
}
if (data[n] == 0.0) { // 0なら入力終了
break;
}
n++;
}

改良案
632デフォルトの名無しさん:2009/04/08(水) 20:05:04
[1] 授業単元: ファイルの入出力(fprintf文の高度な使用法)
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9019.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc )
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: 来週の月曜日まで
[5] その他の制限: 特に無し
633デフォルトの名無しさん:2009/04/08(水) 21:26:26
問題文正確か?
634632:2009/04/08(水) 21:40:51
>>633
一応正確ですよ
よろしくお願い致します。
635デフォルトの名無しさん:2009/04/08(水) 22:50:27
まだ4月初めなのにもう課題がでてるの?
どういう学校だろうか。

うちなんかこれから講義資料作りますよ。
自分が出した問題がここに出てくるかwktkしながら見ることにします。
636632:2009/04/08(水) 23:12:35
>>635
専門学校ですのでカリキュラムがギュウギュウなんですよ
出来るようならお願い致します
637デフォルトの名無しさん:2009/04/08(水) 23:15:23
いったい何のために専門学校に入ったの?
638デフォルトの名無しさん:2009/04/08(水) 23:17:29
>>636
カリキュラムがギュウギュウって本当か?
卒業時にバブルソートがなんとかできるとかじゃないよな?
639 ◆zQ5xe/OcaA :2009/04/08(水) 23:20:42
>>632
int main()
{
  output=fopen("vib1.inp","w");
  t=0.0, x[1]=1.0; x[2]=0.0;

  printf("%10.5lf\n",t);
  printf("%10.5lf%10.5lf\n",x[1],x[2]);

  fprintf(output,"♯AVS field file\n");
  fprintf(output,"%d\n",NMAX+1);
  fprintf(output,"data_geom\n");
  fprintf(output,"step%d step%d\n%d %d\n%d",1,1,1,1,1);
  fprintf(output,"%9.6lf%9.6lf%9.6lf\n",x[1],0.0,0.0);
  fprintf(output,"%d 1 pt %d\n%d %d\n%d %d\n",1,1,1,0,1,1);
  fprintf(output,"radius,\n%d%4.1f\n",1,1.0);

  for(i=1; i<=NMAX;i++){
    t=((double) i)*h;
    fprintf(output,"step%d step%d\n%d %d\n%d",i+1,i+1,1,1,1);
////////////////////////////////////////////////////////////////////////////////
    runge( vib,x,f,wrk1,wrk2,t,h,n);
////////////////////////////////////////////////////////////////////////////////
    fprintf(output,"%9.6lf%9.6lf%9.6lf\n",x[1],0.0,0.0);
    fprintf(output,"%d 1 pt %d\n%d %d\n%d %d\n",1,1,1,0,1,1);
    fprintf(output,"radius,\n%d%4.1f\n",1,1.0);
    printf("%10.5lf\n",t);
    printf("%10.5lf%10.5lf\n",x[1],x[2]);
  }
}
640632:2009/04/08(水) 23:21:05
>>637
プログラムの勉強をするためです
>>638
卒業時には立派なプログラマー予備軍?になってるだろうと先生から言われています
641632:2009/04/08(水) 23:27:17
>>639
このままだとエラーが結構出ますがこれを参考にしろってことですね
ありがとうございます。やってみます
642デフォルトの名無しさん:2009/04/09(木) 00:42:36
プログラムの勉強をするために専門学校に入って、ここで宿題解いてもらうのか。

とりあえずうちの会社には来ないでね。
643569:2009/04/09(木) 06:40:55
>>631
ありがとうございましたm(_ _)m
644デフォルトの名無しさん:2009/04/09(木) 06:54:06
>>642
とか言うお前の会社はそいつが卒業する頃には倒産しているから、安心しろw
645デフォルトの名無しさん:2009/04/09(木) 06:56:19
そこまで偉そうに自分の会社のことを言うなら、名前を自分の役職を名乗れよ
どうせしょぼい中小企業だろ。見向きもされていないくせに、まともな給与で
人材を雇えないくせに、こんなスレで下を見下すような発言をしに来るなんて・・・
儲かってねーんだろ?w とっとと潰れろ
646デフォルトの名無しさん:2009/04/09(木) 07:00:00
性帝トーマスか、まだ潰れてないのかよ、お前の会社は?
少なくともお前みたいなのは大企業と提携できないから、安心しろw
647645:2009/04/09(木) 07:20:21
とはいえ俺も632とは一緒に働きたくないなw
648デフォルトの名無しさん:2009/04/09(木) 07:29:59
ねぇねぇ、自分の会社に来て欲しくないのに、どうして会社名を言わないの?
間違ってそいつがあんたの会社に就職活動に来た場合、知らずに雇ってたら
どうするの?そいつがお前の会社に履歴書を出す前に食い止めるためにも、
こんなスレで質問するような学生に、将来自分の会社に来て欲しくない奴は
会社名と自分の名前、役職を名乗れよ?こっちはそんなバカ企業とは提携しないように
ブラックリストに入れておいてやるからw
649デフォルトの名無しさん:2009/04/09(木) 13:57:19
必死だな
650デフォルトの名無しさん:2009/04/10(金) 00:19:50
[1] 授業単元:長桁計算
[2] 問題文(含コード&リンク):50桁程度の2つの自然数nおよびmを入力とし,nCmの値を出力するプログラムを作成せよ.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C言語
[4] 期限:無期限
[5] その他の制限:長桁計算を必ず用いること.実数型の変数を使用しないこと.

難しすぎて全くわかりません….
みなさん,おねがいします!
651デフォルトの名無しさん:2009/04/10(金) 00:44:53
nCmを計算する関数はこんな感じで書ける。
あとはintで計算しているところを多倍長の加減算に置き換えればよいはず。

int comb (int n, int m) {
if (m == 0 || n == m)
return 1;
else
return comb(n - 1, m) + comb(n - 1, m - 1);
}
652デフォルトの名無しさん:2009/04/10(金) 00:48:35
>>651のやり方だと多倍長の乗除算ルーチンを作らなくていいからラクチン
なんだけど、nやmが50桁になった場合、弥勒菩薩がやってくるまでに計算が
終わらない可能性がある。
653デフォルトの名無しさん:2009/04/10(金) 00:56:15
>>651
永遠に計算が終わらないぞ
654651:2009/04/10(金) 01:05:46
えへへ。>>650がだまされないかなと思って。
フィボナッチを漸化式通りの再帰で定義するみたいなダメ再帰の例ですね。

>>653
一応有限時間で終わる計算なんだから永遠に終わらないというのはマチガイ。

655デフォルトの名無しさん:2009/04/10(金) 01:11:44
ちょっと待て。 >>650 には
>[4] 期限:無期限
とあるから、計算時間はいくらかかってもいいのではないか。
656デフォルトの名無しさん:2009/04/10(金) 01:36:39
フィボナッチはメモ化を使って再帰すれば早いと思うけど。
657デフォルトの名無しさん:2009/04/10(金) 01:48:23
おまいら、質問スレで質問者をいじめるなよw

現実的な時間でその桁数のコンビネーションを求めるのは不可能じゃないかな?
658デフォルトの名無しさん:2009/04/10(金) 01:50:32
nCrなんてパスカルの三角形を用いればどうってことない
659デフォルトの名無しさん:2009/04/10(金) 08:11:27
>>658
50桁っていうのが問題でしょ
660デフォルトの名無しさん:2009/04/10(金) 08:13:47
やれやれ、わかってないな。だから32bitで約43億、乗算せずに
加算で済むからそれに応じて後は組めば良いのだが、問題でしょって
わかっとるわいw
661デフォルトの名無しさん:2009/04/10(金) 08:16:52
でだ、10億を上限とすれば、int型の変数1つは999999999までだから
それらを足しても上限は20億に満たないで済む。もう分かっただろ?
662デフォルトの名無しさん:2009/04/10(金) 08:23:48
unsigned型なら42億まで行けるから内部の計算回数も半分で済みますね!

そういうこといってるんじゃないだろ、アホ
663650:2009/04/10(金) 08:25:21
>>661
すいません。わからないです

長桁のやり方はある程度わかるんですが
nやmを50桁とするコンビネーションの計算を短時間で解くのは無理な気がします
664デフォルトの名無しさん:2009/04/10(金) 08:34:48
50桁って10^50=150bitだもんなあ

nCrなんてn-kかけてkで割るのを繰り返すだけだけど、
forのカウンタも長桁数でやるってのは新しいかもしれない
665デフォルトの名無しさん:2009/04/10(金) 08:39:15
>>650だとC++使っちゃいけないみたいだから
演算子オーバーロードできなくて涙目じゃね?
666デフォルトの名無しさん:2009/04/10(金) 08:52:25
出力が最悪(50桁)桁になる時点で無理ぽ
667デフォルトの名無しさん:2009/04/10(金) 10:32:28
「50桁用のプログラムつくれ」だから、この場合実行しなくてもいいので。
それで、一応ロングなら。
#include <stdio.h>

/* mからnまでの積を再帰的に計算する関数 (m<=n) */
long int factorial (int m, int n) {
if (m == n)
  return m;
else
  return m * factorial(m + 1, n);
}
/* nCr=n(n-1)(n-2)・・・(n-r+1)/r!*/
int main(void){
  int m=0, n=0;
  long int a, b;

  printf("Enter M N:");
  scanf("%d%d",&m,&n);
  a = factorial(m-n+1, m); b = factorial(1,n);
  printf("%dC%d=%ld/%ld=%ld", m, n, a, b, a/b);
  puts(""); n = m - n;
  a = factorial(m-n+1, m); b = factorial(1,n);
  printf("%dC%d=%ld/%ld=%ld", m, n, a, b, a/b);
}
668デフォルトの名無しさん:2009/04/10(金) 10:45:11
>>667
ほほう、そのscanfでどうやって50桁読み込むんだい?
669デフォルトの名無しさん:2009/04/10(金) 11:01:41
5000と2000でも15msしかかからんな。セレロンの初期の方だが。

#include<iostream>
#include<gmpxx.h>
#include <time.h>
#pragma comment(lib, "gmp.lib")
using namespace std;

mpz_class factorial(int n){
mpz_class x = 1;
for(int k=1; k<=n; k++) x*=k;
return x; }

int main(){
int m=5000, n=2000, cl=clock();

mpz_class x = factorial(m)/(factorial(n)*factorial(m-n));
cl=clock()-cl;
cout << x.get_str() << endl;
cout << cl<<" ms" << endl;

getchar();
return 0;
}
670デフォルトの名無しさん:2009/04/10(金) 11:05:23
>>663
効率の悪い計算方法 5000!/ (2000! * 3000! )でしても
15msしかかからん。 50程度だとclock()では測定不可能。1ms以下。
671デフォルトの名無しさん:2009/04/10(金) 11:06:59
>>663
間違えてた。 50程度とおもってた。 50桁だった。
672デフォルトの名無しさん:2009/04/10(金) 11:14:25
階乗をまじめに計算してると途中でオーバーフローするのでは。
多倍長ならそういう心配はないのかも知れないけど。

これなら最終結果がオーバーフローしなければ途中結果もオーバー
フローしない。除算があるけど常に割り切れてるから問題ない。
まあ、多倍長にしたとき除算がめんどうかもね。

int comb (int n, int r) {
int ans = 1, i;
for (i = n; i > n - r; i--)
ans = ans * i / (n - i + 1);
return ans;
}
673デフォルトの名無しさん:2009/04/10(金) 11:15:28
674デフォルトの名無しさん:2009/04/10(金) 11:17:45
>>673
tiny_mpって何?
675デフォルトの名無しさん:2009/04/10(金) 11:18:05
7を50個続けた数までの階乗計算しようとしたら、GMP使ってもすぐに出てこない。
30秒ほどまっても駄目だったので終了した。

#include<iostream>
#include<gmpxx.h>
#include <time.h>
#pragma comment(lib, "gmp.lib")
using namespace std;

int main(){
mpz_class n, x=1, end("77777777777777777777777777777777777777777777777777");
int cl=clock();
for(n=1; n<=end; n++) x*=n;
cl=clock()-cl;
printf("%d\n",cl);
return 0; }
676デフォルトの名無しさん:2009/04/10(金) 11:35:14
計算効率よくしても無理だった。 実行時にメモリ関係のエラーで停止する。

#include<iostream>
#include<gmpxx.h>
#include <time.h>
#pragma comment(lib, "gmp.lib")
using namespace std;

mpz_class combination(mpz_class m, mpz_class n){
if(m==n || m==0) return 1;
return combination(m-1,n-1) + combination(m-1,n);
}

int main(){
mpz_class m("77777777777777777777777777777777777777777777777777");
mpz_class n("33333333333333333333333333333333333333333");

int cl=clock();
combination(m,n);
cl=clock()-cl;
printf("%d\n",cl);
getchar();

return 0; }
677デフォルトの名無しさん:2009/04/10(金) 11:39:06
よく考えると、再帰では実現無理だな。 32bit数程度の再帰回数もc++はこなせないからね。
678デフォルトの名無しさん:2009/04/10(金) 11:42:19
>>672 を多倍長にすればいいんじゃないかな。
679デフォルトの名無しさん:2009/04/10(金) 11:59:38
>>678
GMPで計算してみたけど、計算が停止しそうにないな。 
高速化のために足し算だけで計算したい所だが・・・。
しかし、何の処理もしない空のループであっても、10進50桁程度ではどれくらいかかるんだろうか。 

#include<iostream>
#include<gmpxx.h>
#include <time.h>
#pragma comment(lib, "gmp.lib")
using namespace std;

mpz_class combination(mpz_class m, mpz_class n){
mpz_class x=1, i;
for (i = m; i > m - n; i--) x *= i / (m - i + 1);
return x; }

int main(){
mpz_class m("77777777777777777777777777777777777777777777777777");
mpz_class n("33333333333333333333333333333333333333333");

int cl=clock();
mpz_class x=combination(m,n);
//cout << x.get_str() << endl;
cl=clock()-cl;
printf("%d\n",cl);
getchar();
return 0; }
680デフォルトの名無しさん:2009/04/10(金) 12:00:44
681デフォルトの名無しさん:2009/04/10(金) 12:05:41
スターリングの公式の大まかな値を求めることでよしとしよう
682デフォルトの名無しさん:2009/04/10(金) 12:22:16
もうBCDでやれ
683デフォルトの名無しさん:2009/04/10(金) 12:32:09
>>680
「50桁程度の2つの自然数」だから
#define KETAを修正しないといけないかもね。
684デフォルトの名無しさん:2009/04/10(金) 12:36:03
nが50桁の場合、nCrは最大何桁ぐらいになるのだろうか?
685デフォルトの名無しさん:2009/04/10(金) 12:41:26
スターリングの公式の厳密化したものを使えば値はよくなる。

http://www.lassp.cornell.edu/sethna/Cracks/Stirling.html
http://hirokuro-web.hp.infoseek.co.jp/kousiki2.html
686デフォルトの名無しさん:2009/04/10(金) 12:50:47
>>684

m=10^51-2 n=m/2
として、

log(n!)=n(logn-0.434) + (1/2)*logn + 2.5、 (スターリングの公式)

log(comb(m,n))=log(m!)-log(n!)-log((m-n)!)
を使えば求まる。
687デフォルトの名無しさん:2009/04/10(金) 13:09:26
50桁の厳密解はどう考えても無理だろ?
そしたら、m = 10^k 、 n = m/2 が最短で解けるアルゴリズムを考えることは意味あると思う。
無理でも何桁まで挑戦できるか考えるって事。
たとえばk=3ならば、 comb(1000,500)ってこと。
688デフォルトの名無しさん:2009/04/10(金) 13:16:45
comb(1000,500)は、1000*・・・*500/500!だが
500-250までの数は2倍すると上の数と一致するから簡単に割り算できる。
250-1までの数についても、割り算の結果がすぐに判るようなアルゴリズムがあれば
実質的には500回の掛け算をするだけですむんだが。
689デフォルトの名無しさん:2009/04/10(金) 14:05:59
(実数型を使わずに)文字型を使って組合せを求めるコードを書こうと思ったんだが
「長桁計算を必ず用いる」ってのは、もう書かれてるようなGMPとかで内部的に整数型を使わなきゃまずいのか?
690デフォルトの名無しさん:2009/04/10(金) 14:11:22
unsigned short int型の演算だと、32bit以内に収まるから2バイトの配列に演算を定義すればいいと思う。
691667:2009/04/10(金) 14:19:02
>>672 再帰にしてみたらどうか。
>>668 scanf()はこれでどうか? ^-^
#include <stdio.h>
int comb (int n, int r, int i) {
  if(i > n) return 1;
  return comb(n,r,i+1)*i / (n-i+1);
}
int main(void){
  int m=0,n=0;
  printf("Enter M N:");
  scanf("%99d%99d",&m,&n);
  printf("%dC%d=%d", m, n, comb(m,n,m-n+1));
  puts(""); n = m - n;
  printf("%dC%d=%d", m, n, comb(m,n,m-n+1));
}
692デフォルトの名無しさん:2009/04/10(金) 14:38:30
>>691
int型に99桁10進を読み込めるってどんな環境だよ
693デフォルトの名無しさん:2009/04/10(金) 18:29:33
>>650 は付いてきてるのか?
694デフォルトの名無しさん:2009/04/10(金) 18:32:48
C/C++言語の課題じゃないな
695デフォルトの名無しさん:2009/04/10(金) 22:27:28
>>679
> しかし、何の処理もしない空のループであっても、10進50桁程度ではどれくらいかかるんだろうか。 
1loop/clockとして、最初は3GHzでムーアの法則を考慮すると、たぶん180〜190年。
696デフォルトの名無しさん:2009/04/11(土) 07:56:27
さて、答えは出たかな?パスカルの三角形を使おうが、求める数が多すぎるのも厄介。
三角形を見てわかる様に、例えばnCrに於いて rがn/2以上ならn-rの組み合わせと
同じ故に求める数も半分で済むとは言え、50桁もある数ともなればご丁寧に
その半分を求めたとしても大変なことだ。まぁ、そんなことせずとも
rの値でどの範囲を求めれば良いか分かっているようなので、あとは個人の知識、
腕次第だ。健闘を祈る。
697デフォルトの名無しさん:2009/04/11(土) 08:14:36
nが10万くらいならメモリに計算結果を蓄えられるだろうから、
パスカルの三角形で計算して上を参照すれば速い気はする。
しかし、どんだけ速くしても、50桁の空ループより時間は掛かるだろうから
695の値が正しいとして180年はかかる
698デフォルトの名無しさん:2009/04/11(土) 08:17:45
あとは、n!の級数展開(スターリングの公式)が判れば
それをもちいてほぼ正確な値は短時間でもとまる。
もし、下位2桁以外まで正確にもとめられたとすれば
あと2桁は別の方法で計算することも出来そうだ。
699デフォルトの名無しさん:2009/04/11(土) 08:27:13
ここになにかかいてある

計算機向けの変形
ガンマ関数の(関数電卓などの)計算機向けの近似として次の式がある。
これは、次と同等である。
これらはスターリングの公式を組み替えて、その結果生じる冪級数と双曲線正弦関数のテイラー展開の間の合致を観察することで得られる。
この近似は z の実数部が 8 以上のとき、小数点以下 8 桁を超える精度を持つ。
2002年、Robert H. Windschitl がリソースの制限された計算機(電卓など)でのそれなりの正確性を持った近似としてこれを示した(参考文献の 'Toth' 参照)。
Gerg? Nemes は 2007年にほぼ同程度の結果を与える近似式を提案した。こちらはより単純である。
スターリングの近似 - Wikipedia
700デフォルトの名無しさん:2009/04/11(土) 08:43:18
wikipediaの記事は信頼できると思うので、これを用いれば50桁の厳密解も求められそうだ。
ガンマ関数は、階乗を一般化したものなので。


> z の実数部が 8 以上のとき、小数点以下 8 桁を超える精度
701デフォルトの名無しさん:2009/04/11(土) 10:17:14
ガンマ関数の近似式を使った50桁の組合せの計算まだ
702650:2009/04/11(土) 11:25:55
たくさんの回答,ありがとうございます.
今日,先生に質問にいったところ,特に「50桁」という部分にはこだわらなくても良いとのことでした.

つまり,nやmに50桁の数値を入力すると,演算時間が長すぎて解答を得るのは不可能になってしまう場合があるが,
それは気にせず50桁の数値を入力できるようにしてあれば良いということだと思います.

とりあえず,皆さんの今までの回答を参考にして,プログラムを作ってみたいと思います.
ありがとうございました.
703デフォルトの名無しさん:2009/04/11(土) 11:30:10
ガンマ関数の近似式の精度は、小数点以下8桁まで正確らしいので
これを使えば50桁でもいけるはずだ。
704E−mail:sage:2009/04/11(土) 11:50:28
nCr:r=2とりあえず浮動小数点であれ検算が出来る。
多倍長演算 C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8868.txt
705デフォルトの名無しさん:2009/04/11(土) 11:56:15
だりぃ、っつかもうこうなるならファイル使うわ。
706デフォルトの名無しさん:2009/04/12(日) 03:54:55
nCmの計算まだ?
707デフォルトの名無しさん:2009/04/12(日) 04:22:19
nCm < 2^32 の範囲内であるなら求められるコードは既にあるお ( ^ω^)
50桁とか、もう常識の範囲内を超えたものは、それなりの環境が必要だお^^
例えば、地球上を移動する程度の航空機で済むのと、宇宙へ飛び出すロケットなどと
比較したら、明らかにメンテナンスや飛行距離、上空での環境への適用などに対して
差があるのはお分かりいただけるでしょう。
708デフォルトの名無しさん:2009/04/12(日) 09:56:56
>>704
警告 W8071 valuelist1.cpp 151: 変換によって有効桁が失われる(関数 valuelist::writesub(int) )
警告 W8004 valuelist1.cpp 220: 'rp' に代入した値は使われていない(関数 valuelist::diff(valuelist &,int *) )
エラー E2093 valuelist1.cpp 355: == 演算子が使われたがクラス VLint には定義が存在しない(関数 VLint::fmultir(VLint &) )
エラー E2093 valuelist1.cpp 364: < 演算子が使われたがクラス VLint には定義が存在しない(関数 VLint::fmulrsub(VLint,VLint,VLint,VLint) )
エラー E2357 valuelist1.cpp 365: 参照は 'VLint' で初期化されているが 'VLint' 型の左辺値が必要(関数 VLint::fmulrsub(VLint,VLint,VLint,VLint) )
エラー E2342 valuelist1.cpp 365: パラメータ 'b' は VLint & 型として定義されているので VLint は渡せない(関数 VLint::fmulrsub(VLint,VLint,VLint,VLint) )
エラー E2093 valuelist1.cpp 388: == 演算子が使われたがクラス VLint には定義が存在しない(関数 VLint::fdivider(VLint &) )
エラー E2093 valuelist1.cpp 400: < 演算子が使われたがクラス VLint には定義が存在しない(関数 VLint::fdivrsub(VLint,VLint,VLint,VLint) )
*** コンパイル中に 6 個のエラーが発生しました ***
709E−mail:sage:2009/04/12(日) 10:43:51
710E−mail:sage:2009/04/12(日) 11:40:08
>>708 ボーランドからVSに、コンパイラを取り換える。VSEE
711デフォルトの名無しさん:2009/04/12(日) 13:14:41
>>710
そういう問題じゃないだろう。明らかに文法が間違ってる
712デフォルトの名無しさん:2009/04/12(日) 13:57:46
演算子オーバーロードにconst修飾子が付いてないからだな
713デフォルトの名無しさん:2009/04/12(日) 17:44:53
で結局>>704をgccでもコンパイルできるようにするには
どうすればいいのよ?
714デフォルトの名無しさん:2009/04/12(日) 18:19:45
>>650
GMPでやってみたよ日曜プログラミング
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9024.c
715デフォルトの名無しさん:2009/04/12(日) 20:29:49
VCでGMPは難しかったような気がするなぁ
VCでどのライブラリを使わせて多倍長計算させたかったんだろうなぁ
ライブラリとか授業で説明されたんだろうけど>650は代返ですませてしまったんだろうなぁ
716デフォルトの名無しさん:2009/04/12(日) 20:30:40
[1] データ構造入門
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9026.txt
[3] 環境
 [3.1] OS: Linix
 [3.2] コンパイラ名とバージョン: EMULE
 [3.3] 言語: C
[4] 期限: 2009年4月16日17:00まで
[5] その他の制限: 再帰の問題です。西暦のとこfor文とか使っていいのか、再帰で全部ひっくるめられるのかはよくわかりません!よろしくお願いします!!
717デフォルトの名無しさん:2009/04/12(日) 20:48:56
>>716
#include <stdio.h>

double num_of_A(int year)
{
    return year <= 2009 ? 1000000 : num_of_A(year - 1) * 1.1;
}

double num_of_B(int year)
{
    return year <= 2009 ? 500000 : num_of_B(year - 1) * 1.3;
}

int main()
{
    int year = 2010;

    while(1){
        if(num_of_A(year) < num_of_B(year))
            break;
        year++;
    }
    printf("2009年現在\n種A 100万体\n種B 50万体\n\n");
    printf("%d年で個体数逆転\nAは%d体\nBは%d体\n", year, (int)num_of_A(year), (int)num_of_B(year));
    return 0;
}
718デフォルトの名無しさん:2009/04/12(日) 20:52:35
>>717ありがとうございます!
明日学校でやってみます!!
719デフォルトの名無しさん:2009/04/12(日) 20:55:00
>>716
問題がよろしくないな
再帰にすると無駄なループが多いし、関数は2つも必要ない

そして>>717早すぎw
720デフォルトの名無しさん:2009/04/12(日) 21:00:14
>>719
去年履修したときはなかった問題・・・・
むずかしいです、先生・・ orz
721デフォルトの名無しさん:2009/04/12(日) 21:14:57
>>717
だがちょっと待ってほしい
計算途中の頭数もintで表現するべきではないだろうか
722デフォルトの名無しさん:2009/04/12(日) 21:22:53
#include <stdio.h>

int main()
{
double a = 1000000;
double b = 500000;
int year = 2009;

printf("%d年現在\n", year);
printf("種A %.0f体\n", a);
printf("種B %.0f体\n", b);
while (a >= b) {
a *= 1.1;
b *= 1.3;
year++;
}
printf("\n%d年で個体数逆転\n", year);
printf("Aは%.0f体\n", a);
printf("Bは%.0f体\n", b);
return 0;
}

再帰を使う必要性は微塵も感じないな
こんないい加減な問題だと小数点以下の扱いもどうでもよくなるw
723デフォルトの名無しさん:2009/04/12(日) 21:34:34
再帰という手法をつかう問題を作りたかったんだろ
しかも、プログラムを習ったばっかりの人間でも答えられる範囲の

まあ、多少アルゴリズムを教えてからクイックソートぐらいを問題にしたほうが良いと思うが
教育現場の政治的問題があるのかもしれない
724デフォルトの名無しさん:2009/04/12(日) 22:29:17
やっちゃいけない再帰の例にしか見えないがw
725デフォルトの名無しさん:2009/04/12(日) 22:44:54
こういう内容の再帰を見ると、講義でSchemeをやらされたときを思い出す。
726デフォルトの名無しさん:2009/04/12(日) 23:22:32
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9027.txt

これくらいの再帰なら課題にしていい
727デフォルトの名無しさん:2009/04/12(日) 23:26:10
再帰は使い方次第では時間が掛かる。最悪、再起不能になっちゃう、なんて
728デフォルトの名無しさん:2009/04/12(日) 23:29:39
アッカーマン関数の(4, 1)を求めるのに通常の再帰プログラムでは
どうしてもスタックオーバーフローが生じて無理なので一度答えを
出した(n, m)については答えを保存して再利用するようにしたら
なんとか求まった

(4, 2)は今のところ無理だ
x64で動かせたら考えてみよう
729デフォルトの名無しさん:2009/04/12(日) 23:37:43
>>726
マージソートは良いんだが・・・
なんでこういう例ってグローバル変数使うんだろう?
730デフォルトの名無しさん:2009/04/12(日) 23:38:51
(1,n)だか(n,1)だかのときに再帰を省いた奴ならどっかで見かけたと思うが
731デフォルトの名無しさん:2009/04/12(日) 23:42:37
>>730
32bit環境で(x86 WindowsXPで)(4, 2)が求まる方法が
あったら教えてください

外部ファイルを使っても構いませんから
732デフォルトの名無しさん:2009/04/12(日) 23:50:31
あと再帰の問題として適してるのは
_findnextみたいな関数を使って
ディレクトリを見つけたら再帰呼び出しするとか
733デフォルトの名無しさん:2009/04/13(月) 00:24:34
>>650 コピーコンストラクタの未実装か?よくわからん。
[3] 環境
 [3.1] OS:
 [3.2] コンパイラ名とバージョン: Microsoft C++, Borland 5.5, g++
 [3.3] 言語: C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9028.txt
734デフォルトの名無しさん:2009/04/13(月) 00:29:37
>>733
ありがと
これならちゃんと動くね
735デフォルトの名無しさん:2009/04/13(月) 05:40:48
nCm 50桁 で答えが返ってくるプログラムまだ?
736デフォルトの名無しさん:2009/04/13(月) 05:43:03
>>732
それは適してないだろ。再帰は不安定で鈍いから、
ファイルを扱う重要な部分に使うべきではないな。
737デフォルトの名無しさん:2009/04/13(月) 08:00:00
>>736
「不安定で鈍い」ってどういう意味?
738デフォルトの名無しさん:2009/04/13(月) 08:14:20
スタックオバーフロー、 関数呼び出し、復帰に掛かるコスト
739デフォルトの名無しさん:2009/04/13(月) 08:17:32
スタックオーバーフロー - Wikipedia

末尾最適化を実装した言語ではある特定の再帰をループへ展開することができ、
末尾再帰ではスタックオーバーフローは起こらない。
末尾再帰はループ処理に最適化されるので、再帰することそれ自体でスタックを消費することが無いからである。

次によくある原因としては、スタック上に巨大な配列を確保しようとすることである。コールスタックに格納できる情報量には上限がある。
さらに他の原因として、関数呼び出しの階層数が深すぎる場合などがある。
740デフォルトの名無しさん:2009/04/13(月) 08:21:11
再帰呼び出し
関数などのルーチンが自分自身を呼び出して実行すること。
ある種の複雑な問題を解くコードをシンプルに記述できる場合があるが、
再帰による入れ子の数に応じて占有するメモリが増加する上、
実行速度も効率的とは言えず、非再帰的に記述できるならそうすべきである。

http://it_yougo.shooti.jp/s/507865/1
741デフォルトの名無しさん:2009/04/13(月) 10:52:22
void comb(mpz_t& ans, const mpz_t& n, const mpz_t& r)
{
mpz_t i, n_r, n_i, n_i_1, a;
mpz_init_set(i, n);
mpz_init(n_r);
mpz_init(n_i);
mpz_init(n_i_1);
mpz_init(a);
mpz_set_ui(ans, 1);
mpz_sub(n_r, n, r);
for(mpz_set(i, n); mpz_cmp(i, n_r) > 0; mpz_sub_ui(i, i, 1))
{
mpz_mul(a, ans, i);
mpz_sub(n_i, n, i);
mpz_add_ui(n_i_1, n_i, 1);
mpz_cdiv_q(ans, a, n_i_1);
}
mpz_clear(i);
mpz_clear(n_r);
mpz_clear(n_i);
mpz_clear(n_i_1);
mpz_clear(a);
}
742デフォルトの名無しさん:2009/04/13(月) 11:37:38
tempは100個の配列を有する変数

構造体変数numには1-10、letにはA-Jが入っていて、
構造体Aの中でtempを初期化したいのですが、代入の仕方が分かりません。
(tempだけをprintfさせたときに、temp[1]=[A2]やtemp[100]=[J10]
と表示されるようにしたい。)
二つの構造体変数を結合させて、一つの変数配列として返したいのですが、やりかたを教えてください。

void initA(struct rub *temp){
char *num;
char *let;
int i,j;

for(i=1; i<10; i++){
for(j=1; j<=10; j++){ temp[i*j]=(A.num,A.let); }
}
}
743672=651:2009/04/13(月) 11:39:13
>>741
gmpって使ったことないんだけど、これで何桁くらいまでいけそう?
744デフォルトの名無しさん:2009/04/13(月) 11:39:15
sprintf()もしくはstrcat()
745デフォルトの名無しさん:2009/04/13(月) 11:48:41
スターリングの公式の所に載っている式で計算すると
100C30の場合、実値とのズレ比 (式の値/実値)
1.0000000000230814274901だった。
上位の桁は一致するけど、下位の桁の一致までは無理。
746デフォルトの名無しさん:2009/04/13(月) 11:53:18
数値計算ソフトでスターリングの公式の近似式でも、5桁が限度だな。
50桁だと階乗の値は、ものすごい桁になる。
747デフォルトの名無しさん:2009/04/13(月) 11:55:30
>>743
windowsならGMPのbinaryをうpするが
748デフォルトの名無しさん:2009/04/13(月) 11:57:55
スターリングの公式で階乗計算するよりも、直接、コンビーネーションの近似式が
わかれば計算量は減らせるが
749デフォルトの名無しさん:2009/04/13(月) 12:00:39
>>742 こんなんでいいの?

struct rub {
char *num;
char *let;
};

void initA(struct rub *temp)
{
int i;

for (i = 0; i < 100; i++) {
temp[i].num = (char *)malloc(3);
temp[i].let = (char *)malloc(2);
sprintf(temp[i].num, "%d", i % 10);
temp[i].let[0] = "ABCDEFGHIJ"[i % 10];
temp[i].let[1] = '\0';
}
}

int main(void)
{
struct rub A[100];
int i;

initA(A);

for (i = 0; i < 100; i++)
printf("temp[%d] = [%s%s] ", i, A[i].let, A[i].num);

return 0;
}
750デフォルトの名無しさん:2009/04/13(月) 12:07:17
あ、ごめん
×sprintf(temp[i].num, "%d", i % 10);
○sprintf(temp[i].num, "%d", (i % 10) + 1);
751デフォルトの名無しさん:2009/04/13(月) 12:16:42
>>742
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9029.txt
仕様がよく分からんができる限り仕様に近づけてみた

temp[1]=[A2]
temp[99]=[J10]
752デフォルトの名無しさん:2009/04/13(月) 12:32:35
>>731
適当に調べたらack(4,2)で10進数2万桁だそうだ。
コンビネーションよりパネェwwww
ここ見たから間違ってたらスマン
ttp://d.hatena.ne.jp/inamori/20070509/p1
753デフォルトの名無しさん:2009/04/13(月) 12:36:51
>>752
サンクス。あーこりゃx64でも無理そうですな
多倍長計算を使って放置しておけばいつかは答えが出るかもしんないけど

一度計算した結果を覚えておくのにstd::map使ってますから型を多倍長
クラスにすればできそうですが・・・・なんとも非現実的な
754デフォルトの名無しさん:2009/04/13(月) 12:39:21
> パネェ
なんだそりゃ?きちっと日本を使えよ!ってガチンコラーメン道、
支那そばで有名な「佐野実」が言ってた。
755デフォルトの名無しさん:2009/04/13(月) 12:52:44
>>752
19729桁。
756デフォルトの名無しさん:2009/04/13(月) 13:10:23
757デフォルトの名無しさん:2009/04/13(月) 14:44:02
>>743 >>672=>>651
651 は、どういった証明になるんですか?
758デフォルトの名無しさん:2009/04/13(月) 15:16:12
>>757
色のついたボールがn個あるとする。m個を選び出す組合せの数はnCm。
いま青いボールだけを取り出してみる。
全組合せ数は、青いボールを含む場合と、青いボールを含まない場合の合計と一致する。
青いボールを含む数は、残りからm-1個選ぶ数のこと。
青いボールを含まない数は、n-1個からm個選ぶ数のこと。


759デフォルトの名無しさん:2009/04/13(月) 15:28:24
すみません間違えました、672 です。
760デフォルトの名無しさん:2009/04/13(月) 15:31:38
>>759

nCm = n(n-1)・・・(n-m+1)/m(m-1)・・・1

上辺の左と、下辺の右を順に計算・。

n/1 ・ (n-1)/2・・・
761デフォルトの名無しさん:2009/04/13(月) 15:57:40
>>756
知ってたけど。っつか >>754 で日本”語”を忘れてたw
762デフォルトの名無しさん:2009/04/13(月) 16:05:06
有り難う御座います。nPrとr!では積の項数が同じでした。
763デフォルトの名無しさん:2009/04/13(月) 16:20:37
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク)
繰り返し文を用いて以下の例のような(どのようなものでもよいが、単純なアルゴリズムで複雑な絵の方がよい)ASCIIアートを作成しなさい。
00000&&&&&00000
00000&&&&&00000
00000&&&&&00000
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
00000&&&&&00000
00000&&&&&00000
00000&&&&&00000
[3] 環境
 [3.1] OS: Windows VISTA
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C
[4] 期限:今週中
[5] その他の制限:あまり複雑すぎても困ります・・・
764デフォルトの名無しさん:2009/04/13(月) 17:32:37
#include <stdio.h>

int main()
{
int row, col;
int pat[] = {0x5555, 0xAAAA};

for (row = 0; row < 15; row++) {
for (col = 0; col < 15; col++) {
printf((pat[row & 1] & (1 << col)) ? "&" : "0");
}
printf("\n");
}
return 0;
}

&0&0&0&0&0&0&0&
0&0&0&0&0&0&0&0
&0&0&0&0&0&0&0&
0&0&0&0&0&0&0&0
&0&0&0&0&0&0&0&
0&0&0&0&0&0&0&0
&0&0&0&0&0&0&0&
0&0&0&0&0&0&0&0
&0&0&0&0&0&0&0&
0&0&0&0&0&0&0&0
&0&0&0&0&0&0&0&
0&0&0&0&0&0&0&0
&0&0&0&0&0&0&0&
0&0&0&0&0&0&0&0
&0&0&0&0&0&0&0&
765デフォルトの名無しさん:2009/04/14(火) 00:46:30
>>763
#include <stdio.h>

int main()
{
    int i, j;
    const char map[] = " |-+";

    for(i = 1; i <= 9; i++){
        for(j = 1; j <= 14; j++){
            printf("%c", map[(i % 2 == 0 ? 2 : 0) + (j % 3 == 0 ? 1 : 0)]);
        }
        printf("\n");
    }
    return 0;
}
766デフォルトの名無しさん:2009/04/14(火) 01:09:38
>>765
  |  |  |  |
--+--+--+--+--
  |  |  |  |
--+--+--+--+--
  |  |  |  |
--+--+--+--+--
  |  |  |  |
--+--+--+--+--
  |  |  |  |
767デフォルトの名無しさん:2009/04/14(火) 01:30:30
>>763
#include<stdio.h>
#include<string.h>

#define HEIGHT 32
#define WIDTH 79

void triangle(char screen[HEIGHT][WIDTH], int center, int top, int size)
{
int i;

if(size<3) return;
for(i=0;i<size-1;i++) screen[top+i][center-i]=screen[top+i][center+i]='*';
for(i=0;i<size;i++) screen[top+size-1][center-i]=screen[top+size-1][center+i]='*';
triangle(screen, center, top, size/2);
triangle(screen, center-size/2, top+size/2, size/2);
triangle(screen, center+size/2, top+size/2, size/2);
}

int main(void)
{
char screen[HEIGHT][WIDTH];
int i;

memset(screen, ' ', sizeof(screen));
triangle(screen, WIDTH/2, 0, HEIGHT);
for(i=0;i<HEIGHT;i++)
{
printf("%.*s\n", WIDTH, screen[i]);
}
return 0;
}
768デフォルトの名無しさん:2009/04/14(火) 01:57:36
>>767
                *
               * *
              *   *
             *******
            *       *
           * *     * *
          *   *   *   *
         ***************
        *               *
       * *             * *
      *   *           *   *
     *******         *******
    *       *       *       *
   * *     * *     * *     * *
  *   *   *   *   *   *   *   *
 *******************************
769デフォルトの名無しさん:2009/04/14(火) 06:46:01
>>768 (・∀・)
770デフォルトの名無しさん:2009/04/14(火) 10:50:22
mCnの答えが戻るプログラム
771デフォルトの名無しさん:2009/04/14(火) 11:06:57
考えた方法。
mCn=(m/n)*・・*((m-n+1)/1)
a=m-nとおき、f(x)=log(1+c/x)とおくと
log(mCn)=f(1) + ・・・ + f(n)となる。
log(mCn)の値は、∫[1,n]f(x)dxから∫[2,n+1]f(x)dxの範囲。
772デフォルトの名無しさん:2009/04/14(火) 11:22:40
F(x)=a*log(a + x) + x*log(1 + a/x)]とおけば
F(n)-F(1)からF(n+1)-F(2)までの間の値。
773デフォルトの名無しさん:2009/04/14(火) 11:54:59
値の範囲を積分で評価するときに、f(1)のときの値は除いたほうが都合が良いな。
774taguti:2009/04/14(火) 14:39:53
6個のreal型変数x1、y1、x2、y2、x3、y3を定義しそれぞれに実数つを読み込んで、xy平面上の3点
(x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。
・公式:底辺x高さ÷2を使って計算してください。
お願いします!!

775デフォルトの名無しさん:2009/04/14(火) 14:55:11
テーブルがNEN(年、4桁数値型)とTUKI4〜TUKI3(4月〜次年3月、1桁数値型(フラグ用))という項目をもっていて
そのテーブルを1件1件READしながら、
@YMD_S(開始年月)という変数に、
NEN + TUKI4〜TUKI3でフラグ1が設定されている最初の月をセット(例:「200805」)
AYMD_E(終了年月)という変数に、
NEN + TUKI4〜TUKI3でフラグ1が設定されている最後の月をセット(例:「200809」)

としたい場合に、どういったロジックで考えたら
実現可能でしょうか?

処理効率とか以前に、どういう方針で考えたらいいかがわかりません。
どうか教えてください。
776デフォルトの名無しさん:2009/04/14(火) 15:14:50
>>774 の問題は
A(x1, y1), B(x2, y2), C(x3, y3) → A'(0, 0), B'(x2 - x1, y2 - y1), C'(x3 - x1, y3 - y1) として
△ABC = △A'B'C' = |(x2 - x1)(y3 - y1) - (y2 - y1)(x3 - x1)|/2
の方が楽じゃないかなぁ…。
777デフォルトの名無しさん:2009/04/14(火) 15:23:46
>>774
(x1, y1),(x2, y2)の間の距離は
sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))

(x1, y1),(x2, y2) を通る直線の方程式は、
(y2 - y1) * x / (x2 - x1) - y + (x2 * y1 - x1 * y2) / (x2 - x1) = 0。

点(x3, y3)からこの直線へ下ろした垂線の長さは
abs((y2 - y1) * x3 / (x2 - x1) - y3 + (x2 * y1 - x1 * y2) / (x2 - x1))
/ sqrt((y2 - y1) * (y2 - y1) / (x2 - x1) / (x2 - x1) + 1)。
778デフォルトの名無しさん:2009/04/14(火) 15:39:05
>>775 C言語指定でないのでC++。
#include <iostream>
using namespace std;
int main() {
  int i, nen, tuki[12], ymd_s, ymd_e;

  for(int c=0; c<20 ; c++) {
    cin >> nen; cout << nen << ")";
    for(i=1; i<=12; i++) {
      cin >> tuki[i-1]; cout << tuki[i-1] << ")"; }
    ymd_s = ymd_e = 0;
    for(i=1; i<=12; i++)
      if(tuki[i-1] == 1) {
        if(i>9)
          ymd_s = nen*100 + 100 + i-9;
        else
          ymd_s = nen*100 + i+3;
        break;
      }
    for(i=12; i>=1; i--)
      if(tuki[i-1] == 1) {
        if(i>=9)
          ymd_e = nen*100 + 100 + i-9;
        else
          ymd_e = nen*100 + i+3;
        break;
      }
    cout << ymd_s << "," << ymd_e << endl;
  }
}
779デフォルトの名無しさん:2009/04/14(火) 15:50:57
780デフォルトの名無しさん:2009/04/14(火) 15:56:55
>774
ほんと乙だわ。
そしてそれを全部見つけてきた779も乙
781taguti:2009/04/14(火) 16:23:54
自己解決しました。
782デフォルトの名無しさん:2009/04/14(火) 20:24:43
778さん、ありがとうございます。
C言語ですがC++もあまり変わらない解読でいいんですよね?

もしよろしければ一行一行に説明文(コメント)を
追加していただけないでしょうか?

解読を試みているのですがさっぱりです。。
783デフォルトの名無しさん:2009/04/14(火) 20:26:28
>>775
質問の意味が分からないや

テーブルの項目
NEN(4桁の数値文字列) | TUKI4〜TUKI3(2桁の数値文字列) | FLAG(1桁の数値文字列) | ...
2008 05 1 ...
2008 09 1 ...
2008 10 0 ...
2008 07 1 ...

のときに
YMD_S=200805
YMD_E=200809
としたいということ?

YMDなのにYMしか使ってないとか気持ち悪いけどw
784デフォルトの名無しさん:2009/04/14(火) 20:35:45
NEN 04 05 06 07 08 09 10 11 12 01 02 03
2008 00 00 01 00 00 00 00 00 01 00 00 00

start 200806
end 200812
にしたいんじゃ
>>783
785デフォルトの名無しさん:2009/04/14(火) 20:38:32
>>784
なるほど!そういうことか!
786デフォルトの名無しさん:2009/04/14(火) 20:41:56
>>785 ついでに、>>778 のコメントを頼む。
787785:2009/04/14(火) 20:52:59
C言語でやってみたぜ
2008年度の1月の表現は 200801 なのか 200901 なのか分からなかったので両方書いてみた
#include<stdio.h>

int main(void)
{
int year, month, flag, YMD_S, YMD_E;
FILE *fp=stdin;

while(fscanf(fp, "%d", &year)==1)
{
YMD_S=YMD_E=0;
for(month=4;month<=12+3;month++)
{
if(fscanf(fp, "%d", &flag)!=1) break;
if(flag) YMD_E=year*100+(month-1)%12+1;
// if(flag) YMD_E=(year+(month-1)/12)*100+(month-1)%12+1;
if(YMD_S==0) YMD_S=YMD_E;
}
printf("year=%d YMD_S=%d YMD_E=%d\n", year, YMD_S, YMD_E);
}
return 0;
}
788デフォルトの名無しさん:2009/04/14(火) 22:49:36
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):

ニュートン法でf(x)=x-cos(x)=0の近似値を求める。

f'(x)=1+sin(x)であるから、
a[k+1] = a[k]-(a[k]-cos(a[k])/(1+sin(a[k]))
によって近似解の改良を繰り返すことになる。

初期近似解をa1=1.0,終了条件を|a[k+1]-a[k]|≦10^(-15)とし、
少数点以下15桁まで求めるプログラムを作成せよ。

※a[k]などの"[k]"は、添え字です。

[3] 環境
 [3.1] OS:Linux
 [3.2] cc
 [3.3] C言語
[4] 期限:明日
789デフォルトの名無しさん:2009/04/14(火) 22:57:57
>>781
嘘つけボケが。
そのレベルを一人で解けないなんておわってんな。
790デフォルトの名無しさん:2009/04/15(水) 03:07:40
>>788
#include <stdio.h>
#include <math.h>

int main()
{
    double x, y;

    x = 1.0;

    do{
        y = x;
        x = y - (y - cos(y))/(1 + sin(y));
    } while(fabs(x - y) > pow(10, -15));
    printf("x = %.15lf", x);
    return 0;
}
791デフォルトの名無しさん:2009/04/15(水) 07:51:26
>pow(10, -15)
毎回計算させんのかよw
792デフォルトの名無しさん:2009/04/15(水) 08:29:02
これたのむ

【プログラムコンテスト】
・思考ルーチンのプログラムに自信のある方は是非ご参加ください
・賞金は最大10万円です。

http://irensei.com/html/game.html
793デフォルトの名無しさん:2009/04/15(水) 13:23:38
775です。
御解答ありがとうございます。
質問の仕方が悪くて申し訳ないです。

NEN 04 05 06 07 08 09 10 11 12 01 02 03
2008 00 00 01 01 01 01 01 01 01 00 00 00

start 200806
end 200812

といった感じです。


787さん
if(YMD_S==0) YMD_S=YMD_E; 以前で
YMD_Sに年月がセットされるところがないように
思えますが、どういうロジックなのかご教示いただけませんか?

やはりコメントがないと、見てもわかりません。
申し訳ありませんがお願いします。
794デフォルトの名無しさん:2009/04/15(水) 14:47:47
[1] C++
[2] 問題文(含コード&リンク):
ttp://www.dotup.org/uploda/www.dotup.org8740.zip.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 2009年4月16日14:30まで
[5] その他の制限:
課題のファイルの末尾に3点制限事項がありますのでご覧ください
795デフォルトの名無しさん:2009/04/15(水) 16:16:55
796デフォルトの名無しさん:2009/04/15(水) 16:39:48
797794:2009/04/15(水) 16:40:21
>>795
出力は問題ないのですが制限事項(1)でクラスを使うように指定されていますので
クラスでやってもらえるとたすかります
798794:2009/04/15(水) 16:59:58
>>796
ありがとうございます クラスなのとfind_first_of/find_last_ofでかいてもらってるので完璧です
出力も全く問題ないです find_last_ofの使い方がわからんとゆうのは使い方があまりよくないということでしょうか
外出しますが帰ったらもっかい見てみますがこれで問題ないです ありがとうございました
799デフォルトの名無しさん:2009/04/15(水) 18:53:25
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):5つの数字の中から3つを選び全て出す
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:わかりません
[3.3] 言語:C
[4] 期限:今週いっぱい
お願いします
800デフォルトの名無しさん:2009/04/15(水) 19:30:11
あまりにもESP訓練が酷すぎる
マインドシーカーかよ
801デフォルトの名無しさん:2009/04/15(水) 19:35:22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int a[5] = {1, 2, 3, 4, 5}, i;

srand(time(NULL));

for(i=0; i<3; i++) {
int j = rand() / (RAND_MAX + 1.0) * (5 - i);
printf("%d ", a[j]);
a[j] = a[4-i];
}

return 0;
}
802デフォルトの名無しさん:2009/04/15(水) 21:05:20
組み合わせを列挙しろってこととじゃない?
803デフォルトの名無しさん:2009/04/15(水) 21:36:57
#include <stdio.h>

int main(void)
{
int i, j, k;

for(i=1; i<=5; i++) {
fof(j=1; j<=5; j++) {
if(j==i) continue;
for(k=1; k<=5; k++) {
if(k==i||k==j)continue;
printf("%d %d %d\n", i, j, k);
}}}

return 0;
}
804デフォルトの名無しさん:2009/04/15(水) 22:32:17
805デフォルトの名無しさん:2009/04/15(水) 22:39:57
#include <stdio.h>

int main(void)
{
int i, j, k;

for(i=0; i<5; i++) for(j=i+1; j<5; j++) for(k=j+1; k<5; k++) printf("%d %d %d\n", i, j, k);

return 0;
}
806sage:2009/04/15(水) 23:17:56
#include<stdio.h>

int main(void)
{
int i,j,n;
i=2;
printf("Input Num=?");
scanf("%d,&n");
printf("Dec=%d\n",n);
printf("heX=%x\n\n",n);
j=(n>>2)&1;
printf("bit[%d]=%d\n",i,j);
return(0);
}

↑これに適当な数を入れると決まって-4195116になってしまいます
どうすればいいでしょうか
807デフォルトの名無しさん:2009/04/15(水) 23:30:44
スレ違いだ
808デフォルトの名無しさん:2009/04/15(水) 23:31:27
scanf("%d,&n");
809デフォルトの名無しさん:2009/04/15(水) 23:46:27
>>805 さんの流用
#include <stdio.h>
int main(void)
{
  int i, j, k;
  int data[5]={0,0,0,0,0};

  printf("好きな数字を5個入力してください:");
  if(scanf("%d%d%d%d%d", &data[0], &data[1], &data[2], &data[3], &data[4]) != 5) return 1;
  for(i=0; i<5; i++)
  for(j=i+1; j<5; j++)
  for(k=j+1; k<5; k++) {
    printf("%d %d %d\n", data[i], data[j], data[k]);
  }
  return 0;
}
810799:2009/04/16(木) 00:09:01
ID代わりましたが、799です
>>802さんの言うとおり全ての組み合わせを表示せよというものです

>>801>>803-805>>809さんありがとうございます

後から問いが少し代わったので、参考に頑張りたいと思います
811デフォルトの名無しさん:2009/04/16(木) 15:39:51
[1] 授業単元:C++基礎
[2] 問題文(含コード&リンク):
ttp://www.dotup.org/uploda/www.dotup.org11261.zip.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 4/17 17:00まで
[5] その他の制限:問題文内にメモを書きました それでわよろしくおねがいします
812デフォルトの名無しさん:2009/04/16(木) 18:03:52
[1] 授業単元:画像処理プログラミング
[2] 問題文(含コード&リンク):
JPEG-LSでは予測誤差を量子化することでNEAR-LOSSLESSを実現している。
予測誤差を量子化せずにNEAR-LOSSLESSを実現しなさい。
なお採点は
(1)JPEG-LSのソースコードを見つける[10点]
(2)プログラムを書き、NEAR-LOSSNESSを実現する[20点]
(3)出来た画像を見て考察をする[20点]
(4)他の符号化方式で(1)〜(3)を行う.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: C言語
[4] 期限: 4/18 22:00まで
[5] その他の制限:ソースコードは見つけたので
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
の:C/C++の宿題を片付けます 124代目の9035.zipにアップしておきました。
各画素の輝度値に所望誤差を加え,それを量子化ステップで割って,
可逆符号化をして,復号し,その後各画素の輝度値に量子化ステップを
かけてあげれば出来るのでないかと思い、先生に確認したところ
それでできるとのことだったのですが、書き方がよくわかりませんでした。
どなたかお願いいたします。
813デフォルトの名無しさん:2009/04/17(金) 00:33:18
[1] 授業単元:応用プログラミング実習

[2] 問題文(含コード&リンク)
演習1:任意の長さのint型の配列を用意し,昇順にソートせよ.また,最小値,最大値,平均値を出力せよ.

演習2:文字列とある文字を入力し,文字列中にその文字が現れた位置を表示するプログラムを作成せよ.但し,含まれなければ“なし”と表示する.
  (例: ABCDとB を入力 結果 2番目 )

演習3:任意の大きさの2つの正方行列を標準入力から入力し,2次元配列に保存し,これら2つの行列の差を求め,表示するプログラムを作成せよ

[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語: C言語
[4] 期限: 4/20 8:00まで
[5] その他の制限:まだfor、while、多次元配列などの基礎のみしか学習していません。
814811:2009/04/17(金) 00:33:56
すみません 問題4だけでもお願い出来ないでしょうか
既存のソースをテンプレート化する問題です
よろしくおねがいします
815デフォルトの名無しさん:2009/04/17(金) 01:10:44
Nの階乗を再帰を用いた方法で計算してその計算過程も表示するプログラムを教えてください

参考書とにらめっこしたけどさっぱりわかりません
816デフォルトの名無しさん:2009/04/17(金) 01:23:26
>>814
問題4、別にあまり変えるとこないけど
template<class T>
typename T::value_type median(const T &ary) {
typename T::size_type num = ary.size();
if(num%2 != 0) {
std::partial_sort(ary.begin(), ary.begin() + (num/2)+1, ary.end());
return ary[((num+1)/2)-1];
} else {
partial_sort(ary.begin(), ary.begin() + (num+1/2), ary.end());
return (ary[(num/2)-1]+ary[num/2])/2;
}
}
817デフォルトの名無しさん:2009/04/17(金) 01:41:49
>>815
#include <stdio.h>

int fact(int n)
{
    if(n <= 1) return n;

    int m = fact(n - 1);
    printf("%d! = %d * %d! = %d * %d = %d\n", n, n, n - 1, n, m, n * m);
    return n * m;
}

int main()
{
    int n;

    printf("n!を計算します。\nn = ");
    scanf("%d", &n);
    printf("%d! = %d\n", n, fact(n));
    return 0;
}
818811:2009/04/17(金) 01:56:32
>>816
テンプレートが全くわかっていないのですが単純にpart3.cppのコードのmedian関数を上記に
変更してpart4.cppにしたのですがそれだとコンパイルエラーになりました。
ヘッダファイルは変更しなくていいですよね。read、prompt、mainはどこか変える必要ありますか?
819デフォルトの名無しさん:2009/04/17(金) 02:07:17
>>815をテンプレートメタプログラミングでやろうとしてみたがエラーでまくりんぐw
820デフォルトの名無しさん:2009/04/17(金) 02:27:42
>>818
入れ替えるんじゃない、追加。
その構造体で動かしたいなら丸投げしとけば
double Abstract_student_info::median()
{
return ::median(homework);
}
821811:2009/04/17(金) 03:10:46
>>820
あほですみません。追加というとmedian関数を二回定義汁ということでしょうか?
申し訳ないのですが混乱していますのでヘッダとpart4.cppをうpして頂けると大変たすかります
822デフォルトの名無しさん:2009/04/17(金) 03:27:41
>>821
別に名前を変えたかったら変えてもかまわない。
こんな感じか
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9036.cpp
partial_sortは破壊操作なことを忘れてたから修正もしといた
823811:2009/04/17(金) 03:34:30
>>822
ありがとうございます!!コンパイル/実行できました。
まだコードの意味が全くわかっていませんがこれから理解につとめます
テンプレートむずかしい。。。
おやすみなさい(●'w'●)ノ
824デフォルトの名無しさん:2009/04/17(金) 04:34:08
■せっかく>>774を行列式で書くなら
3D空間で同様に書いてみたら?
つまり宇宙的規模と言う事です。

(x1,y1,z1) (x2,y2,z2) (x3,y3,z3)

825デフォルトの名無しさん:2009/04/17(金) 06:45:44
ID違うけど>>815です
>>817さん
ありがとうございます
でも実際にコンパイル/実行してみると
7行目:サーバーエラー、intは間違ってます
と出てしまうんですけどどうすればいいんでしょうか?
ちなみに使っているソフトはCmachineです
勝手ですいませんが回答お願いします
826デフォルトの名無しさん:2009/04/17(金) 07:47:22
int fact(int n)
{
int m;
if(n <= 1) return n;

m = fact(n - 1);
printf("%d! = %d * %d! = %d * %d = %d\n", n, n, n - 1, n, m, n * m);
return n * m;
}

これで多分おk
827デフォルトの名無しさん:2009/04/17(金) 11:19:20
こまけーことはいいんだよ!(例のAA)
と、言われそうだけど

× if(n <= 1) return n;
○ if(n <= 1) return 1;

なぜなら、0! = 1 だから。
828デフォルトの名無しさん:2009/04/17(金) 15:00:21
>>827
そうするつもりで間違えた。指摘ありがとう。
829デフォルトの名無しさん:2009/04/17(金) 16:32:36
>>826-828さん
本当にありがとうございました

何度も質問して申し訳ないんですが
#include<stdio.h>
void main(void)
{
int k,n,sum;
printf("kの値は?");scanf("%d",&n);
sum=1;
for (k=1;k<=n;k++)
sum=sum*k;
printf("合計=%d\n",sum);
}
をさっきのみたいに
途中の計算結果も表示するにはどうすればいいんでしょうか?
830デフォルトの名無しさん:2009/04/17(金) 17:27:57
for (k=1;k<=n;k++) {
printf("%d*%d=%d\n", k, sum, sum*k);
sum=sum*k;
}
831デフォルトの名無しさん:2009/04/17(金) 17:45:03
832デフォルトの名無しさん:2009/04/17(金) 19:01:22
派生クラスのサイズが、基本クラスのサイズより小さくなる事はありますか?
例えば
class A
{
private: int a
}
class B:: private A
{
}
このように書いた時でも、classBのインスタンスは
Aで定義したaが初期化されてしまうというか
メモリを割り当てられてしまうんですか?
833デフォルトの名無しさん:2009/04/17(金) 20:58:45
>>830-831さん
ありがとうございます
>>830さん
でもそれを入れなおしてコンパイルすると10行目:予期せぬEOFってでます
for (k=1;k<=n;k++) { の{をとってコンパイルするとエラーは出ないんですが
N!の答えで出てきません
申し訳ないですが回答お願いします
834デフォルトの名無しさん:2009/04/17(金) 21:03:40
835デフォルトの名無しさん:2009/04/17(金) 21:06:33
for (k=1;k<=n;k++) {
  printf("%d*%d=%d\n", k, sum, sum*k);
  sum=sum*k;
}
836デフォルトの名無しさん:2009/04/17(金) 21:07:34
>>833
だから単文でも中括弧を省略するなとあれほど口を酸っぱk
837デフォルトの名無しさん:2009/04/17(金) 21:15:35
とりあえず
#include<stdio.h>
void main(void)
{
int k,n,sum;
printf("kの値は?");scanf("%d",&n);
sum=1;
for (k=1;k<=n;k++) {
printf("%d*%d=%d\n", k, sum, sum*k);
sum=sum*k;
}
でコンパイルしたんですが10行目:予期せぬEOFです。
ってでました
どうすればいいんでしょうか?
838835:2009/04/17(金) 21:22:48
for (k=1;k<=n;k++) {
  sum=sum*k;
}
printf("合計=%d\n",sum);
  △
  ▼
for (k=1;k<=n;k++) {
  printf("%d*%d=%d\n", k, sum, sum*k);
  sum=sum*k;
}
printf("合計=%d\n",sum);
839デフォルトの名無しさん:2009/04/17(金) 21:28:01
>>838さん
ようやくできました・・・。
ありがとうございました
お騒がせしてもしわけなかったです
840デフォルトの名無しさん:2009/04/17(金) 21:29:56
>>834
ありがとうございます。
コピペして走らせて見ました。
どうやっても増えちゃいますね。
841デフォルトの名無しさん:2009/04/17(金) 22:21:28
[1] 授業単元:プログラミング演習

[2] 問題文:複数個あるのでzipにまとめました。
課題1〜3 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9040.zip
課題4 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9041.zip

[3] 環境
 [3.1]OS:Windows
 [3.2]VC++ 2005
 [3.3]C

[4] 期限:4月24日

[5] その他の制限:各課題に指定あり
842デフォルトの名無しさん:2009/04/17(金) 22:57:16
>>841
どうでも良いけど課題3簡単過ぎじゃない?
#include <stdio.h>
main()
{
puts("名前:山田 太郎");
puts("学籍番号:00A000");
puts("好きな科目:プログラミング演習");
}
843デフォルトの名無しさん:2009/04/17(金) 23:05:05
>>841
課題1
#include <stdio.h>

int main()
{
    int a = 5, b = 8;
    printf("a=%d\nb=%d\na*3=%d\nb*2=%d\na*3-b*2=%d",a,b,a*3,b*2,a*3-b*2);
    return 0;
}

課題2
#include <stdio.h>

int main()
{
    int a, b, c;
    printf("a="), scanf("%d", &a);
    printf("b="), scanf("%d", &b);
    c=a*3-b*2;
    printf("\na*3=%d\nb*2=%d\na*3-b*2=%d",a*3,b*2,c);
    return 0;
}
844デフォルトの名無しさん:2009/04/17(金) 23:06:19
課題4
#include <stdio.h>

int main(void)
{
int a;
printf("入学年度(2桁)?");
scanf("%2d",&a);
printf("学籍番号:%02dH777\n",a);
printf("山田 太郎\n");
}

どうでもいいけど
typoをわざとやらせるとか
"が全角だとかはこういうレベルの人たちに気づかせようってのは
間違ってる気がする。
自分で間違うヤツはいっぱいいるけど
845デフォルトの名無しさん:2009/04/17(金) 23:10:05
>>843
課題4
#include <stdio.h>

int main(void)
{
    int a;
    printf("入学年度(2桁)?");
    scanf("%2d", &a);
    printf("学籍番号:%02dH777\n", a);
    printf("山田 太郎\n");
    return 0;
}
846デフォルトの名無しさん:2009/04/17(金) 23:12:10
しまった
mainがintだからreturnは必要か
847デフォルトの名無しさん:2009/04/17(金) 23:13:06
課題が酷すぎてそんな事どーでもよくなる
848デフォルトの名無しさん:2009/04/17(金) 23:13:59
教えてる側からしたらtypoで動かないんですけどって呼ばれるのはめんどくさいから
早めに体験させとくのは悪くないと思うけど。大学の講義としてはすごくベタな問題だよそれ
849841:2009/04/17(金) 23:18:20
早速解いていただき有難うございます!
まだ習いたてで何度試しても上手くいきませんでしたorz
これから授業について行けるように頭に叩き込もうと思います。
850デフォルトの名無しさん:2009/04/18(土) 00:01:48
>>849
こんな問題出すような先生の言うことは聞いちゃダメだぞ
自分で勉強するんだ
851デフォルトの名無しさん:2009/04/18(土) 00:05:53
>>850
それじゃあ単位取れないだろw
無難にこなしつつも軽蔑しろ
といわなきゃ
852デフォルトの名無しさん:2009/04/18(土) 00:57:50
課題4を除けば4月の課題としては普通だが

そういえば大学でTAやってたころ、全角半角分からないヤツに
教科書を丸写ししたのにコンパイルできないんです〜〜とか
そういう質問をいっぱい受けたなぁ

ぐちゃぐちゃなコード見せられて
これが動かない、何とかしろという馬鹿に
インデントしろとかコメントかけ、何がしたいかも分からん
とか言うとそんなことどうでも良いだろとか逆ギレされたなぁ

期末に全く授業出てないけどこのレポート出したら単位もらえるから
答えを教えろといってきたヤツまでいたっけ

このスレとあんま変わらんか
853デフォルトの名無しさん:2009/04/18(土) 01:01:27
>>813
やってくれる方どなたかいませんか?><
854デフォルトの名無しさん:2009/04/18(土) 01:10:38
いるよなあ
バグ持ちでなかなか動かない汚いプログラムをいつまでも
いじくり回してる奴

こちらは一から綺麗に書き直してやってるのにそれに目もくれずに
「これを直してください」の一点張り

知るかよそんなの
855デフォルトの名無しさん:2009/04/18(土) 01:36:06
>>813 演習3
#include <stdio.h>
int main(void) {
  int i, j, n, *dataA, *dataB, *wa, *wb;

  printf("Input N:"); scanf("%d", &n);
  if((dataA = malloc(n*n*sizeof(int))) == 0) return 1;
  if((dataB = malloc(n*n*sizeof(int))) == 0) return 1;

  printf("Input Matrix A %d X %d\n", n, n);
  for(i=0; i<n; i++) {
    wa = &dataA[i*n];
    printf("A %d : ", i+1);
    for(j=0; j<n; j++) scanf("%d", &wa[j]);
  }
  printf("Input Matrix B %d X %d\n", n, n);
  for(i=0; i<n; i++) {
    wb = &dataB[i*n];
    printf("B %d : ", i+1);
    for(j=0; j<n; j++) scanf("%d", &wb[j]);
  }

  puts("Print out A-B=C");
  for(i=0; i<n; i++) {
    wa = &dataA[i*n];
    wb = &dataB[i*n];
    printf("C %d : ", i+1);
    for(j=0; j<n; j++) printf("%d ", wa[j] - wb[j]);
    puts("");
  }
  return 0;
}
856デフォルトの名無しさん:2009/04/18(土) 03:05:28
>> 813

#include <stdio.h>
enum { ARRAY_NUM = 10 };
void disp_array(int *array, int num) {
 int i;
 printf("Array:");
 for (i = 0; i < num; i++) printf(" %d", array[i]);
 printf("\n");
}
int main(void) {
 int array[ARRAY_NUM];
 int min, max, sum;
 int i, j; int temp;
 
 for (i = 0; i < ARRAY_NUM; i++) scanf("%d", &array[i]);
 disp_array(array, ARRAY_NUM);
 
 min = max = array[0]; sum = 0;
 for (i = 0; i < ARRAY_NUM; i++) {
  for (j = i + 1; j < ARRAY_NUM; j++) {
   if (array[j] < array[i]) { temp = array[i]; array[i] = array[j]; array[j] = temp; }
  }
  if (array[i] < min) min = array[i];
  if (array[i] > max) max = array[i];
  sum += array[i];
 } 
 disp_array(array, ARRAY_NUM);
 printf("min: %d, max: %d, average: %d\n", min, max, sum / ARRAY_NUM);
 return 0;
}
857デフォルトの名無しさん:2009/04/18(土) 03:10:31
>> 813

演習2

#include <stdio.h>
enum { STRING_LENGTH = 100 };
int find_char(char *str, char ch) {
 int i;
 if (str == NULL) return -1;
 i = 0;
 while (str[i]) {
  if (str[i] == ch) return i + 1;
  i++;
 }
 return -1;
}

int main(void) {
 char str[STRING_LENGTH];
 char ch;
 int num;
 printf("str >> ");
 scanf("%s", str);
 fflush(stdin); /* fflush()を使うのは本当は正しくない */
 printf("char >> ");
 scanf("%c", &ch);
 
 num = find_char(str, ch);
 if (num < 0) printf("なし\n");
 else printf("%d番目\n", num);
 return 0;
}
858デフォルトの名無しさん:2009/04/18(土) 03:12:11
>>856,857

安価の付け方ミスったぜ……。
>>856が演習1。全角空白を適当に変換してくれ。
859デフォルトの名無しさん:2009/04/18(土) 03:42:18
>>858
夜遅くにありがとうございました><
860デフォルトの名無しさん:2009/04/18(土) 06:08:54
演習2はstrcspnかstrchr使えばええんちゃうの?
861デフォルトの名無しさん:2009/04/18(土) 07:46:22
862855:2009/04/18(土) 08:14:29
863デフォルトの名無しさん:2009/04/18(土) 12:20:32
すみません>>842がビルドエラーになるのですがとこが間違ってるのでしょうか?
864デフォルトの名無しさん:2009/04/18(土) 12:21:46
少なくとも出力されているエラーを貼りましょう
865デフォルトの名無しさん:2009/04/18(土) 12:23:37
mainの戻り値とかが怪しいな
それ以上はエスパーじゃないから分かんない
866863:2009/04/18(土) 12:30:56
説明不足ですみません。
以下がエラーメッセージになります。

errorC4430:型指定子がありません - intと仮定しました。
メモ:C++はintを既定値としてサポートしていません。

あと、3行目に問題があるようです。
867デフォルトの名無しさん:2009/04/18(土) 12:34:54
>>866
CじゃなくてC++で書けってこと?
868デフォルトの名無しさん:2009/04/18(土) 12:37:57
おぉ、>>865のESPが正解を言い当てているw
main() を int main() に。

でも、それはC++のコンパイラを使っているからであって
Cでは main() で間違いじゃない。
あと、Cでは引数なしのときはできうる限り void を使う。
よって main(void) がいい感じ。C++では逆にvoidは使わない。

コンパイルエラーはでるが、間違いではないので、
先生に言われたら「たわけがっ!」と言い張ればOK
869863:2009/04/18(土) 12:52:04
迅速に対応していただき助かりました。
無事に動きました。
皆さん有り難うございます!
870デフォルトの名無しさん:2009/04/18(土) 13:39:58
>>868
C でも int main() が昔からの書き方かな。int main(void) は最近のはやりですかね。
871デフォルトの名無しさん:2009/04/18(土) 13:45:50
main()のint省略は、
Microsoft VC6の時代は、拡張子CPPでもウォーニングレベル止りだったけれど、
VC8以降は拡張子CPPではエラーにした。
872デフォルトの名無しさん:2009/04/18(土) 14:06:06
>>870
最近って、ISO、ANSI準拠でとっくの昔に「標準スタイル」として提唱されているが?
873デフォルトの名無しさん:2009/04/18(土) 14:20:51
>>872
その ANSI 準拠がくせもの、main() 呼び出し先では引数つきで呼び出しているのに、main(void) ってかくのは変じゃないですか?
874デフォルトの名無しさん:2009/04/18(土) 14:32:47
呼び出し時の引数を無視しているだけで、別に変じゃないですよ。
875デフォルトの名無しさん:2009/04/18(土) 14:47:04
呼び出し側でスタックに積んでも
それを使うかどうかは呼び出された側次第だしな
876デフォルトの名無しさん:2009/04/18(土) 15:13:37
C言語は関数のプロトタイプ宣言で戻り値の型を省略すると
コンパイラによる型チェックが停止するので(K&R第2版89p)
引数なしの場合はvoidをつけるべき。

でもmainは関係なし。実際、K&Rでもmainの引数は省略されてる。
877デフォルトの名無しさん:2009/04/18(土) 15:15:36
戻り値じゃなくて、パラメータだったよ、おっかさん。
あと、K&Rはmainの戻り値も省略してる。ひゃっはー。
878871:2009/04/18(土) 17:06:14
>863
main() Cでは戻り値のウォーニング。C++では戻り値のエラー。
void main() Cではエラー無し。C++では戻り値のウォーニング。
879デフォルトの名無しさん:2009/04/18(土) 18:46:20
[1] 授業単元:プログラミング演習
[2] 問題文:直線と四角形の接触判定を求めるプログラム
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: (C)
[4] 期限:火曜日
[5] その他の制限:特になし

直線の式と四角形の座標を入力して直線が四角形を通過しているか
(角で交わるものも含む)どうかを判定するプログラムです。
よろしくお願いします
880デフォルトの名無しさん:2009/04/18(土) 19:01:42
>> 879
四角形の大きさなどは?
881デフォルトの名無しさん:2009/04/18(土) 19:07:28
>>880
特に決められていないので大きさに関係なく
判定できたらいいなと思います
882デフォルトの名無しさん:2009/04/18(土) 19:27:43
#include <stdio.h>

typedef struct { double x, y;} point;
typedef struct { double a, b, c;} line;

int isCross(line l, point p1, point p2)
{
return (l.a*p1.x+l.b*p1.y+l.c)*(l.a*p2.x+l.b*p2.y+l.c)<=0;
}

int main(void)
{
int i;
point quad[4];
line l;

for(i=0; i<4; i++) scanf("%lf%lf", &quad[i].x, &quad[i].y);
scanf("%lf%lf%lf", &l.a, &l.b, &l.c);

if(isCross(l, quad[0], quad[2])||isCross(l, quad[1], quad[3])) {
printf("通過する\n");
}
else printf("通過しない\n");

return 0;
}
883デフォルトの名無しさん:2009/04/18(土) 19:58:15
>>882
ありがとうございます
直線のa,b,cは傾きと切片とあと何を入力してるんでしょうか?
884デフォルトの名無しさん:2009/04/18(土) 19:59:51
ax + by + c = 0
885デフォルトの名無しさん:2009/04/18(土) 20:05:20
あと180°以上の角があるやつには対応してないから
886デフォルトの名無しさん:2009/04/18(土) 20:06:22
直線は無限なのか有限なのか
四角形は座標軸に対して傾いてないのかとか
多少気になるな
無限で傾いてないと仮定するのが一番楽そうだけど
887デフォルトの名無しさん:2009/04/18(土) 20:09:13
>>886
説明がたりなくて本当にすみません。
直線は無限で四角形は座標軸に対して傾いていません
888デフォルトの名無しさん:2009/04/18(土) 20:11:10
直線に対して四角形の角の四点がすべて同じ側にあるかどうかを調べる
ってのが方針でしょう
889デフォルトの名無しさん:2009/04/18(土) 20:16:18
>>875
ダウト。cdecl じゃなくて stdcall(pascal) だったら呼ばれた側で処理しないと。
890デフォルトの名無しさん:2009/04/18(土) 20:22:04
定義からすると四角形じゃなくて長方形(矩形 Rectangle)が正しいな
そして座標軸に対して傾いていない
891デフォルトの名無しさん:2009/04/18(土) 20:35:46
#include <stdio.h>

typedef struct { double top, bottom, left, right; } rectangle;
typedef struct { double a, b, c; } line;

int isCross(rectangle r, line l)
{
return (l.a*r.left+l.b*r.top+l.c)*(l.a*r.right+l.b*r.bottom+l.c)<=0
|| (l.a*r.left+l.b*r.bottom+l.c)*(l.a*r.right+l.b*r.top+l.c)<=0;
}

int main(void)
{
rectangle r;
line l;

scanf("%lf%lf%lf%lf", &r.left, &r.top, &r.right, &r.bottom);
scanf("%lf%lf%lf", &l.a, &l.b, &l.c);

printf("通過%s\n", isCross(r,l) ? "する" : "しない");

return 0;
}
892デフォルトの名無しさん:2009/04/18(土) 20:51:49
数学の問題としてもC言語の問題としても面白くない
893デフォルトの名無しさん:2009/04/18(土) 21:09:57
数学の問題としてもw
面白くないw
894デフォルトの名無しさん:2009/04/18(土) 21:22:43
二つの対角線のうち、どちらかが直線と交わればいい。
対角線と直線が交わるってことは、対角線の両端の座標をax+by+cに代入した結果が、
片方は正で片方が負になっていればいい。
895デフォルトの名無しさん:2009/04/19(日) 00:54:33
>>894
で、それって888の言ってることとどう違うの?
896デフォルトの名無しさん:2009/04/19(日) 00:57:45
>>870
後者をやってるヤツなんて見たことないが・・・
わざわざint つけてvoidつけてとかバカだろと
897デフォルトの名無しさん:2009/04/19(日) 01:12:34
釣れねーよw
898デフォルトの名無しさん:2009/04/19(日) 01:51:07
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  任意の2つの正方行列を標準入力から入力し、2次元配列に保存し、
  これら2つの行列の差を求め、表示するプログラムを作成せよ
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン:VisualC++2008
 [3.3] 言語:C++
[4] 期限: 19日7時まで
[5] その他の制限:なし
899デフォルトの名無しさん:2009/04/19(日) 01:56:45
>>898
>>813,855
900デフォルトの名無しさん:2009/04/19(日) 01:58:36
重複すいませんでした。
901デフォルトの名無しさん:2009/04/19(日) 06:43:35
>>895
対応できる範囲が違う
今回は長方形なので同等だが
図のような四角形だと結果が変わる
ttp://2sen.dip.jp/cgi-bin/upgun/up1/source/up26197.png
902デフォルトの名無しさん:2009/04/19(日) 09:14:48
>>901
じゃあ895は888にむしろ劣ってるね
903デフォルトの名無しさん:2009/04/19(日) 11:03:44
お前が888か?w
具体性皆無でクソの役にもたたねーよw
904デフォルトの名無しさん:2009/04/19(日) 11:16:13
>>882を変形四角形対応版に改良
#include <stdio.h>

typedef struct { double x, y; } point;
typedef struct { double a, b, c; } line;

int isCross(line l, point p1, point p2)
{
return (l.a*p1.x+l.b*p1.y+l.c)*(l.a*p2.x+l.b*p2.y+l.c) <= 0;
}

int main(void)
{
point quad[4];
line l;
int i;

for(i=0; i<4; i++) scanf("%lf%lf", &quad[i].x, &quad[i].y);
scanf("%lf%lf%lf", &l.a, &l.b, &l.c);

for(i=0; i<3; i++) if(isCross(l, quad[i], quad[i+1])) break;

printf("通過%s\n", i!=3 ? "する" : "しない");

return 0;
}
905デフォルトの名無しさん:2009/04/19(日) 12:49:50
>>903
904みたいにコードで示してから具体性とか言え
904はダメダメだけどな
906デフォルトの名無しさん:2009/04/19(日) 16:24:19
どこがダメダメなのかコードで示してから言えw
907デフォルトの名無しさん:2009/04/19(日) 17:16:42
>>903
具体性も何も ax+by+c に代入して符号調べるだけじゃん
908デフォルトの名無しさん:2009/04/19(日) 18:08:02
その程度のことすら書いてないのが888
909デフォルトの名無しさん:2009/04/19(日) 18:08:51
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
新入生全員にパスワードを渡したい。学生ごとに異なるパスワードをコンピューターを使って自動的に生成したい。
生成するパスワードの長さは10とする。パスワードに使える文字は、英字のうち大文字のみとする。
1回のプログラム実行につき、1個のパスワードが出力されるようにせよ。
制約条件:パスワード生成時に、random()とsrandom()を使う。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: ([2009年4月21日10:00まで]
[5] その他の制限:なし。

よろしくお願いします。
910デフォルトの名無しさん:2009/04/19(日) 18:13:42
>>908
エスパーしろっていう内容でもないんだけど
一から十まですべて書かないと分からない?

質問者のレベルを考慮すれば分からなくても仕方ないけど
>>908 は質問者なの?
911908:2009/04/19(日) 18:14:55
いいからさっさと答えんかいカスども
912デフォルトの名無しさん:2009/04/19(日) 18:15:07
異なるってことは、今まで生成したパスをファイルで保存すんの?
913デフォルトの名無しさん:2009/04/19(日) 18:17:42
>>910
そういうことはコード書いてから言ってねw
914デフォルトの名無しさん:2009/04/19(日) 18:21:50
>>910
質問者じゃないけど、>>888じゃ質問者の役にはたたないだろ。
実際にコード書くか、>>894程度の説明ぐらいはしないと。
915デフォルトの名無しさん:2009/04/19(日) 18:22:55
>>909
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int random(void)
{
return rand();
}

void srandom(unsigned seed)
{
srand(seed);
}

int main(void)
{
int i;

srandom(time(NULL));
for(i=0;i<10;i++)
{
printf("%c", 'A'+random()%26);
}

return 0;
}
916デフォルトの名無しさん:2009/04/19(日) 18:34:38
すばやく2回実行すると同じpassができるw
917デフォルトの名無しさん:2009/04/19(日) 18:38:59
同じパス出てもいいの?題意には書いてないけど
918デフォルトの名無しさん:2009/04/19(日) 18:39:20
>>915
ありがとうございます。
早いですね♪
919デフォルトの名無しさん:2009/04/19(日) 18:59:05
良いらしい。
920デフォルトの名無しさん:2009/04/19(日) 20:11:44
random(3), srandom(3) を使えって意味じゃなかったのか…
921デフォルトの名無しさん:2009/04/19(日) 21:26:29
>>920
mingw だとリンクエラーになるけど
linux だとまんまなのがあったのか
922デフォルトの名無しさん:2009/04/19(日) 21:34:41
>>921
Cygwin使えということだな。
923デフォルトの名無しさん:2009/04/19(日) 21:59:35
>>906
同じ点を2回計算するのがダメ
quad[3]とquad[0]が作る線分のことを考慮してないのがダメ

よってダメダメ
924デフォルトの名無しさん:2009/04/19(日) 22:07:30
>>923
>quad[3]とquad[0]が作る線分のことを考慮してないのがダメ
これは問題ないと思うじぇ
925923:2009/04/19(日) 22:41:31
ああそうか、線分じゃなくて直線だから大丈夫なのか
スマン
926デフォルトの名無しさん:2009/04/19(日) 23:23:43
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
正の整数nを入力し、
(n+1)×n+n×(n-1)+........
+4×3+3×2+2×1
を計算し求めるプログラム
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Borland C++ 5
 [3.3] 言語: C
[4] 期限: 一週間後
[5] forの繰り返しを使う
927デフォルトの名無しさん:2009/04/19(日) 23:31:51
#include <stdio.h>

int main()
{
int n;
double sum;

printf("正の整数を入力してください>");
scanf("%d", &n);
for (sum = 0.0; 0 < n; n--) {
sum += (n + 1) * n;
}
printf("Ans. %.0f\n", sum);
return 0;
}
928デフォルトの名無しさん:2009/04/19(日) 23:35:22
例外処理も何もしないとか論外すぎんだろksg
929デフォルトの名無しさん:2009/04/19(日) 23:45:40
因にその和はn*(n+1)*(n+2)/3
930デフォルトの名無しさん:2009/04/19(日) 23:47:19
>>927
for(i=1;i<=5,i++)など、なるべく簡単に最初に習う範囲でお願いします。
931デフォルトの名無しさん:2009/04/19(日) 23:52:18
#include <stdio.h>

int main()
{
int n, i;
double sum = 0.0;

printf("正の整数を入力してください>");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum += (i + 1) * i;
}
printf("Ans. %.0f\n", sum);
return 0;
}
932デフォルトの名無しさん:2009/04/19(日) 23:54:32
わざわざreturn 0つけるくらいならmain()だけで良いだろ。
933デフォルトの名無しさん:2009/04/20(月) 00:00:46
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
934デフォルトの名無しさん:2009/04/20(月) 00:00:49
[1] 授業単元: プログラミング 演習(構造体)
[2] 問題文(含コード&リンク): 3冊の本の名前、ISBN、著者名を入力し一覧表示しなさい。
ただし、ISBNの4,6,12,16桁目に'-'が入っていない場合エラー表示しなさい。
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: C
[4] 期限: 04/20 12:00
[5] その他の制限: forや配列など基礎的な事しかやっておりません。
一覧表示までは動作したんですがISBNの判定をどの様にしたらいいのか分かりません。
構造体名は「hon_t」それぞれ「name」「isbn」「tyosya」で組んでいます。
935デフォルトの名無しさん:2009/04/20(月) 00:12:35
>>931
解決しました。
ありがとうございました。
927、929さんもありがとうございました。
936デフォルトの名無しさん:2009/04/20(月) 00:13:07
if (hon_t.isbn[3] != '-' || hon_t.isbn[5] != '-' || hon_t.isbn[11] != '-' || hon_t.isbn[15] != '-') {
// error
}
937デフォルトの名無しさん:2009/04/20(月) 00:24:25
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
無限等比級数の和を各項を順に加算していくことにより求めるプログラム
1+(1/3)+(1/9)+(1/27)+.....
ただし、0.00001以下となる項を加えた時点で加算を終了することとする。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Borland C++ 5
 [3.3] 言語: C
[4] 期限: 一週間後
[5] while do-whileの繰り返しを使う
  初心者用でなるべく簡単なものでお願いします。
938デフォルトの名無しさん:2009/04/20(月) 00:36:03
カキコ後10分経過
鋭意清書中約3名
コンパイル中約6名
コーディング中約18名
939デフォルトの名無しさん:2009/04/20(月) 00:36:41
>>937

#include <stdio.h>

int main(void){
double r = 3;
double stop = 0.00001;
double b = 1;
double ans = 0;
while(1/b > stop){
ans += 1/b;
b *= r;
}
printf("%f\n", ans);
return 0;
}
940デフォルトの名無しさん:2009/04/20(月) 00:41:37
#include <stdio.h>

int main()
{
int n = 1;
double sum = 0.0;
double d;

do {
d = 1.0 / n;
sum += d;
n *= 3;
} while (0.00001 < d);
printf("Ans. %f\n", sum);
return 0;
}
941デフォルトの名無しさん:2009/04/20(月) 00:42:00
>>936
解決致しました。
ありがとうございました。
942デフォルトの名無しさん:2009/04/20(月) 01:04:58
>>940
解決しました
ありがとうございました。

943デフォルトの名無しさん:2009/04/20(月) 08:17:51
>>932
それint省かれてるだけだから結局return 0いるじゃん。
944デフォルトの名無しさん:2009/04/20(月) 08:41:25
きっと戻り値の型を省略すると void になると思ってたんだろ
945デフォルトの名無しさん:2009/04/20(月) 11:29:06
1] 授業単元:ディジタル回路
[2] 問題文(含コード&リンク):
次の2つの関数は異なるa,bの値を返すか。
その場合はa,bの組の例を答えよ。

1.
int foo1(int a, int b){
if(a>b) return 1;
else return 0;
}

2. int foo2 (int a, int b){
int c;
c=a-b;
if(c>0) return 1;
else return 0;
}

続く。
946デフォルトの名無しさん:2009/04/20(月) 11:30:16
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン:不明 (指定なし?)
 [3.3] 言語: C
[4] 期限: 今日中

自分なりに考えてみたのですが、
答えは「ある」。例はa=-32768, b=1

理由:intは16ビット符号付き2進数なので、表せられる範囲は-32768〜32767
2進数に現わすと1000000000000000〜0111111111111111
a=-32768,b=1とすると、
a<bなので、foo1関数では「0」を返すが、
c=a-bをすると表現形式の値域を超えているため、c=32767となる。
よってc>0なので、foo2関数では「1」を返す。


何か的外れな考え方をしているかも知れません・・・
答え、考え方が合っているかどうか、ご教示お願いします。
947デフォルトの名無しさん:2009/04/20(月) 11:43:04
考え方はあってるけど、Vistaでintが16ビット?
948デフォルトの名無しさん:2009/04/20(月) 11:46:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ピクロスを解くプログラム
パターンの判定(横w=15 横の数列=4.2.3)
1行の可能なパターンを全て出力
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:分からない
[3.3] 言語: C
[4] 期限: 4/23
[5] その他の制限:お願いします
949>>909:2009/04/20(月) 12:53:20
>>915
すみませんが、エラーになってしまうんですが。
950デフォルトの名無しさん:2009/04/20(月) 12:55:50
どういうエラーが出たのかも書かないと。
エラー出てるのは自分だけかもしれないぞ。
951デフォルトの名無しさん:2009/04/20(月) 12:56:55
Cで短い数学問題を題材にした課題なんて出すとCも数学もダメダメに
なるからね
例え自分達が良くても学生/生徒はそうじゃないから
>>>>>教師
952デフォルトの名無しさん:2009/04/20(月) 12:57:52
高校レベルの数学ができないアホが来たw
953デフォルトの名無しさん:2009/04/20(月) 13:06:46
その高校レベルの数学が中途半端なものなので、
Cも数学もダメにする元凶だっつーの
954>>909:2009/04/20(月) 13:23:29
>>950
6行目がおかしいらしい
955945:2009/04/20(月) 13:39:59
>>947
vistaって、intは16ビットではないのか・・・知りませんでした。
考え方は一応合っているのですね。もう少し考えてから宿題を提出します。
有難う御座いました。
956デフォルトの名無しさん:2009/04/20(月) 13:44:28
>>954
エラーメッセージは?
うちじゃ普通にコンパイルするけどな
957デフォルトの名無しさん:2009/04/20(月) 13:55:04
>>953
この程度でダメになるようなら元からダメだろw
958デフォルトの名無しさん:2009/04/20(月) 13:59:45
>>949 random と srandom が再定義されるからだと思う
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void)
{
int i;

srandom(time(NULL));
for(i=0;i<10;i++)
{
printf("%c", 'A'+random()%26);
}

return 0;
}
959デフォルトの名無しさん:2009/04/20(月) 14:17:34
>>957
大きく出たな
960デフォルトの名無しさん:2009/04/20(月) 14:22:49
だいたいなんで自分に関係ない課題にダメだししてんだよw
961デフォルトの名無しさん:2009/04/20(月) 14:45:35
だいたいさぁ、現役の学生はこの世に誕生してまだ約20年間
生きた程度で、最初の10年はまだ物心も付かない、判断力も無い
思想の面でも洗脳されていない、そのうち親や周りの影響力で
考え方も染まっていくわけだが、40年生きた人は単純に20年生きた若造の倍
なんて短絡的なものではない。何度も同じ事をやっていると飽きてくる。
自分の人生はこれに賭けた、だから失敗できない。そりゃそうだ。
スポーツ選手がそのスポーツで好成績を出さなければ、次の世代の世話役で
一生を終えるかもしれない。成功したものでも、指導者になれるとは限らない。
適正があるからな。で、数学がちょっと出来ないくらいで、諦めてどーすんの?
理数系に進んで英語バリバリな俺からしてみれば、早く海外に出ろと言いたい。
島国で視野の狭いジャポネーゼは駄目。技術力はあるけど発展性が乏しい。
962デフォルトの名無しさん:2009/04/20(月) 14:48:50
そもそも、英語なんてネイチヴランゲージャーからしてみれば
学ばずとも日頃から使うからな。俺の考えもジャポネーゼだw
しかし、発展させるくらいのことはするよ。どうせ使わないものを
多数取り込んでも、それを覚えるだけで限られた生きられる時間を
食いつぶすだけで終わるかもしれないしな。もしかすると明日、
事故で死ぬかもしれない人生だぞ。早くしろ、間に合わなくなっても知らないぞー
963デフォルトの名無しさん:2009/04/20(月) 14:51:51
で、俺はあまり数学とは深く関わらない処理でプログラミングをしている。
確かにデジタル機器なんざ数値データの処理が重要になるため、少しでも
効率の良いアルゴリズムを記述するために、数学的な考えは必要となってくる。
if、比較演算、四則演算、その他諸々。俺は頭が良いのか悪いのか、分からない。
ランクの低い大学に通っていたが、何で大学に通ったかさえも動機が曖昧。
CMでもやってるだろ?何でここの会社を選んだ?動機は?そんなのねーよ
なんとなくだろ?って奴は意外に多い。自分がそうなってしまうこともあるだろう。
誰しも人生は一度きりだ、さぁ外に出て自分を解き放てっ!(タイーホAA略)
964デフォルトの名無しさん:2009/04/20(月) 14:59:19
ああ、長文低脳が自分に解けない問題が出てファビョってたのかw
965デフォルトの名無しさん:2009/04/20(月) 15:01:01
悪い、久々に来たんだが、解けない問題は無かったよ?w
966デフォルトの名無しさん:2009/04/20(月) 15:07:09
数値計算も関わってくるが、本当に使わない人は使わないしな。
あれこれ解けても、分かりきった答えを覚えるだけがあんたの人生なのかと?
それが出来て何か「教科書で出てくる問題」を解く以外に使ったことがあるのかと?
ユーティリティーソフトを作りたいなら、PCの仕組みも学ばないと駄目だよ。
コードなんて所詮文字列。それをうまいこと活用できるかは、各個人次第。
967デフォルトの名無しさん:2009/04/20(月) 15:08:11
精神の方の病院に入院してたのね。
そのわりには妄想癖抜けてないみたいだけどw
968デフォルトの名無しさん:2009/04/20(月) 15:17:37
2ちゃんねるだって、もともと大昔からあったわけでもなければ、
それ以前にインターネットの普及が発展に繋がった。
2ちゃんねるがインターネットを普及させたわけではないが、そこに
目を付けた博之はさすが。ただ、利用者はクズが多いがなw
もともと人間なんて、自分はおかしくない、自分こそ正しいという
思い込みで生きているちんけな生き物。戦争が起こっても負けた方が悪いw
だから良さそうな相手を揺さぶって脅して、戦争に持ち込もうとする国もある。
ここで見下すような発言をするだけのお前、自分が特定できるコテなりトリップなりつけて
今後は発言したら?お前こそ問題が解けなかったんじゃないの?w
自分はさも解いた、解けたみたいな、ここでは 論より証拠 言葉よりコード 日本語よりプログラム言語
ですから、コードと実行プログラムで己の実力を証明してね。
ただ、あんたが解いたのは既に世の中に知れ渡っている、教科書にも記述されていることで
例えばコカ・コーラ社のコーラの調合の仕方、ケンタッキー・フライドチキンのスパイスの調合みたいな
固有ブランドを守るような秘密を解くことは出来ないからw
969デフォルトの名無しさん:2009/04/20(月) 15:22:20
つーか、お前この板になにしに来てんの?
970デフォルトの名無しさん:2009/04/20(月) 15:25:36
>論より証拠 言葉よりコード 日本語よりプログラム言語
コードの1行も書かず長文連投してる人間の言っていいことじゃない
971デフォルトの名無しさん:2009/04/20(月) 15:31:42
この世は教養を身に付けて賢く生きることも重要だが、あれもこれもできる人はいない。
ほとんどの事で他人を頼って生きているわけだろ?ライフライン、病院、交通、食料、
そしててめぇが使っている目の前の機械。出来ない奴をバカにする割には
自分はこの世の中でちっぽけな存在だと気づかない愚かさ。
政治家にでもなって、地元に税金を国から持ち込んで、地元が賑わって自己満足でも
してたら?高額納税者には、何も高学歴しかいないわけじゃないのだが、あんたの
納税額はおいくら?プログラミングで稼いだ分ではいくら?言ってごらん。
おっちゃん、内緒にしておいてやるから。ここに書いた時点で内緒でも何でもないがw
あと数年生きてみろ、相手をバカにする発言を平気でする精神レベルの低いお子ちゃま。
お前が学生なら社会に出れば分かる。もし社会人なら人生オワタ。ただの無職?
それは論外だろ。プログラミングで金稼ぎできないからって、ここで自分ができることで
自分以下の奴を見下しに来ているの?恥ずかしい人生だことw
何度も言ってやるよ。ここに投稿される質問の問題は、既に答えが分かりきっているものばかり。
余ほど、講師が過去にないようなものを出さない限り。ただそれすら学校の 授業 で学んだことを
使って解くという分かりきったものなんだわ。そう、自分の考えが足りない、視野が狭いだけで
勝手にそんな問題はと否定しているだけだと気づきな、ここでしか去勢を張れない青二才。
972デフォルトの名無しさん:2009/04/20(月) 15:33:39
>相手をバカにする発言を平気でする精神レベルの低いお子ちゃま。
自己紹介乙
973デフォルトの名無しさん:2009/04/20(月) 15:42:24
いっとくが、>>951は長文カキコとは別人だからな
974デフォルトの名無しさん:2009/04/20(月) 15:48:07
>>955
OSじゃなくてコンパイラ依存
VistaでもLSI-C試食版とか使えばintが16ビットになる
975デフォルトの名無しさん:2009/04/20(月) 15:48:24
じゃあ、この長文は誰と戦ってるんだ?
問題にケチをつけた>>951
>>951にケチをつけた>>952
976デフォルトの名無しさん:2009/04/20(月) 15:52:51
vistaでLSI-Cを使う理由がわからねえw
977デフォルトの名無しさん:2009/04/20(月) 15:57:59
>>951=>>965=>>973で長文とは別人ってことでいいのかな?
だとしたらなんでこの長文はこんなに暴れてんだ?
978デフォルトの名無しさん:2009/04/20(月) 16:00:52
麻呂を目の敵にしたあの基地外か。いい加減、ここがお前の縄張りでも
お前がボスでもないことに気づいてくれ。どこのへぼ講師か教授か知らないが
鬱陶しい。授業の合間にこのスレを閲覧?授業中に閲覧?仕事しろ。
お前がいくら数値計算に長けていようが、日本のために活動していないなら
はいさようならだよw 今若くしてこれから長生きする人で、未熟な者に対して
嫉妬(shit)してるのかね?w
979デフォルトの名無しさん:2009/04/20(月) 16:02:47
長文が一体何を言わんとしているのか、あなたは理解できるだろうか?
オレにはさっぱり分からないが、分からないなりに要点をまとめようと努力してみた

>>961
海外では英語さえ出来れば、内容の論理性は求められない

>>962
享楽的に生きろ

>>963
オレは一体何を言ってるんだろう?

>>966
勉強なんて何の意味があるっていうんだ

>>968
僕の考えたアルゴリズムが最強

>>971
お前より出来る奴なんて腐るほどいる
だから僕を馬鹿にするのはやめて
980デフォルトの名無しさん:2009/04/20(月) 16:36:52
>>953
高校レベルの数学がきちんと身についてる人間にとっては、
そのレベルの数学と関連するC言語の課題は理解の一助となると思うが。
981デフォルトの名無しさん:2009/04/20(月) 16:49:07
プログラミング、コードとにらめっこで終わる人生ってのも、嫌だな・・・
982デフォルトの名無しさん:2009/04/20(月) 17:01:35
>>980
そのレベルの数学の場合でも、もっと良いツールが既に
出来ているんで(奇しくもその多くはC言語が無ければ作れなかった)
数学教育の場合Cは使わないな。
983デフォルトの名無しさん:2009/04/20(月) 17:10:10
数学の教育にCを使うんじゃなくて、Cの教育に数学を使うんだよ。

新しいものを学ぶ際に既知のものと関連付けることによって学習効果を向上させるの。
984デフォルトの名無しさん:2009/04/20(月) 17:12:55
>>981
夢のような人生
985デフォルトの名無しさん:2009/04/20(月) 17:47:00
>>979
の恐ろしく冷静で的確なリファクタリングに敬礼w
986デフォルトの名無しさん:2009/04/20(月) 17:58:54
次スレまだー?
>>948できたけど回答者が戻るまでに落ちそうなんだけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9047.txt
987デフォルトの名無しさん:2009/04/20(月) 18:01:50
日本人がやっているのはより追求するものばかりだよ。
小型化、高性能化。より無駄を省いて効率化。
まぁ、別に日本人が劣っているってわけでもない。
世界的に見て何かと優秀な部類に入るしな。
だいたい、アメリカは日本と比較して明らかに規模が違うしな。
人種、移民、海外への影響力。1億3千万の島国の日本が
ここまで世界に影響力があることを考えると、やはり素晴らしい。
しかし、大勢に無勢。何かと人数で負けてしまうんだよね。
逆に、人数でごり押しするのがあの国。まぁスレチだから
スレが終わりそうなこの辺で。次のスレでは虚勢を張っている
講師だか教授だか知らんが、そいつが罵詈雑言を使ったらスルー、放置よろ。
988デフォルトの名無しさん:2009/04/20(月) 20:20:08
Cを学ぶ際に数学の関数とCの関数の混同を防止するくらい重要な
ことは無い。これを混同してしまうと数学もCも両方ダメになる。
よってCの初期学習期間中に数学とリンクするのは良く無いことが
わかる。(これはCだけじゃなく、ユーザー定義関数が作れる任意の
構造化プログラミング言語全般に共通して言えること)
989デフォルトの名無しさん:2009/04/20(月) 20:21:18
>>986
待ってろ、次スレ立ててくる
990デフォルトの名無しさん:2009/04/20(月) 20:22:48

じゃあ俺も。
>>987 俺の自作自演乙
991デフォルトの名無しさん:2009/04/20(月) 20:24:14
C/C++の宿題片付けます 125代目
http://pc12.2ch.net/test/read.cgi/tech/1240226599/
992デフォルトの名無しさん:2009/04/20(月) 20:26:25
Cを学習する際に数学の関数とCの関数を混同するヤツはプログラムに向いてない。
993デフォルトの名無しさん:2009/04/20(月) 20:46:00
という奴に限って思いっきり混同してたりするw
994デフォルトの名無しさん:2009/04/20(月) 20:50:12
そんなバカは>>993だけで十分だ
995デフォルトの名無しさん:2009/04/20(月) 20:56:01
Cを学べなかった奴はバカ
ならこのスレに来る質問者は皆バカでFA
回答者がこれじゃなw
996デフォルトの名無しさん:2009/04/20(月) 20:57:09
そんなバカは>>995だけで十分だ
997デフォルトの名無しさん:2009/04/20(月) 20:59:31
俺の下痢便でも煎じて飲むか?
998デフォルトの名無しさん:2009/04/20(月) 21:01:03
その下痢は誰の下痢便を煎じて飲んだ結果かい?
999デフォルトの名無しさん:2009/04/20(月) 21:03:32
話がずいぶんと汚くなってきたところで
次スレ
C/C++の宿題片付けます 125代目
http://pc12.2ch.net/test/read.cgi/tech/1240226599/
1000デフォルトの名無しさん:2009/04/20(月) 21:04:00
終了
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。