トップページ⇒tech
1001コメント376KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2009/03/02(月) 02:13:06
あなたが解けない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/
0002デフォルトの名無しさん2009/03/02(月) 02:24:21
>>1 よっし!
C/C++の宿題を片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232001038/
0003デフォルトの名無しさん2009/03/02(月) 04:31:50
http://pc11.2ch.net/test/read.cgi/tech/1232029287/998
前すれ998君、ちょっと職員室に来なさいw
0004デフォルトの名無しさん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] その他の制限:よろしくお願いします。
0005デフォルトの名無しさん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
0006デフォルトの名無しさん2009/03/03(火) 00:05:12
>>4
1. 構造体がどこから出てきたのか分からない
2. エラーが何を指しているのか分からない
3. 実行してみればいいだろ
0007デフォルトの名無しさん2009/03/03(火) 17:27:25
答えのついている演習問題について質問するのは有りなのですか?
0008デフォルトの名無しさん2009/03/03(火) 17:33:05
>>7
こう言う問題に対してこう言う解答でしたが、理解できません教えてくださいって、
初心者スレにでも書き込め。
0009デフォルトの名無しさん2009/03/03(火) 17:36:27
>>8
ありがとうございました
0010デフォルトの名無しさん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()で文字列として入力して数字以外を受け付けないように変更してもらいたいです。よろしくお願いします。

0011デフォルトの名無しさん2009/03/03(火) 23:05:41
isdigit関数使え
問題文みてないけど
0012デフォルトの名無しさん2009/03/03(火) 23:23:03
どうプログラムに組み込んでいいかがわかりません。
0013デフォルトの名無しさん2009/03/03(火) 23:32:58
ちょっと見てみたけど恐ろしいプログラムだな…
char str[100];
int i;
gets(str);
i = atoi(str);
でいいんじゃね?
0014デフォルトの名無しさん2009/03/03(火) 23:37:06
>>10
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8951.txt
もうみたくない
0015デフォルトの名無しさん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関数は使用しないこと。


友達がいなくて誰にも聞けません。誰か助けてください。
そもそも何をするプログラムなんでしょうか……
0016デフォルトの名無しさん2009/03/04(水) 20:33:46
友達がいないことがよく分かるな
いい年してボーリングもしたことないのか
0017デフォルトの名無しさん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);
0018デフォルトの名無しさん2009/03/04(水) 20:48:36
>>15-16
ボ"ウ"リングだろ。
3と5がちょっと微妙だな
ダブルの時に次の1投が4倍になるようにも読める

ま、書いてあるとおりに組むしかないんだろうな
出来るのはクソプログラムだが
0019デフォルトの名無しさん2009/03/04(水) 20:55:54
アルゴリズムに書いてある事を解釈せずに
そのままプログラムを作ったらおかしな事になりそうだなw
0020デフォルトの名無しさん2009/03/04(水) 21:18:40
ballじゃなくてbawlだったのか
球を投げるからballingと思った
0021 ◆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] その他の制限: 出来れば、各所にコメントを入れて下さい。
どういうプログラムなのか自分でも把握したいのと、コードの勉強も兼ねて。

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

>>27
自分の言葉で語れよ
0030デフォルトの名無しさん2009/03/05(木) 10:36:18
業務くせーな
この時期にこんな宿題ありえねーしw
0031デフォルトの名無しさん2009/03/05(木) 10:37:58
けしからんな、バグ仕込んでやろうぜw
0032デフォルトの名無しさん2009/03/05(木) 10:41:56
バグ仕込もうにも意味わからんしw
0033デフォルトの名無しさん2009/03/05(木) 11:48:39
>>29
日本語が理解できないなんて、日本人として恥ずかしくないのかね?
麻呂コンプレックスめw
0034デフォルトの名無しさん2009/03/05(木) 11:50:16
プロでもない麻呂に必死に噛み付く素人w
そもそも、本当のプロなら、こんな場所で油を売っている暇がない。
金を稼ぐためのソフトを、次々と開発するし、金にもならん
初歩的な問題なんて、相手にしないだろ。
0035モデム接続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;
}
0036デフォルトの名無しさん2009/03/05(木) 12:51:28
在日うぜーw
0037デフォルトの名無しさん2009/03/05(木) 14:56:58
在日日本人です
0038デフォルトの名無しさん2009/03/05(木) 14:58:30
>>37
参政権、ある?
0039デフォルトの名無しさん2009/03/05(木) 15:02:20
>>38
あるアルヨ
0040デフォルトの名無しさん2009/03/05(木) 15:14:19
韓国人が政治家になれる時代だぜw
0041デフォルトの名無しさん2009/03/05(木) 15:14:22
朝鮮人は息をするように嘘を吐く
0042デフォルトの名無しさん2009/03/05(木) 15:42:32
その日本語は変、という奴は、まず自分の日本語力を証明しろ。
ほとんどの人が、この世の中の事実を知らないまま、この世を去っていくわけだが?
あれもこれも、適切に発言できる人がいないことくらい、周知のこと。
お前、警察でもないのに、警察の専門用語とか話せる?
あれだって、他人からしてみれば、日本語か?と思えるものもあるぞw
0043デフォルトの名無しさん2009/03/05(木) 15:48:08
日本語でおk
0044デフォルトの名無しさん2009/03/05(木) 15:49:49
お前らスレ違いも甚だしいぞ
害基地は華麗にスルーじゃなかったのか?
0045デフォルトの名無しさん2009/03/05(木) 15:57:31
>>21 でいうと
問題文冒頭の「入力仕様を、」がまず分からない
「入力座標」が何か分からない
「最大10件」とあるが1件の単位は何?

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

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

>>48はいいすぎです
「小学生からやり直せ引きこもりニート」はないんじゃない?
0050デフォルトの名無しさん2009/03/05(木) 17:24:54
>>49
ニートだから仕方ない
0051デフォルトの名無しさん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] 期限: 今週中


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wikipediaでは、MS Cの最後のバージョンでC++コンパイラとMFC 1.0がついて、
その次からVisual C++という名称になったということになっている。
そして、VC++は1.5までが16ビット版だった。
0080デフォルトの名無しさん2009/03/06(金) 15:11:04
>>68 は、まだ根に持っているんだなw あの程度のことで、麻呂の態度が気に食わなかったのか
未だに必死に、麻呂がいるもんだとトラウマになっているようだが、それとは無関係に
麻呂以外の第三者を、無闇に煽っていることに気づかない、見えない敵と戦う戦士になったようだw
ちなみに、汎用性については、麻呂の方が明らかに軍配が上がった。所詮、お前は
固有のパターンにしか対応できない、融通の利かないヘボプログラマー。環境が変わると、
一からコードを書き直す、無駄が多いタイプ。そういうの、この世界では生き残れないよ。
そう、先行きを考えた前置きが出来ないから。
0081デフォルトの名無しさん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

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


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

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

>>87
はい、そうです

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

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

お助け下さい名人
0090デフォルトの名無しさん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;
}
0091デフォルトの名無しさん2009/03/06(金) 18:48:30
なんで別人のふりしてんの?
0092デフォルトの名無しさん2009/03/06(金) 20:17:12
>>89
参考書とか要らないから
googleにgetchと入力してボタンクリックするだけ
0093デフォルトの名無しさん2009/03/07(土) 02:59:15
あなたたちが課題をやってくれなかったせいで留年しました。
本当にありがとうございました。
0094デフォルトの名無しさん2009/03/07(土) 03:01:16
>>93
来年も留年させてあげます。
おたのしみに。
0095デフォルトの名無しさん2009/03/07(土) 03:11:32
麻呂トラウマで必死な引きこもりが痛すぎw
0096デフォルトの名無しさん2009/03/07(土) 05:30:35
>>93
言う事が朝鮮人みたいだな
自分のせいなのに人のせいにしやがって
0097デフォルトの名無しさん2009/03/07(土) 06:08:43
トラウ麻呂w
0098デフォルトの名無しさん2009/03/07(土) 13:22:37
[1]C言語基礎
[2]麻呂と罵倒屋さんとの剰余うんぬんの経緯をも一度
詳しく教えてくれませんか?
[3] 日本語
[4]本日中
0099デフォルトの名無しさん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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

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

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

i = rand()%remain[N_plyer];

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

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

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

文字列毎にその都度メモリを動的に確保する
一度確保したメモリは次の文字列を処理する前に解放する。
malloc とか使うんですかね?
[動作例]
% ./a.out abcde fghijklmn opqr
edcba
nmlkjihgf
rqpo
0123デフォルトの名無しさん2009/03/08(日) 17:47:17
>>122テンプレ
0124デフォルトの名無しさん2009/03/08(日) 19:16:11
>>122
こんなんでどうでしょう?

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8956.c
0125デフォルトの名無しさん2009/03/08(日) 19:33:33
よく見るとメモリを確保する必要性がないな
0126デフォルトの名無しさん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);
}
}
0127デフォルトの名無しさん2009/03/08(日) 20:09:23
麻呂のクソースに期待
0128デフォルトの名無しさん2009/03/08(日) 20:25:05
最近は<string.h>をincludeしないのでstrlen()を使うのがが流行り?
0129デフォルトの名無しさん2009/03/08(日) 20:45:38
>>127
いない奴に期待してどうすんだ?w
0130デフォルトの名無しさん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;
}
01311302009/03/08(日) 20:51:48
ごめん問題文読んでなかった。メモリ確保がいるの。
でも別にこれで長さにも個数にも制限なくないですか
0132デフォルトの名無しさん2009/03/08(日) 20:57:13
mallocと麻ー呂っくを掛けたのか?w
0133デフォルトの名無しさん2009/03/08(日) 20:58:33
無意味な仕様であることは確かだな。
0134デフォルトの名無しさん2009/03/08(日) 21:13:41
>for(; p != s; putchar(*p)) p--;
なんでわざわざこんな記法をw
0135デフォルトの名無しさん2009/03/08(日) 21:16:16
p=sのときも表示させるための工夫なんだろ
while(p!=s) putchar(*--p)
でいい気もするが。
01361222009/03/08(日) 21:30:26
>123-135
いろいろありがとうございました。
次回あれば、テンプレ忘れないよう気をつけます。
0137モデム接続2009/03/09(月) 01:07:40
> 最近は<string.h>をincludeしないのでstrlen()を使うのがが流行り?
実行ファイルが a.out だから、コンパイラは gcc ではないだろうか。
0138デフォルトの名無しさん2009/03/09(月) 03:45:30
Cygwinとかならgccでもa.exeじゃね?
0139デフォルトの名無しさん2009/03/09(月) 07:01:44
>>138
数学で逆は真ならずってならわなかったか
逆、裏、対偶ってあって真なのは対偶
0140デフォルトの名無しさん2009/03/09(月) 08:24:46
いや、それ、命題としてもどうかと。数学とかって話じゃないだろ。
実際に分かりきっている事実なんだから、調べれば良いだけ。
0141 ◆v/LK4luEPU 2009/03/09(月) 09:43:46
>>90
遅くなりました、ありがとうございます。
おかげさまで望みのコード勉強が出来ました。

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

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

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

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

0142デフォルトの名無しさん2009/03/09(月) 10:40:23
getchar と getch は挙動が全く違うし、getch は環境依存だから。
Windows の場合は getch でいいんだが、UNIX系OSの場合は termios (あるいは curses の getch) を使うことになる。
0143デフォルトの名無しさん2009/03/09(月) 12:57:23
>>142
win2kを使っててgetch()に酷い目にあわされたw
0144デフォルトの名無しさん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] その他の制限: あまり深くは習っていません。あまり難しいと困ります。

0145デフォルトの名無しさん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;
}
0146デフォルトの名無しさん2009/03/09(月) 22:19:30
>>144
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
0147デフォルトの名無しさん2009/03/09(月) 22:22:58
FizzBuzzと言う名前、忘れてた
これができないというのは正直信じられん
0148デフォルトの名無しさん2009/03/09(月) 22:29:29
>>147
もう久しく紙に書く習慣がなくなってしまったので、cでも急に紙に書けといわれるとどうかな。
01491442009/03/09(月) 22:47:04
FizzBuzzは書けました。ですが、3が付く数字がどう判定して良いかわかりません。
01501452009/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;
}
0151デフォルトの名無しさん2009/03/09(月) 22:56:17
>>145
俺はお前のような漢になりたい
0152規制解除したようす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;
}
0153デフォルトの名無しさん2009/03/10(火) 02:52:49
>>99
俺にはこれが限界だ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8959.txt
0154デフォルトの名無しさん2009/03/10(火) 02:54:49
>num = rand() % 53;
こう書くと偏るからダメだって言う奴がでるからダメ。
0155デフォルトの名無しさん2009/03/10(火) 02:59:31
>>154
randの偏りをなくすのは諦めたw
あと、カードを取ってあがった場合の処理もw
0156デフォルトの名無しさん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;
}
にする。
0157デフォルトの名無しさん2009/03/10(火) 03:42:25
>>153見ずに>>154見て、下位ビットは云々という話かとおもた
01581522009/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)
0159デフォルトの名無しさん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;
}
0160デフォルトの名無しさん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;
}
0161デフォルトの名無しさん2009/03/10(火) 12:11:27
>3が付く数字
0162デフォルトの名無しさん2009/03/10(火) 12:12:41
>>160
*30から*39も全部アホにならないといけないそうだ
300から399も
0163デフォルトの名無しさん2009/03/10(火) 12:15:49
1からnまでの間に3の倍数と3のつく数字がいくつあるか求める関数
int nabeatu(int n)
を作れ
というのを以前見たような気がする
0164デフォルトの名無しさん2009/03/10(火) 13:32:53
>>150に勝てる気がしなくてやめた
0165デフォルトの名無しさん2009/03/10(火) 13:50:54
倍数を求めるのは難しくないが、3の付く数字は
一度文字列に置き換えて、3が含まれるかチェキするとか。
0166デフォルトの名無しさん2009/03/10(火) 13:51:44
って、文字列に置き換える必要はなかったか。10で割った余りが3かどうかで
順に10で割っていけば良いか、すまそ。
0167992009/03/10(火) 16:11:22
>>153

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

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

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

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

tm構造体つくる→年月日時分秒メンバを書き換える→mktime()
→localtime_s()でstruct tmに変換
→曜日・日数が自動補完されてうまー
0191デフォルトの名無しさん2009/03/12(木) 11:27:49
皆C言語で書いてるってことなのか?
よくわからないんだけどCとC++が微妙に構文違うのはなぜなの?
0192デフォルトの名無しさん2009/03/12(木) 11:44:11
>>191
struct tm 変数名; // C structが必要
tm 変数名; // C++ structをつけなくていい
C++は、変数の宣言が処理の途中で出来る。等々
0193デフォルトの名無しさん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列なので)
0194デフォルトの名無しさん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

教えてください
0195デフォルトの名無しさん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;
}
0196デフォルトの名無しさん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;
}
0197デフォルトの名無しさん2009/03/12(木) 21:00:29
>>196
偏りそうにも見えるが、上手くいくのかな?
誰か優しく証明して。
0198デフォルトの名無しさん2009/03/12(木) 21:15:23
なんでこう、乱数絡みの問題が定期的に湧くんだw
0199デフォルトの名無しさん2009/03/12(木) 21:21:01
偏りっていうのはrandをつかうからってことなの?
どれぐらい偏るもんなの?
0200デフォルトの名無しさん2009/03/12(木) 21:24:01
いやいや、randのせいじゃなく、
単純に処理としての話。

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

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

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

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

簡単だろ?
0207デフォルトの名無しさん2009/03/13(金) 00:30:49
規則性はあるけど、乱数発生器をiで割っているのがいいよね
0208デフォルトの名無しさん2009/03/13(金) 00:31:24
要するに松田優作ってことだ
0209デフォルトの名無しさん2009/03/13(金) 01:06:18
>>201
>>156
0210デフォルトの名無しさん2009/03/13(金) 07:17:51
>>206
なるほど
0211デフォルトの名無しさん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] その他の制限: なし

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


0224デフォルトの名無しさん2009/03/14(土) 20:01:14
>>221
dequeue()の戻り値もvaioだぞw
0225デフォルトの名無しさん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]);
}
0226デフォルトの名無しさん2009/03/14(土) 20:19:18
>>225ありがとうございます。
0227デフォルトの名無しさん2009/03/14(土) 20:28:39
osによってプログラムの違いってあるんですか?
0228デフォルトの名無しさん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]);

なんか気持ち悪いな
0229デフォルトの名無しさん2009/03/14(土) 20:57:42
>>228
意図が読めないなんてピュアな方ですねw
0230デフォルトの名無しさん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]);
 }
}
0231デフォルトの名無しさん2009/03/14(土) 21:12:19
>>230�dクス
02322302009/03/14(土) 21:13:38
やべバグあるわ。今直す
0233デフォルトの名無しさん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] その他の制限: ありません

よろしくお願いします
02342302009/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));
  }
}
0235デフォルトの名無しさん2009/03/14(土) 21:24:11
>>234さんたびたび�dクスです。
0236デフォルトの名無しさん2009/03/14(土) 21:27:49
>>233
void PrintTreeRev(BinNode *p){
if (p != NULL) {
PrintTree(p->right);
PrintData(p->data);
PrintTree(p->left);
}
}
を追加してメニューから呼ぶようにしろ
02372362009/03/14(土) 21:28:40
おーう、中のPrintTreeもPrintTreeRevだ
逝ってくる
0238デフォルトの名無しさん2009/03/14(土) 21:33:53
>>227
微妙に質問が質問として成立してないんじゃね?
OS自体がプログラムだから、プログラムとして違いがあるし、
OSの機能を使うプログラムの場合も、OSが違うからプログラムとして違いがある。

>>234
いい感じ
でも、"%98s"じゃなく、"%98[^\n]"じゃないとダメぽ
02392342009/03/14(土) 21:44:06
>>238
すまん。なぜダメなのか教えてくれないか。
何が入力されたときにまずい?
0240デフォルトの名無しさん2009/03/14(土) 21:48:53
>>239
すんません。
勘違いしてました。
scanf一回で、式を全部持ってくるのかと思ってました。。。
02412342009/03/14(土) 21:51:32
>>240おk。
0242デフォルトの名無しさん2009/03/14(土) 22:12:01
>>237
出来ました!ありがとうございます!
0243デフォルトの名無しさん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] その他の制限:なし

お願いします
0244デフォルトの名無しさん2009/03/15(日) 00:23:05
>>243
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8977.txt
0245デフォルトの名無しさん2009/03/15(日) 00:37:13
あるある
0246デフォルトの名無しさん2009/03/15(日) 01:19:15
osの違いでC言語に違いが出てくることってあるんですか?
0247デフォルトの名無しさん2009/03/15(日) 01:19:53
>>244
ありがとうございます
0248デフォルトの名無しさん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] その他の制限: なし
よろしくお願いします。
0249デフォルトの名無しさん2009/03/15(日) 02:08:17
>>248

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

>>251
>>222見る限りOSも同じだが。
0253デフォルトの名無しさん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:}
0254>>2532009/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;
}
0255デフォルトの名無しさん2009/03/15(日) 03:41:45
>>254
すばやいご回答ありがとうございました。
私は問題の意味を勘違いしていたみたいでした。
自分一人だったら白紙で出すところでした。

本当にありがとうございました
0256デフォルトの名無しさん2009/03/15(日) 03:52:02
OSがunixって幅が広すぎるよな。
0257デフォルトの名無しさん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] その他の制限:なし
0258>>2532009/03/15(日) 04:18:12
>>254さま
すみません、
今読んでいて疑問に思ったのですが、
6行目の
nt=10000;
とはどういう意味なのでしょう?
簡単に解説をしてくださると助かります
0259デフォルトの名無しさん2009/03/15(日) 04:50:50
>>252 問題はいっしょだが条件が追加されてる。
0260デフォルトの名無しさん2009/03/15(日) 05:09:36
>>259
どんな条件?

逆ポーランド電卓の説明が追加されているだけにしか見えんが?
0261デフォルトの名無しさん2009/03/15(日) 09:48:42
>>260
ようわからんが実行結果がちがったんじゃねーの?たぶん同じやつが書き込んでるとおもわれる。
0262>>2532009/03/15(日) 09:58:05
ntは引かれる数。10000は一万。
0263デフォルトの名無しさん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);
}
0264デフォルトの名無しさん2009/03/15(日) 13:45:44
このスレ、己の描いた独自プログラムと簡単な問題文しか出さない人が多いけど
独自プログラムなんて出すよりも
詳しい問題文やどういったアルゴリズムにしようとしてるか描いてくるほうがありがたい
というのもプログラムなんざ千差万別だから、そんなもの提示されても
俺のプログラムと描き方の雰囲気が少しでも違ってたらいちいち面倒なことになる
0265デフォルトの名無しさん2009/03/15(日) 14:12:06
>>264
宿題スレに何を求めているの?
0266デフォルトの名無しさん2009/03/15(日) 15:55:22
この世に存在するソフトウェアのソースが公開されているものなんて
ほんのごく一部だぞ?他人の猿真似でどうにかなるもんでもなかろう
定石なんて、書店に行けばいくらでも見つかるぞ
0267デフォルトの名無しさん2009/03/15(日) 15:55:41
osの違いでC言語に違いが出てくることってあるんですか?
0268デフォルトの名無しさん2009/03/15(日) 15:56:24
>>267
環境依存に関わるライブラリではあり得る。
0269デフォルトの名無しさん2009/03/15(日) 16:16:48
>>267
Cの規格上、差異を認めている部分(処理系定義)では起こりうる。
もちろんOSの値が以外の原因で起こることもあるけど。

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

・・・動いているコードでさえ、何のツモリ(仕様)かなんて、推量はあてにならないしな。
0271デフォルトの名無しさん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());
}
02722712009/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());
}
0273デフォルトの名無しさん2009/03/15(日) 18:03:04
getchar()使うヤツって……
0274デフォルトの名無しさん2009/03/15(日) 18:03:50
いちいち言うくせに、指摘や適切なものを提示しないヤツって・・・口先だけのインポ野郎だなw
0275デフォルトの名無しさん2009/03/15(日) 18:07:58
>>272さんありがとうございます。
0276デフォルトの名無しさん2009/03/15(日) 18:09:15
こんなスレで偉そうにしているヤツって……
0277デフォルトの名無しさん2009/03/15(日) 18:09:51
>>273
普通につかうガナ
0278デフォルトの名無しさん2009/03/15(日) 18:18:36
>>270
初心者のコード見てこき下ろしたり、黒歴史を思い返したりするのもまた一興じゃないか。
0279デフォルトの名無しさん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] その他の制限:なし
0280デフォルトの名無しさん2009/03/15(日) 21:55:22
非再帰って自前でスタック使ったら、再帰アルゴリズムを
言語の再帰使わずに実装しているだけの様な。
0281デフォルトの名無しさん2009/03/15(日) 22:37:11
クソ課題だなあ
0282自分が解けもしないくせに口だけは大きい馬鹿2009/03/15(日) 22:40:26
281 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:37:11
クソ課題だなあ
0283デフォルトの名無しさん2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
0284デフォルトの名無しさん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;
}
}
0285自分が解けもしないくせに口だけは大きい馬鹿2009/03/15(日) 23:14:59
283 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
0286デフォルトの名無しさん2009/03/15(日) 23:15:35
オレが解けないのは課題が悪いからだ!
0287デフォルトの名無しさん2009/03/15(日) 23:18:06
>>281>>283
スレ違い。公開オナヌーは他所でどぞ。
0288デフォルトの名無しさん2009/03/15(日) 23:26:07
口先だけのヤツは、いつも自分がそれに対してどう思うか?
という主観しか述べず、問題があるなら問題点を指摘するなり
客観性のある見解を示さず、自分が言ったことを反対されると
ファビョるだけの井の中の蛙なんだなぁ
0289デフォルトの名無しさん2009/03/16(月) 00:15:42
>>284さんありがとうございますm(_;)m
0290デフォルトの名無しさん2009/03/16(月) 00:51:08
>>289
間違っる。
最初のleftとrightを記憶し、
左側を絞り込み、記憶しておいたleftとrightで右側を絞り込むように
2回に分けないといけないみたい。
0291デフォルトの名無しさん2009/03/16(月) 01:04:18
>>283
再帰を反復に変換するのは普通の課題だろ。
0292デフォルトの名無しさん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;
}

これはあってますか?
0293デフォルトの名無しさん2009/03/16(月) 01:19:08
>>292
間違ってます。
0294デフォルトの名無しさん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;
}
}
0295デフォルトの名無しさん2009/03/16(月) 02:16:47
それじゃ無理だろ
0296デフォルトの名無しさん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;
}
}
0297デフォルトの名無しさん2009/03/16(月) 04:16:12
>>294
>>295
>>296
重ね重ねありがとうございます
0298デフォルトの名無しさん2009/03/16(月) 04:28:20
>>296
無駄が多い
0299デフォルトの名無しさん2009/03/16(月) 04:55:23
>>298
模範解答をお願いします。
0300デフォルトの名無しさん2009/03/16(月) 05:27:00
クイックソート 非再帰でググればいくらでも転がってるだろ
0301デフォルトの名無しさん2009/03/16(月) 11:35:25
>>292
a,bに値が格納される前にcを計算しているので間違い。
0302デフォルトの名無しさん2009/03/16(月) 12:03:26
>>298
指摘するくらいなら、自分がそれに応じたコードを示せよ?
ここんとこ、口先だけの役立たずw
0303デフォルトの名無しさん2009/03/16(月) 16:54:19
>>301
ありがとうございます。
0304デフォルトの名無しさん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を使わないでお願いします。
0305デフォルトの名無しさん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] その他の制限:
0306デフォルトの名無しさん2009/03/16(月) 17:26:47
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):文字列から任意の文字を探索するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします。
0307デフォルトの名無しさん2009/03/16(月) 17:34:56
>>304
>>219,>>225
0308デフォルトの名無しさん2009/03/16(月) 17:41:24
>>307
その問題はqsortを使っているので…
0309デフォルトの名無しさん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;
}
0310デフォルトの名無しさん2009/03/16(月) 18:25:04
>>309さんありがとうございます。
0311デフォルトの名無しさん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;
}
0312デフォルトの名無しさん2009/03/16(月) 18:29:24
>>309
strchr() に準じてだろうけど
const char* で受けた一部を char* で戻すのって微妙に気持ち悪いよね
0313デフォルトの名無しさん2009/03/16(月) 18:34:35
>>311
�dクスです。
0314デフォルトの名無しさん2009/03/16(月) 18:38:22
>>308
>>279
0315デフォルトの名無しさん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] その他の制限: なし
よろしくおねがいします
0316デフォルトの名無しさん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] その他の制限: なし
おねがいします
0317デフォルトの名無しさん2009/03/16(月) 19:13:43
どんだけ宿題溜め込んでるんだよw
0318デフォルトの名無しさん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;}
0319デフォルトの名無しさん2009/03/16(月) 19:54:58
>>318
短いっすね。ありがとうございます。
0320デフォルトの名無しさん2009/03/16(月) 20:01:32
>>318
これで出したらやり直しくらいそうだがな
0321デフォルトの名無しさん2009/03/16(月) 20:16:21
>>318
教員もこんな簡単な問題に対して,こんな大人げない解答出されたら疑問に思うわなw
0322デフォルトの名無しさん2009/03/16(月) 20:54:37
>>318
お前のような漢になりたい
0323デフォルトの名無しさん2009/03/16(月) 21:17:48
>>320-322
むしゃくしゃしてやった。反省はしていない。

>>316
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt
0324デフォルトの名無しさん2009/03/16(月) 21:44:34
>>323
これは信用していいんですよね?
0325デフォルトの名無しさん2009/03/16(月) 21:47:51
>>311
だからqsortは使っちゃだめ!
0326デフォルトの名無しさん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;
}
0327デフォルトの名無しさん2009/03/16(月) 22:19:52
>>326
./a<ソース.cが意味不明なんですけど
0328デフォルトの名無しさん2009/03/16(月) 22:26:25
>>326
>>318の後にこれを貼る勇気に乾杯
とりあえずgetsはやめろ
0329デフォルトの名無しさん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] その他の制限: なし
よろしくおねがいします
0330デフォルトの名無しさん2009/03/16(月) 22:42:12
2021年か、結構先だな
0331デフォルトの名無しさん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;
}
0332デフォルトの名無しさん2009/03/17(火) 00:07:12
>>329
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8982.txt
0333デフォルトの名無しさん2009/03/17(火) 00:10:26
>>329
比較幅って言葉の意味がわかんね。
0334デフォルトの名無しさん2009/03/17(火) 00:17:02
>>332さんありがとうございます。
0335デフォルトの名無しさん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] その他の制限:
03363352009/03/17(火) 00:58:08
お願いします。この問題とかないと単位がやばいです。
0337デフォルトの名無しさん2009/03/17(火) 01:01:11
>>335
入力の形式が分からん。勝手に決めていいのか?
03383352009/03/17(火) 01:05:26
いいです。レスください!
0339デフォルトの名無しさん2009/03/17(火) 01:32:54
>>335
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8983.txt
0340デフォルトの名無しさん2009/03/17(火) 01:44:02
>>339
修正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8985.txt
03413352009/03/17(火) 06:18:57
>>340ありがとうございます。
03423352009/03/17(火) 07:09:00
すいません!ヘッダとしてが必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!
03433352009/03/17(火) 07:10:59
すいません訂正ですヘッダとして<stdlib.h>が必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!
03443352009/03/17(火) 07:16:32
>>340さんせっかくレスくれたのに申し訳ありません。
0345デフォルトの名無しさん2009/03/17(火) 07:39:30
>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
03463352009/03/17(火) 07:45:25
そこをなんとか!せっぱつまってるんです。
0347デフォルトの名無しさん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
0348デフォルトの名無しさん2009/03/17(火) 07:51:12
>>346
qsort()のプロトタイプ宣言を#include<stdlib.h>に置き換える
03493352009/03/17(火) 08:00:10
>>347さん>>348さんありがとうございます。
0350デフォルトの名無しさん2009/03/17(火) 12:41:52
論より証拠、言葉よりソースコード、日本語よりプログラム言語
分かったか?最近、口先だけの、新入りは?
0351デフォルトの名無しさん2009/03/17(火) 13:02:20
>>350
ソースでくれ
0352デフォルトの名無しさん2009/03/17(火) 13:27:20
>>351
ttp://www.bulldog.co.jp/products/home/
0353デフォルトの名無しさん2009/03/17(火) 13:28:06
いまどきそれかよw
0354デフォルトの名無しさん2009/03/17(火) 13:34:08
>>353
ttp://www.otafuku.co.jp/
0355デフォルトの名無しさん2009/03/17(火) 13:48:04
腹減るじゃんか。
0356デフォルトの名無しさん2009/03/17(火) 15:06:26
やっぱり今時はおたふくだよねー
0357デフォルトの名無しさん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] その他の制限: (なし)
0358デフォルトの名無しさん2009/03/17(火) 17:31:22
このプログラム./a.outしても%がでてしまうのですがどこを直せばいいですか?
http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8981.txt
0359デフォルトの名無しさん2009/03/17(火) 17:45:20
>>357張り付いてリロードリロード大変でしょ?
ネタ投下したらしばらく
本読むなりバイトするなり有意義に時間使いなよ
0360デフォルトの名無しさん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
0361デフォルトの名無しさん2009/03/17(火) 17:53:11
>>360
いやそれじゃだめなんすよ…
0362デフォルトの名無しさん2009/03/17(火) 18:06:35
ttp://tokyo-ct.net/usr/kosaka/for_students/jissen1/akiyojissen1/kougi17.html
BM法
0363デフォルトの名無しさん2009/03/17(火) 18:10:50
>>362 嫌そうじゃないだろう。
(実行例)
% ./a.out <8981.c
入力した文字列は:#include <stdio.h>
検索する文字列を入力してください:std
10 文字目で一致しました。(一致する文字列が見つかりませんでした。)
% でOK?
0364デフォルトの名無しさん2009/03/17(火) 18:15:51
>>357
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8986.c
0365デフォルトの名無しさん2009/03/17(火) 18:17:52
え?./a.out<8981.cって入力するんですか?
0366デフォルトの名無しさん2009/03/17(火) 18:19:49
>>364さん。ありがとうございます。
03673602009/03/17(火) 18:22:37
>>361 以下のように入力すると答えが出る。
% ./a.ou std <8981.c
10
%
0368デフォルトの名無しさん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));
}
0369デフォルトの名無しさん2009/03/17(火) 18:38:53
>>368さんありがとうございます。
0370デフォルトの名無しさん2009/03/17(火) 18:39:00
くせぇくせぇ、後だし麻呂の臭いがぷんぷんすんぜ
0371デフォルトの名無しさん2009/03/17(火) 18:40:48
こりゃ〜生粋のクソースだ、クソースを消毒だ〜
0372デフォルトの名無しさん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);
}
0373デフォルトの名無しさん2009/03/17(火) 21:19:37
ネタ切れー?
0374デフォルトの名無しさん2009/03/17(火) 21:35:51
mallocしたあとfreeしなくていいのか?
0375デフォルトの名無しさん2009/03/17(火) 21:37:47
課題だから書かないとダメってぐらいのレベルじゃね?
0376デフォルトの名無しさん2009/03/17(火) 21:39:26
いまどきのハードウェアでfreeしなくちゃならんヤツなんて皆無だろ
freeとか気取ってやってるソース見たらデスクトップ破りたくなる
0377デフォルトの名無しさん2009/03/17(火) 21:41:12
>>376
好きなだけ破ってろよマヌケ
0378デフォルトの名無しさん2009/03/17(火) 23:04:22
>>377
0379デフォルトの名無しさん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);
}
0380今年度最高峰のレス2009/03/18(水) 03:28:13
>>376 >>376 >>376 >>376 >>376 >>376 >>376 >>376

>>376 >>376 >>376 >>376 >>376 >>376 >>376 >>376
0381デフォルトの名無しさん2009/03/18(水) 12:35:35
ハードがどうとか言う前に、例えmainの最後だろうと、メモリの動的確保をしたら
それに対してfreeはセットで使うのが望ましいのだが
0382デフォルトの名無しさん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);
0383デフォルトの名無しさん2009/03/18(水) 12:58:14
たまに、プログラムが異常終了して、跡が残ることはある。
自分は大学で、ネットワーク関連の管理に携わったことがあるが、
ユーザがログオフしても、まだログインしたまま残ることもあった。
そう、コンピュータやプログラムには完璧なんて無いんだよ。
だから、こうやって今も、昔から色々と改善がされているんだろ?
その改善の経緯をもとに、こういったものも作られていくんだよ。
ただ単に、電子計算機に数値を与えて、処理をすれば良いわけじゃない、
システムを運営するのは。
0384デフォルトの名無しさん2009/03/18(水) 13:01:14
どこを縦読み?
0385デフォルトの名無しさん2009/03/18(水) 13:06:27
ネットゲームでクライアントを終了してもキャラがサーバーに残って
再ログインしようとしても入れませんでしたw
0386デフォルトの名無しさん2009/03/18(水) 13:19:57
大学でUNIXを使っていたが、まぁそれは管理者が今も普通に使っている
OSの基本。学生がワークステーションからログインして、終了するときに
ログオフの手続きをせずに、接続、作業で使っているプログラムを
Windowsのウィンドウの右上にあるクローズボックスで閉じてしまう人もいる。
それ以前に、コンピュータの電源スイッチを押して起動は出来るのだが
終了する際に、OSの終了手続きを取らずに電源を切ってしまった人もいた。
それにおけるトラブルも体験したさ。そういった、管理者側の立場になれば、
エンドユーザの身勝手さや、それを阻止する手立てや仕組みを作るのも、
プログラマーには必要なのさ、ワトソン君。
0387デフォルトの名無しさん2009/03/18(水) 13:51:52
また、OSも完璧ではない。プログラムを作った側の措置が不十分だったのか、
あるいはハードウェアに問題があったのか?それに応じてデバッグされることもある。
ただ、それも本当は、プログラマーの思い違いにより、作り直せば解決するものもあるが、
巨大なプロジェクトでいくら個別にモジュールを改良できるとしても、根幹、組み合わせ方に
問題があれば、やり直すしかない。ただ、この世には既にある定石、常套手段を用いてやれば
特に余計なことをしなければ、問題は起きないもんだよ。
しかし、人間の行動までは、正直、予期できない。今もなお、過去から続く争い。
裁判、解決のための判例作り。そして、判例に基づいて、今後は処理される人間同士の
トラブル。PCのトラブルなんて、電子計算機をちょちょいと弄れば済むことが多く、
楽なものですね、ポワロ殿。
0388デフォルトの名無しさん2009/03/18(水) 14:02:47
>>386,387___
  / || ̄ ̄||   ∧∧
  |  ||__||  (   )
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

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

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

   ___
  / || ̄ ̄||
  |  ||__||        ミ ゴトッ
  | ̄ ̄\三⊂/ ̄ ̄ ̄/ミ ,'⌒>
  |    | ( ./     /  l、_>
0389デフォルトの名無しさん2009/03/18(水) 14:17:40
それで、結局、例え初歩的だろうとプログラムを作る以上は、何かしら
そういったシステムに関わる部分の知識も必要になるわけだろ?
第一、APIを使っているだけでも、既に出来上がったその仕組みを知ることになるし。
麻ー呂っくの後に、振りーを忘れないで賜う。
03903722009/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));
0391デフォルトの名無しさん2009/03/18(水) 15:49:31
病気が進行してるw
0392デフォルトの名無しさん2009/03/18(水) 17:02:20
聞き方が悪いかもしれませんが

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

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

rankと聞くと行列の階数を思い出す。
なんか、肝心な所を省略してません?
0395デフォルトの名無しさん2009/03/18(水) 17:15:50
hairetsuのそれぞれの要素の大小関係をrankに0から入れていると?
並び替えの応用でやってみ。
0396デフォルトの名無しさん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の方をソートしても可
0397デフォルトの名無しさん2009/03/18(水) 17:42:36
>>325
0398デフォルトの名無しさん2009/03/18(水) 17:59:18
>>397
どした?
0399デフォルトの名無しさん2009/03/18(水) 19:15:15
>>398 やらないか?
0400デフォルトの名無しさん2009/03/18(水) 19:19:17
>>396 ん?んんんっ?
0401デフォルトの名無しさん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;
}
0402デフォルトの名無しさん2009/03/18(水) 21:18:19
stdio.h
同じ値でもrankの中の値が違う
04033922009/03/18(水) 23:24:12
適当な聞き方をしてしまってすみません。

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

ありがとうございました。
0404デフォルトの名無しさん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] その他の制限: (なし)
よろしくおねがいします。

0405デフォルトの名無しさん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] その他の制限: ライブラリ関数はサンプル以外使用しない。
0406デフォルトの名無しさん2009/03/18(水) 23:51:43
>>405
サンプルはこれです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8989.txt
0407デフォルトの名無しさん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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
04084072009/03/19(木) 00:04:18
すいません環境等書き忘れていましたosはUNIX、コンパイラはgcc期限無期限その他制限なしでお願いします。
0409デフォルトの名無しさん2009/03/19(木) 00:56:43
>>399何を?
0410デフォルトの名無しさん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;
}
0411デフォルトの名無しさん2009/03/19(木) 04:17:31
>>410
人のコードに無駄なもの付け足すなw

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

で十分だろうが
0412デフォルトの名無しさん2009/03/19(木) 07:01:36
ありがとうございます。それで、2回もソートする必要ないですね。
やってみます。
04134072009/03/19(木) 07:59:06
すみません言語c言語で期限は今日のお昼までにお願いします!
0414デフォルトの名無しさん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;
}
0415デフォルトの名無しさん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
04164072009/03/19(木) 16:23:45
>>415さんありがとうございます
0417デフォルトの名無しさん2009/03/20(金) 01:16:32
>>405
こうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8991.txt

サンプルにファイルを読む関数がないんだが、「読み込みなさい」とか「調べなさい」は手作業?
探索や削除が間違っとる気がして変えたが、間違ってなかったらマクロを両方とも100に戻しといてくれ。
04184172009/03/20(金) 01:48:36
ごめん。寝付けん暇つぶしでやっとったら、期限見落としとったorz
0419デフォルトの名無しさん2009/03/20(金) 17:59:26
ネタ投下キボン
0420デフォルトの名無しさん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回,さいころを投げることになります.
このことは,賭をしても儲からない,ことを意味していますね.
このことを確かめるプログラムを作成しなさい.
0421デフォルトの名無しさん2009/03/20(金) 21:02:31
入力した文字に対応するモールス信号を出力するプログラム、お願いします
0422デフォルトの名無しさん2009/03/20(金) 21:12:20
>>1
0423デフォルトの名無しさん2009/03/20(金) 21:14:19
>>421テンプレ嫁
0424デフォルトの名無しさん2009/03/20(金) 21:17:15
読んだけど課題じゃないし書くのめんどくさい

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

>問題出す方も大変だ。
本人も問題を出すつもりだったのだから,本望かw
0429デフォルトの名無しさん2009/03/21(土) 00:54:33
>また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
マジで?
0430デフォルトの名無しさん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関数以外に自作の関数を利用する

どなたかよろしくお願いします。
0431デフォルトの名無しさん2009/03/21(土) 02:39:02
>>430
最高に間抜けだな
0432デフォルトの名無しさん2009/03/21(土) 02:41:04
前スレにあった気がする
0433デフォルトの名無しさん2009/03/21(土) 02:42:14
スレと時刻的に8992だろ?
0434デフォルトの名無しさん2009/03/21(土) 02:57:50
>>430
8992で合ってんなら
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8993.txt
0435デフォルトの名無しさん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;
}
0436デフォルトの名無しさん2009/03/21(土) 12:08:02
>>434
すみません、8992です
ありがとうございました
0437デフォルトの名無しさん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

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

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

改めてお願いします。
0439デフォルトの名無しさん2009/03/22(日) 02:56:56
>>437
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8994.c
0440デフォルトの名無しさん2009/03/22(日) 02:58:58
あ、printfに\n入れるの忘れてた
0441デフォルトの名無しさん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;
}
0442デフォルトの名無しさん2009/03/22(日) 03:06:27
速いなorz
0443デフォルトの名無しさん2009/03/22(日) 03:11:59
i++を二箇所に書くくらいならi=1からはじめればいいのに。
0444デフォルトの名無しさん2009/03/22(日) 03:23:14
begin > endで抜けることを考えてi++2つとしたが、非常に頭悪いことをしてる気がする。
0445デフォルトの名無しさん2009/03/22(日) 03:53:53
こんなプログラムメンテしたくない。というか、プログラミングのセンスないね、チミ。
0446デフォルトの名無しさん2009/03/22(日) 03:54:54
>>445
先生のセンスをこのスレの奴らに見せ付けてやってください!
0447デフォルトの名無しさん2009/03/22(日) 09:22:37
>>445
うん、ないよ。でも、趣味でしかないし、1人でのんびりやれればいいから
下手の横好きでもいいかなー。
0448デフォルトの名無しさん2009/03/22(日) 10:03:53
>>445
メンテじゃなくて、先輩社員が作ったプログラムを触る仕事しかさせてもらえないんだろ?
0449デフォルトの名無しさん2009/03/22(日) 12:32:16
>>441
ぱっと見、無限ループの可能性有だな〜
問題10ではOKだけど、脱出条件組み込んだ方が吉
if(begin == end) break;見たいな
0450デフォルトの名無しさん2009/03/22(日) 12:35:24
>>449
へーそーなのかーwww
0451デフォルトの名無しさん2009/03/22(日) 12:44:41
scanfで値読んでるからマイナス入れれば終了するか・・・
>>450サンクス

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

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

サンプルでは読み込む関数はないので自分で作成せよと本日問題追加されました。
0460デフォルトの名無しさん2009/03/22(日) 13:30:33
>>455
begin/endはプログラムの終了と関係ないからだろ。
見つからなかった場合でも、終了するのはプログラムじゃなくて「探索」だぞ。
>探索の範囲がつきてしまった時に探索
>を終了します。
0461デフォルトの名無しさん2009/03/22(日) 13:32:02
>>453
> While抜ける条件が、nのScanf or 値が同じ時のみ。
値を見つけた時に抜けているのはforだぞ
0462デフォルトの名無しさん2009/03/22(日) 13:32:47
そもそも0を読み込んだら終了なのも理解できてないようだ
0463デフォルトの名無しさん2009/03/22(日) 13:33:38
WhileとかScanfとか書いてるからただのアホだろw
0464デフォルトの名無しさん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;
}
0465デフォルトの名無しさん2009/03/22(日) 16:01:02
n==0のとき0返してどうすんだよw
04664652009/03/22(日) 16:12:54
0はfalse、while(!false);で次のデータ。
0467デフォルトの名無しさん2009/03/22(日) 16:42:40
問題は0で終了なのに、また関数呼び出してscanf()失敗してからループ抜けるってのがどうなのかって話
04684662009/03/22(日) 16:48:42
464が俺だ。どうすんだよd どうもしない。
04694642009/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)
}
0470デフォルトの名無しさん2009/03/22(日) 18:56:59
気持ち悪いマクロだw
0471デフォルトの名無しさん2009/03/22(日) 19:09:48
#define returnVal free(data); return
{returnVal 2;}
のほうがよかったかd
0472デフォルトの名無しさん2009/03/22(日) 22:11:35
いやそこじゃないだろw
0473デフォルトの名無しさん2009/03/23(月) 02:02:49
BinarySearch() で
nの入力
malloc
free
をやろうとする頭がキモイ
0474デフォルトの名無しさん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;
}
0475デフォルトの名無しさん2009/03/23(月) 09:46:38
いつまでも引っ張るようなもんでもない
0476デフォルトの名無しさん2009/03/23(月) 21:39:26
char*型を引数にとる関数に
std::string型に格納されてる文字列を渡したいんですが、
c_str()の返す型がconst char *であるためうまく渡せません。
(char *)でキャスト変換するとコンパイルは通るのですが安全とはいえないです。
これを安全に渡すための方法があれば教えてください。
strcpyでコピーする方法はwarningが出てしまいます。
環境はVS2005です。
0477デフォルトの名無しさん2009/03/23(月) 21:41:26
>>476
(char *)でキャストで良いと思います。
0478デフォルトの名無しさん2009/03/23(月) 21:43:38
キャストを用いることはプログラマーが結果に関して責任を持つということ。
プログラマーが安全だと判断すればそれで良い。
0479デフォルトの名無しさん2009/03/23(月) 21:50:04
const_cast使えば?

だがスレ違いだ
0480デフォルトの名無しさん2009/03/23(月) 21:51:15
C++なら(char *)じゃなくconst_cast<char *>だろーと議論に資しないことを申し奉りさぶらわんと欲す
0481デフォルトの名無しさん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] その他の制限:ユーザ定義関数を利用する

よろしくお願い致します。
0482デフォルトの名無しさん2009/03/23(月) 22:11:37
コラッツの問題だw
きっと誰かが剰余演算子を使わず,さらにはアクロバティックに書いてくれると期待w
0483デフォルトの名無しさん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;
}
0484デフォルトの名無しさん2009/03/23(月) 22:17:47
>>477-480
本当にありがとう。参考になりました。
0485デフォルトの名無しさん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);
}
0486デフォルトの名無しさん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;
}
0487デフォルトの名無しさん2009/03/24(火) 00:00:33
>>483
ありがとうございました
助かりました
0488デフォルトの名無しさん2009/03/24(火) 09:42:53
>>476>>484
おいキャストするな。
c_strを元にコピーすることを薦める次第だ。
0489デフォルトの名無しさん2009/03/25(水) 20:07:37
ほ
0490デフォルトの名無しさん2009/03/27(金) 04:12:17
初歩的な問題だと思いますが、勉強し始めでわかりません。どうかよろしくお願いします
。
下記のソースを記述しコンパイルと実行を確認しなさい
/** データ型 */
#include<stdio.h>

void printDataType1();

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

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

としておき

受ける側は

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

としないといけない
実際に実験してみればわかる
05004952009/03/27(金) 16:26:59
みなさんありがとうございます。
やってみます。
0501デフォルトの名無しさん2009/03/27(金) 17:40:12
>>499
どういう実験か書いてみそ
0502デフォルトの名無しさん2009/03/27(金) 17:56:08
実験してないし流れも読めないが、
>>499の主張は間違っている気がする。
だって、FILE* fpなんでしょ?
> FILE構造体にはデータも書き込むので
FILEへのポインタの値を変えたりするつもりは無いはず。
0503デフォルトの名無しさん2009/03/27(金) 18:00:09
C++のifstreamとかofstreamのようなオブジェクトなら
リファレンス渡しまたはアドレス渡しをしなければいけないのは
わかるが、CのFILE*ってポインタなんだからそのまま渡していいと思う
0504デフォルトの名無しさん2009/03/27(金) 18:14:38
>>499 への容赦ない怒涛のツッコミにワロタww
本人ではないが、func1() や func2() の中で fopen する場合と
勘違いしたんじゃないか、とフォローしてみる。
0505デフォルトの名無しさん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
0506デフォルトの名無しさん2009/03/27(金) 23:31:46
>>504
>>498にfopenも書いてあるからその勘違いは無いんじゃね?
0507デフォルトの名無しさん2009/03/27(金) 23:57:18
499> それあかんよ
あかんって何が?
0508デフォルトの名無しさん2009/03/28(土) 02:35:51
992 名前:デフォルトの名無しさん 投稿日:2009/03/26(木) 23:10:42
世界的には日本語を使う人よりも英語を使う人の方が多い

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

FILE* fp, fl; は同じように見えるが2つの変数は型が違う。
FILE *fp, *fl; と書く。Javaではない。
0511デフォルトの名無しさん2009/03/28(土) 12:33:19
だれか>>501を翻訳してくれ
0512デフォルトの名無しさん2009/03/28(土) 13:38:41
どういう実験か書いてみてください
0513デフォルトの名無しさん2009/03/28(土) 14:01:25
ところでこのゴミ、
どこに捨てたらいい?
   ∧_∧
  (´∀`)
  /⌒  丶
 / /   \_M
( /|  |\__E)
 \/  | / \
  (  イ / ウワァァン丶
  | /|ハ( `Д)ノ|
  | / / 丶(>>510) ノ
  ( 丿丿   ̄ ̄ ̄
  |||
  |||
  / ト、\
 /_ノ  ̄
0514デフォルトの名無しさん2009/03/28(土) 17:50:42
>>513
http://pc12.2ch.net/test/read.cgi/tech/1179394713/
http://pc12.2ch.net/test/read.cgi/tech/1179424842/
0515デフォルトの名無しさん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

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

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


0520デフォルトの名無しさん2009/03/29(日) 16:36:39
すいません。追加なんですけど、2007年度の本選の問9、12をよろしくお願いします。
問題通りの出力、入力でお願いします。
後、先程の問題の回答も引き続きお願いします。
もし、何か質問で至らない点があったらこちらですぐに回答します。
0521デフォルトの名無しさん2009/03/29(日) 17:19:24
問題文どおりか、ありがと、蛇の問題は考えておく。ところで、問題のタイトルは
問題9 円に内接する多角形の面積
問題12 ブラックジャック・ゲーム
0522デフォルトの名無しさん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;
}
0523デフォルトの名無しさん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;
}
0524デフォルトの名無しさん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;
}
05255212009/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');
}
0526デフォルトの名無しさん2009/03/29(日) 19:43:02
あみだくじを自動的に生成するプログラムをお願いします。

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

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

じゃないかな?
0539IP address2009/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;
}
0540デフォルトの名無しさん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;
}
0541デフォルトの名無しさん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;
}
0542デフォルトの名無しさん2009/03/29(日) 22:43:14
int main(void)
{ return 0; }
0543デフォルトの名無しさん2009/03/29(日) 23:01:52
回答ありがとうございました。
0544IP address2009/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) {
0545デフォルトの名無しさん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;
}
0546デフォルトの名無しさん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]その他の制限:ユーザ定義関数を利用する

どなたかよろしくお願いします。
0547デフォルトの名無しさん2009/03/30(月) 21:47:58
http://www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlにある2008年本選の
問1の三目並べの答えお願いします。
c言語 コンパイル gcc 
0548デフォルトの名無しさん2009/03/30(月) 21:49:07
http://www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlにある2008年本選の
問1の三目並べの答えお願いします。
c言語 コンパイル gcc 
0549デフォルトの名無しさん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);
  }
}
0550デフォルトの名無しさん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;
    }
  }
}
0551デフォルトの名無しさん2009/03/30(月) 22:53:30
http://www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlに記載されている
2007年の本選の問12 ブラックジャックの問題よろしくお願いします。
あと、問題を解く上でどのようなアルゴリズム、データを利用したか。と何の
処理を関数としたのかを付け加えてお手数だと思いますがよろしくお願いします。
OS xp
C言語
コンパイル gcc
0552デフォルトの名無しさん2009/03/30(月) 23:58:22
春休みに宿題があるわけが無いとはいえ、
大学生ならともかく、高校生の問題を解くのは飽きた・・・
0553デフォルトの名無しさん2009/03/31(火) 00:58:19
>>552
マトリョーシカの問題が結構難しいよ
0554デフォルトの名無しさん2009/03/31(火) 01:38:05
>>551
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9006.c
説明ぐらい自分で見て考えろ。
0555デフォルトの名無しさん2009/03/31(火) 10:09:51
どなたか>>546をお願いできませんか?
0556デフォルトの名無しさん2009/03/31(火) 10:20:48
>>546 だ
0557デフォルトの名無しさん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;
}
0558デフォルトの名無しさん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;
}
0559デフォルトの名無しさん2009/03/31(火) 15:29:51
>>558
>受付番号の小さい方を出力することとします。
忘れてた
0560デフォルトの名無しさん2009/03/31(火) 15:39:46
>>559

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

そのくらいの修正は自分でやればいいとおもうんだな
0561デフォルトの名無しさん2009/03/31(火) 16:03:22
>>560
いや、問題文に書かれている文言で、
>>558は仕様を満たしてないってこと。
0562デフォルトの名無しさん2009/03/31(火) 16:06:28
>>561
ああ、失敬失敬
早計だった
0563デフォルトの名無しさん2009/03/31(火) 17:58:12
>>553
h優先とr優先の二系統で組み入れられる人形の多い方をとればいいよ。
0564デフォルトの名無しさん2009/03/31(火) 18:31:37
いちおー>>549は>>546の回答なんやけどな。アンカ付け忘れたけど。
見て分からんのは、本人、問題読んでないんちゃうやろか?
読んでたらBMIって関数ある時点で判断できるやろ。すぐ下やし。
0565デフォルトの名無しさん2009/03/31(火) 19:53:11
>>564
C/C++系のスレで一番バカでやる気の無い質問者の溜まり場だからな
0566デフォルトの名無しさん2009/04/01(水) 04:35:17
ここで描かれたプログラム甲子園の回答は不合格とします
0567デフォルトの名無しさん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で読み込めるようにしていこうと思っています。
0568デフォルトの名無しさん2009/04/01(水) 13:41:05
宿題じゃないなら続きはこっちでやってくれ

C言語でトランプゲームを作りたい
http://pc12.2ch.net/test/read.cgi/tech/1189892773/
0569デフォルトの名無しさん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'は平均値

お願いします。
05705692009/04/01(水) 15:10:44
細く
↑のC言語のプログラムを教えてください。
05715692009/04/01(水) 15:12:05
○補足
×細く
0572デフォルトの名無しさん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;
}
0573デフォルトの名無しさん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
0574デフォルトの名無しさん2009/04/03(金) 04:22:43
>>573
それ以前に、そのプログラムは何をするプログラム?
0575デフォルトの名無しさん2009/04/03(金) 04:49:45
>>574
A君、Bさん、C君でバドミントンをします。
A君 VS Bさんの勝負をC君が記録しましたが、記録していたのはサーブの順番だけでした。
1セット3ゲーム11点先取で行い、デュースを適用しました。
C君が残した記録から得点を出力するプログラムを作成してください。
1ゲーム目は必ずA君から始まり、以降は最終ゲームの勝者からです。
また、1ゲーム中のサーブ回数は必ず100回以内です。

こういうものです。
0576デフォルトの名無しさん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;
}
05775692009/04/03(金) 15:05:12
>>572
ありがとうございましたm(_ _)m
0578デフォルトの名無しさん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日
0579デフォルトの名無しさん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"; // これがエラーになるかどうか
0580デフォルトの名無しさん2009/04/04(土) 14:40:46
なそなぞではなく、C++ 優位
int main(void)
{
   char data;
   char pointer = &data;

   pointer = &data;
}
0581デフォルトの名無しさん2009/04/04(土) 14:47:29
>>578
関数プロトタイプのない関数の呼び出し
void* からの暗黙のポインタ変換
0582デフォルトの名無しさん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] その他の制限:
初回の宿題から難しく全く理解出来ないのでよろしくお願いします
サンプルコードを使って書くのか、単純にこれは参考に使うものなのかすらわかっていませんがよろしくおねがいします
05835782009/04/04(土) 16:21:13
>>579, 580, 581
ありがとうございました
0584デフォルトの名無しさん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日
0585デフォルトの名無しさん2009/04/04(土) 16:43:58
>>584
ttp://www.geocities.jp/ky_webid/cpp/library/025.html
0586デフォルトの名無しさん2009/04/04(土) 20:17:52
>>582
使えってかいてあるからとりあえず使うだけのコード
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9014.cpp
0587デフォルトの名無しさん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;
}
0588デフォルトの名無しさん2009/04/05(日) 00:55:26
>>586
助かりました!有り難うございました。
05895842009/04/05(日) 01:55:15
>>587
ありがとうございました!これから解読します
0590デフォルトの名無しさん2009/04/05(日) 03:21:24
解読する価値ねーだろ
0591デフォルトの名無しさん2009/04/05(日) 03:23:05
価値というか、問題文そのまま書き下しただけだな
0592デフォルトの名無しさん2009/04/05(日) 03:29:26
お前引っこんでろ
0593デフォルトの名無しさん2009/04/05(日) 03:33:04
>>589
あんまいじると可哀想だろ 
そのへんでやめとけ
0594デフォルトの名無しさん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);
}
}

0595デフォルトの名無しさん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;
}
0596デフォルトの名無しさん2009/04/05(日) 13:02:59
1,2,3,4に入る解答を教えて
0597デフォルトの名無しさん2009/04/05(日) 13:13:16
>>595-596 3回もしなくても、1回で投稿できるだろう。
#include <string.h>
!fig
passCheck(buff)
!fig
0598デフォルトの名無しさん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
0599デフォルトの名無しさん2009/04/05(日) 13:26:16
>>598
>>1
>・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
#include <string.h>
cnt<=3 && flg==FALSE
passCheck(buff)
flg == 0
0600デフォルトの名無しさん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>>)

よろしるおねがいします
0601デフォルトの名無しさん2009/04/05(日) 15:22:37
>>600
ぐぐれ
06026002009/04/05(日) 15:38:41
>>601
ぐぐると似た者はたくさんあるのですが制限事項を満たした者がありませんでした。
ttp://www.daniweb.com/forums/thread49939.html
とかは6行目くらいから正三角形が崩れて来るし、最終的に微妙な三角形になるし、
というわけでよろしるおねがいします
0603デフォルトの名無しさん2009/04/05(日) 16:53:55
あなたは、10とか1000の桁数偶数の場合は、5桁の中央にどう配置するのか?
0604デフォルトの名無しさん2009/04/05(日) 17:36:04
_1_0_
10_00
0605デフォルトの名無しさん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" ;
}
06066002009/04/06(月) 00:52:27
↑こんな感じで表示出来ると助かるのですが
どなたかコンテナを使ったプログラムでお願い出来ないでしょうか
0607デフォルトの名無しさん2009/04/06(月) 01:06:27
これって正三角形じゃなくて二等辺三角形だよな
0608デフォルトの名無しさん2009/04/06(月) 01:16:04
教員の端末がプロポーショナルフォントだったら・・・
06096002009/04/06(月) 01:28:10
「正」じゃなくて二等辺でもたぶん大丈夫です
0610デフォルトの名無しさん2009/04/06(月) 01:42:20
printf("%*d",WID,NUM);
WID 文字数の指定
NUM 値
0611デフォルトの名無しさん2009/04/06(月) 01:43:05
C++でも書式の指定ができるものがあったような・・・
0612デフォルトの名無しさん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;
}
0613デフォルトの名無しさん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");
}
}
0614デフォルトの名無しさん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,
06156002009/04/06(月) 02:27:33
毎行左端からスタートではない左辺と右辺の二等辺である三角形に出来ませんか?
(イメージ的に605みたいな)
0616デフォルトの名無しさん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));
}
0617デフォルトの名無しさん2009/04/06(月) 02:35:52
__5__
_5_5_
_555_
55_55
55555

一応、骨格と部品は用意したんで
適当に加工してちょ
もっと綺麗に書けたらなぁw
0618デフォルトの名無しさん2009/04/06(月) 03:51:43
>>600
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9015.cpp
06196002009/04/06(月) 04:00:09
>>618
完璧です。。ほんとに感謝です!
ありがとうございました!
0620デフォルトの名無しさん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);
}
0621デフォルトの名無しさん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');
}
}

もう解答は上がってるけど、別解として
0622デフォルトの名無しさん2009/04/06(月) 09:30:13
くせぇくせぇ、後出し麻呂の臭いがぷんぷんすんぜ
こりゃ〜クソースだぁ〜クソースは消毒だぁ〜
0623デフォルトの名無しさん2009/04/06(月) 09:38:04
g++ だと、void main はコンパイルエラーになる。
#define __max(a,b) a>b?a:b
どれだけ花がいいんだ。
0624デフォルトの名無しさん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バージョンでお願いします
0625デフォルトの名無しさん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>());

こんな感じにすればいいんじゃね?よく分からんが
0626デフォルトの名無しさん2009/04/06(月) 14:49:20
>>618 #define N 17 だと、なぜかダメ。
0627デフォルトの名無しさん2009/04/06(月) 15:25:28
>>626
最大表示桁数が5桁を超えるからじゃないの?
0628デフォルトの名無しさん2009/04/06(月) 15:28:48
>>578
new delete 等の C++ キーワードを変数名に
06296242009/04/06(月) 16:10:26
>>625
おぉ!すごいできました。
ありがとうございました。(^人^)感謝♪
06305692009/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
0631デフォルトの名無しさん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++;
}

改良案
0632デフォルトの名無しさん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] その他の制限: 特に無し
0633デフォルトの名無しさん2009/04/08(水) 21:26:26
問題文正確か?
06346322009/04/08(水) 21:40:51
>>633
一応正確ですよ
よろしくお願い致します。
0635デフォルトの名無しさん2009/04/08(水) 22:50:27
まだ4月初めなのにもう課題がでてるの?
どういう学校だろうか。

うちなんかこれから講義資料作りますよ。
自分が出した問題がここに出てくるかwktkしながら見ることにします。
06366322009/04/08(水) 23:12:35
>>635
専門学校ですのでカリキュラムがギュウギュウなんですよ
出来るようならお願い致します
0637デフォルトの名無しさん2009/04/08(水) 23:15:23
いったい何のために専門学校に入ったの?
0638デフォルトの名無しさん2009/04/08(水) 23:17:29
>>636
カリキュラムがギュウギュウって本当か?
卒業時にバブルソートがなんとかできるとかじゃないよな?
0639 ◆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]);
  }
}
06406322009/04/08(水) 23:21:05
>>637
プログラムの勉強をするためです
>>638
卒業時には立派なプログラマー予備軍?になってるだろうと先生から言われています
06416322009/04/08(水) 23:27:17
>>639
このままだとエラーが結構出ますがこれを参考にしろってことですね
ありがとうございます。やってみます
0642デフォルトの名無しさん2009/04/09(木) 00:42:36
プログラムの勉強をするために専門学校に入って、ここで宿題解いてもらうのか。

とりあえずうちの会社には来ないでね。
06435692009/04/09(木) 06:40:55
>>631
ありがとうございましたm(_ _)m
0644デフォルトの名無しさん2009/04/09(木) 06:54:06
>>642
とか言うお前の会社はそいつが卒業する頃には倒産しているから、安心しろw
0645デフォルトの名無しさん2009/04/09(木) 06:56:19
そこまで偉そうに自分の会社のことを言うなら、名前を自分の役職を名乗れよ
どうせしょぼい中小企業だろ。見向きもされていないくせに、まともな給与で
人材を雇えないくせに、こんなスレで下を見下すような発言をしに来るなんて・・・
儲かってねーんだろ?w とっとと潰れろ
0646デフォルトの名無しさん2009/04/09(木) 07:00:00
性帝トーマスか、まだ潰れてないのかよ、お前の会社は?
少なくともお前みたいなのは大企業と提携できないから、安心しろw
06476452009/04/09(木) 07:20:21
とはいえ俺も632とは一緒に働きたくないなw
0648デフォルトの名無しさん2009/04/09(木) 07:29:59
ねぇねぇ、自分の会社に来て欲しくないのに、どうして会社名を言わないの?
間違ってそいつがあんたの会社に就職活動に来た場合、知らずに雇ってたら
どうするの?そいつがお前の会社に履歴書を出す前に食い止めるためにも、
こんなスレで質問するような学生に、将来自分の会社に来て欲しくない奴は
会社名と自分の名前、役職を名乗れよ?こっちはそんなバカ企業とは提携しないように
ブラックリストに入れておいてやるからw
0649デフォルトの名無しさん2009/04/09(木) 13:57:19
必死だな
0650デフォルトの名無しさん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] その他の制限:長桁計算を必ず用いること.実数型の変数を使用しないこと.

難しすぎて全くわかりません….
みなさん,おねがいします!
0651デフォルトの名無しさん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);
}
0652デフォルトの名無しさん2009/04/10(金) 00:48:35
>>651のやり方だと多倍長の乗除算ルーチンを作らなくていいからラクチン
なんだけど、nやmが50桁になった場合、弥勒菩薩がやってくるまでに計算が
終わらない可能性がある。
0653デフォルトの名無しさん2009/04/10(金) 00:56:15
>>651
永遠に計算が終わらないぞ
06546512009/04/10(金) 01:05:46
えへへ。>>650がだまされないかなと思って。
フィボナッチを漸化式通りの再帰で定義するみたいなダメ再帰の例ですね。

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

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

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

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

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

nCrなんてn-kかけてkで割るのを繰り返すだけだけど、
forのカウンタも長桁数でやるってのは新しいかもしれない
0665デフォルトの名無しさん2009/04/10(金) 08:39:15
>>650だとC++使っちゃいけないみたいだから
演算子オーバーロードできなくて涙目じゃね?
0666デフォルトの名無しさん2009/04/10(金) 08:52:25
出力が最悪(50桁)桁になる時点で無理ぽ
0667デフォルトの名無しさん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);
}
0668デフォルトの名無しさん2009/04/10(金) 10:45:11
>>667
ほほう、そのscanfでどうやって50桁読み込むんだい?
0669デフォルトの名無しさん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;
}
0670デフォルトの名無しさん2009/04/10(金) 11:05:23
>>663
効率の悪い計算方法 5000!/ (2000! * 3000! )でしても
15msしかかからん。 50程度だとclock()では測定不可能。1ms以下。
0671デフォルトの名無しさん2009/04/10(金) 11:06:59
>>663
間違えてた。 50程度とおもってた。 50桁だった。
0672デフォルトの名無しさん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;
}
0673デフォルトの名無しさん2009/04/10(金) 11:15:28
>>650
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9021.txt
0674デフォルトの名無しさん2009/04/10(金) 11:17:45
>>673
tiny_mpって何?
0675デフォルトの名無しさん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; }
0676デフォルトの名無しさん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; }
0677デフォルトの名無しさん2009/04/10(金) 11:39:06
よく考えると、再帰では実現無理だな。 32bit数程度の再帰回数もc++はこなせないからね。
0678デフォルトの名無しさん2009/04/10(金) 11:42:19
>>672 を多倍長にすればいいんじゃないかな。
0679デフォルトの名無しさん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; }
0680デフォルトの名無しさん2009/04/10(金) 12:00:44
>>673
間違えたので修正。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9022.txt

>>674
http://mitv2.net/software/tiny_mp/tiny_mp.html
0681デフォルトの名無しさん2009/04/10(金) 12:05:41
スターリングの公式の大まかな値を求めることでよしとしよう
0682デフォルトの名無しさん2009/04/10(金) 12:22:16
もうBCDでやれ
0683デフォルトの名無しさん2009/04/10(金) 12:32:09
>>680
「50桁程度の2つの自然数」だから
#define KETAを修正しないといけないかもね。
0684デフォルトの名無しさん2009/04/10(金) 12:36:03
nが50桁の場合、nCrは最大何桁ぐらいになるのだろうか?
0685デフォルトの名無しさん2009/04/10(金) 12:41:26
スターリングの公式の厳密化したものを使えば値はよくなる。

http://www.lassp.cornell.edu/sethna/Cracks/Stirling.html
http://hirokuro-web.hp.infoseek.co.jp/kousiki2.html
0686デフォルトの名無しさん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)!)
を使えば求まる。
0687デフォルトの名無しさん2009/04/10(金) 13:09:26
50桁の厳密解はどう考えても無理だろ?
そしたら、m = 10^k 、 n = m/2 が最短で解けるアルゴリズムを考えることは意味あると思う。
無理でも何桁まで挑戦できるか考えるって事。
たとえばk=3ならば、 comb(1000,500)ってこと。
0688デフォルトの名無しさん2009/04/10(金) 13:16:45
comb(1000,500)は、1000*・・・*500/500!だが
500-250までの数は2倍すると上の数と一致するから簡単に割り算できる。
250-1までの数についても、割り算の結果がすぐに判るようなアルゴリズムがあれば
実質的には500回の掛け算をするだけですむんだが。
0689デフォルトの名無しさん2009/04/10(金) 14:05:59
(実数型を使わずに)文字型を使って組合せを求めるコードを書こうと思ったんだが
「長桁計算を必ず用いる」ってのは、もう書かれてるようなGMPとかで内部的に整数型を使わなきゃまずいのか?
0690デフォルトの名無しさん2009/04/10(金) 14:11:22
unsigned short int型の演算だと、32bit以内に収まるから2バイトの配列に演算を定義すればいいと思う。
06916672009/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));
}
0692デフォルトの名無しさん2009/04/10(金) 14:38:30
>>691
int型に99桁10進を読み込めるってどんな環境だよ
0693デフォルトの名無しさん2009/04/10(金) 18:29:33
>>650 は付いてきてるのか?
0694デフォルトの名無しさん2009/04/10(金) 18:32:48
C/C++言語の課題じゃないな
0695デフォルトの名無しさん2009/04/10(金) 22:27:28
>>679
> しかし、何の処理もしない空のループであっても、10進50桁程度ではどれくらいかかるんだろうか。 
1loop/clockとして、最初は3GHzでムーアの法則を考慮すると、たぶん180〜190年。
0696デフォルトの名無しさん2009/04/11(土) 07:56:27
さて、答えは出たかな?パスカルの三角形を使おうが、求める数が多すぎるのも厄介。
三角形を見てわかる様に、例えばnCrに於いて rがn/2以上ならn-rの組み合わせと
同じ故に求める数も半分で済むとは言え、50桁もある数ともなればご丁寧に
その半分を求めたとしても大変なことだ。まぁ、そんなことせずとも
rの値でどの範囲を求めれば良いか分かっているようなので、あとは個人の知識、
腕次第だ。健闘を祈る。
0697デフォルトの名無しさん2009/04/11(土) 08:14:36
nが10万くらいならメモリに計算結果を蓄えられるだろうから、
パスカルの三角形で計算して上を参照すれば速い気はする。
しかし、どんだけ速くしても、50桁の空ループより時間は掛かるだろうから
695の値が正しいとして180年はかかる
0698デフォルトの名無しさん2009/04/11(土) 08:17:45
あとは、n!の級数展開(スターリングの公式)が判れば
それをもちいてほぼ正確な値は短時間でもとまる。
もし、下位2桁以外まで正確にもとめられたとすれば
あと2桁は別の方法で計算することも出来そうだ。
0699デフォルトの名無しさん2009/04/11(土) 08:27:13
ここになにかかいてある

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


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

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

とりあえず,皆さんの今までの回答を参考にして,プログラムを作ってみたいと思います.
ありがとうございました.
0703デフォルトの名無しさん2009/04/11(土) 11:30:10
ガンマ関数の近似式の精度は、小数点以下8桁まで正確らしいので
これを使えば50桁でもいけるはずだ。
0704E−mail:sage2009/04/11(土) 11:50:28
nCr:r=2とりあえず浮動小数点であれ検算が出来る。
多倍長演算 C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8868.txt
0705デフォルトの名無しさん2009/04/11(土) 11:56:15
だりぃ、っつかもうこうなるならファイル使うわ。
0706デフォルトの名無しさん2009/04/12(日) 03:54:55
nCmの計算まだ?
0707デフォルトの名無しさん2009/04/12(日) 04:22:19
nCm < 2^32 の範囲内であるなら求められるコードは既にあるお ( ^ω^)
50桁とか、もう常識の範囲内を超えたものは、それなりの環境が必要だお^^
例えば、地球上を移動する程度の航空機で済むのと、宇宙へ飛び出すロケットなどと
比較したら、明らかにメンテナンスや飛行距離、上空での環境への適用などに対して
差があるのはお分かりいただけるでしょう。
0708デフォルトの名無しさん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 個のエラーが発生しました ***
0709E−mail:sage2009/04/12(日) 10:43:51
Part122_306 だろ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9023.zip
0710E−mail:sage2009/04/12(日) 11:40:08
>>708 ボーランドからVSに、コンパイラを取り換える。VSEE
0711デフォルトの名無しさん2009/04/12(日) 13:14:41
>>710
そういう問題じゃないだろう。明らかに文法が間違ってる
0712デフォルトの名無しさん2009/04/12(日) 13:57:46
演算子オーバーロードにconst修飾子が付いてないからだな
0713デフォルトの名無しさん2009/04/12(日) 17:44:53
で結局>>704をgccでもコンパイルできるようにするには
どうすればいいのよ?
0714デフォルトの名無しさん2009/04/12(日) 18:19:45
>>650
GMPでやってみたよ日曜プログラミング
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9024.c
0715デフォルトの名無しさん2009/04/12(日) 20:29:49
VCでGMPは難しかったような気がするなぁ
VCでどのライブラリを使わせて多倍長計算させたかったんだろうなぁ
ライブラリとか授業で説明されたんだろうけど>650は代返ですませてしまったんだろうなぁ
0716デフォルトの名無しさん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文とか使っていいのか、再帰で全部ひっくるめられるのかはよくわかりません!よろしくお願いします!!
0717デフォルトの名無しさん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;
}
0718デフォルトの名無しさん2009/04/12(日) 20:52:35
>>717ありがとうございます!
明日学校でやってみます!!
0719デフォルトの名無しさん2009/04/12(日) 20:55:00
>>716
問題がよろしくないな
再帰にすると無駄なループが多いし、関数は2つも必要ない

そして>>717早すぎw
0720デフォルトの名無しさん2009/04/12(日) 21:00:14
>>719
去年履修したときはなかった問題・・・・
むずかしいです、先生・・ orz
0721デフォルトの名無しさん2009/04/12(日) 21:14:57
>>717
だがちょっと待ってほしい
計算途中の頭数もintで表現するべきではないだろうか
0722デフォルトの名無しさん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
0723デフォルトの名無しさん2009/04/12(日) 21:34:34
再帰という手法をつかう問題を作りたかったんだろ
しかも、プログラムを習ったばっかりの人間でも答えられる範囲の

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

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

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

外部ファイルを使っても構いませんから
0732デフォルトの名無しさん2009/04/12(日) 23:50:31
あと再帰の問題として適してるのは
_findnextみたいな関数を使って
ディレクトリを見つけたら再帰呼び出しするとか
0733デフォルトの名無しさん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
0734デフォルトの名無しさん2009/04/13(月) 00:29:37
>>733
ありがと
これならちゃんと動くね
0735デフォルトの名無しさん2009/04/13(月) 05:40:48
nCm 50桁 で答えが返ってくるプログラムまだ?
0736デフォルトの名無しさん2009/04/13(月) 05:43:03
>>732
それは適してないだろ。再帰は不安定で鈍いから、
ファイルを扱う重要な部分に使うべきではないな。
0737デフォルトの名無しさん2009/04/13(月) 08:00:00
>>736
「不安定で鈍い」ってどういう意味?
0738デフォルトの名無しさん2009/04/13(月) 08:14:20
スタックオバーフロー、 関数呼び出し、復帰に掛かるコスト
0739デフォルトの名無しさん2009/04/13(月) 08:17:32
スタックオーバーフロー - Wikipedia

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

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

http://it_yougo.shooti.jp/s/507865/1
0741デフォルトの名無しさん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);
}
0742デフォルトの名無しさん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); }
}
}
0743672=6512009/04/13(月) 11:39:13
>>741
gmpって使ったことないんだけど、これで何桁くらいまでいけそう?
0744デフォルトの名無しさん2009/04/13(月) 11:39:15
sprintf()もしくはstrcat()
0745デフォルトの名無しさん2009/04/13(月) 11:48:41
スターリングの公式の所に載っている式で計算すると
100C30の場合、実値とのズレ比 (式の値/実値)
1.0000000000230814274901だった。
上位の桁は一致するけど、下位の桁の一致までは無理。
0746デフォルトの名無しさん2009/04/13(月) 11:53:18
数値計算ソフトでスターリングの公式の近似式でも、5桁が限度だな。
50桁だと階乗の値は、ものすごい桁になる。
0747デフォルトの名無しさん2009/04/13(月) 11:55:30
>>743
windowsならGMPのbinaryをうpするが
0748デフォルトの名無しさん2009/04/13(月) 11:57:55
スターリングの公式で階乗計算するよりも、直接、コンビーネーションの近似式が
わかれば計算量は減らせるが
0749デフォルトの名無しさん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;
}
0750デフォルトの名無しさん2009/04/13(月) 12:07:17
あ、ごめん
×sprintf(temp[i].num, "%d", i % 10);
○sprintf(temp[i].num, "%d", (i % 10) + 1);
0751デフォルトの名無しさん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]
0752デフォルトの名無しさん2009/04/13(月) 12:32:35
>>731
適当に調べたらack(4,2)で10進数2万桁だそうだ。
コンビネーションよりパネェwwww
ここ見たから間違ってたらスマン
ttp://d.hatena.ne.jp/inamori/20070509/p1
0753デフォルトの名無しさん2009/04/13(月) 12:36:51
>>752
サンクス。あーこりゃx64でも無理そうですな
多倍長計算を使って放置しておけばいつかは答えが出るかもしんないけど

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


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

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

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

n/1 ・ (n-1)/2・・・
0761デフォルトの名無しさん2009/04/13(月) 15:57:40
>>756
知ってたけど。っつか >>754 で日本”語”を忘れてたw
0762デフォルトの名無しさん2009/04/13(月) 16:05:06
有り難う御座います。nPrとr!では積の項数が同じでした。
0763デフォルトの名無しさん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] その他の制限:あまり複雑すぎても困ります・・・
0764デフォルトの名無しさん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&
0765デフォルトの名無しさん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;
}
0766デフォルトの名無しさん2009/04/14(火) 01:09:38
>>765
  |  |  |  |
--+--+--+--+--
  |  |  |  |
--+--+--+--+--
  |  |  |  |
--+--+--+--+--
  |  |  |  |
--+--+--+--+--
  |  |  |  |
0767デフォルトの名無しさん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;
}
0768デフォルトの名無しさん2009/04/14(火) 01:57:36
>>767
                *
               * *
              *   *
             *******
            *       *
           * *     * *
          *   *   *   *
         ***************
        *               *
       * *             * *
      *   *           *   *
     *******         *******
    *       *       *       *
   * *     * *     * *     * *
  *   *   *   *   *   *   *   *
 *******************************
0769デフォルトの名無しさん2009/04/14(火) 06:46:01
>>768 (・∀・)
0770デフォルトの名無しさん2009/04/14(火) 10:50:22
mCnの答えが戻るプログラム
0771デフォルトの名無しさん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の範囲。
0772デフォルトの名無しさん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)までの間の値。
0773デフォルトの名無しさん2009/04/14(火) 11:54:59
値の範囲を積分で評価するときに、f(1)のときの値は除いたほうが都合が良いな。
0774taguti2009/04/14(火) 14:39:53
6個のreal型変数x1、y1、x2、y2、x3、y3を定義しそれぞれに実数つを読み込んで、xy平面上の3点
(x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。
・公式:底辺x高さ÷2を使って計算してください。
お願いします!!

0775デフォルトの名無しさん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」)

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

処理効率とか以前に、どういう方針で考えたらいいかがわかりません。
どうか教えてください。
0776デフォルトの名無しさん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
の方が楽じゃないかなぁ…。
0777デフォルトの名無しさん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)。
0778デフォルトの名無しさん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;
  }
}
0779デフォルトの名無しさん2009/04/14(火) 15:50:57
>>774
マルチ乙
http://pc12.2ch.net/test/read.cgi/tech/1237091698/493
http://pc12.2ch.net/test/read.cgi/tech/1232055225/770
http://pc12.2ch.net/test/read.cgi/tech/1217575832/499
http://pc12.2ch.net/test/read.cgi/tech/1235927586/774
http://pc12.2ch.net/test/read.cgi/tech/1212498448/876
http://pc12.2ch.net/test/read.cgi/tech/1212409946/66
http://pc12.2ch.net/test/read.cgi/tech/1217575832/499
http://pc12.2ch.net/test/read.cgi/tech/1192201659/808
http://pc12.2ch.net/test/read.cgi/tech/1205156417/821
http://pc12.2ch.net/test/read.cgi/tech/1238032584/16
http://pc12.2ch.net/test/read.cgi/tech/1224719784/934
0780デフォルトの名無しさん2009/04/14(火) 15:56:55
>774
ほんと乙だわ。
そしてそれを全部見つけてきた779も乙
0781taguti2009/04/14(火) 16:23:54
自己解決しました。
0782デフォルトの名無しさん2009/04/14(火) 20:24:43
778さん、ありがとうございます。
C言語ですがC++もあまり変わらない解読でいいんですよね?

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

解読を試みているのですがさっぱりです。。
0783デフォルトの名無しさん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
0784デフォルトの名無しさん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
0785デフォルトの名無しさん2009/04/14(火) 20:38:32
>>784
なるほど!そういうことか!
0786デフォルトの名無しさん2009/04/14(火) 20:41:56
>>785 ついでに、>>778 のコメントを頼む。
07877852009/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;
}
0788デフォルトの名無しさん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] 期限:明日
0789デフォルトの名無しさん2009/04/14(火) 22:57:57
>>781
嘘つけボケが。
そのレベルを一人で解けないなんておわってんな。
0790デフォルトの名無しさん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;
}
0791デフォルトの名無しさん2009/04/15(水) 07:51:26
>pow(10, -15)
毎回計算させんのかよw
0792デフォルトの名無しさん2009/04/15(水) 08:29:02
これたのむ

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

http://irensei.com/html/game.html
0793デフォルトの名無しさん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に年月がセットされるところがないように
思えますが、どういうロジックなのかご教示いただけませんか?

やはりコメントがないと、見てもわかりません。
申し訳ありませんがお願いします。
0794デフォルトの名無しさん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点制限事項がありますのでご覧ください
0795デフォルトの名無しさん2009/04/15(水) 16:16:55
>>794
どこまでこだわればいいのかねぇ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9031.txt
0796デフォルトの名無しさん2009/04/15(水) 16:39:48
>>794
find_last_ofの使い道が分からん
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9032.txt
07977942009/04/15(水) 16:40:21
>>795
出力は問題ないのですが制限事項(1)でクラスを使うように指定されていますので
クラスでやってもらえるとたすかります
07987942009/04/15(水) 16:59:58
>>796
ありがとうございます クラスなのとfind_first_of/find_last_ofでかいてもらってるので完璧です
出力も全く問題ないです find_last_ofの使い方がわからんとゆうのは使い方があまりよくないということでしょうか
外出しますが帰ったらもっかい見てみますがこれで問題ないです ありがとうございました
0799デフォルトの名無しさん2009/04/15(水) 18:53:25
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):5つの数字の中から3つを選び全て出す
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:わかりません
[3.3] 言語:C
[4] 期限:今週いっぱい
お願いします
0800デフォルトの名無しさん2009/04/15(水) 19:30:11
あまりにもESP訓練が酷すぎる
マインドシーカーかよ
0801デフォルトの名無しさん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;
}
0802デフォルトの名無しさん2009/04/15(水) 21:05:20
組み合わせを列挙しろってこととじゃない?
0803デフォルトの名無しさん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;
}
0804デフォルトの名無しさん2009/04/15(水) 22:32:17
>>799
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9033.txt
0805デフォルトの名無しさん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;
}
0806sage2009/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になってしまいます
どうすればいいでしょうか
0807デフォルトの名無しさん2009/04/15(水) 23:30:44
スレ違いだ
0808デフォルトの名無しさん2009/04/15(水) 23:31:27
scanf("%d,&n");
0809デフォルトの名無しさん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;
}
08107992009/04/16(木) 00:09:01
ID代わりましたが、799です
>>802さんの言うとおり全ての組み合わせを表示せよというものです

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

後から問いが少し代わったので、参考に頑張りたいと思います
0811デフォルトの名無しさん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] その他の制限:問題文内にメモを書きました それでわよろしくおねがいします
0812デフォルトの名無しさん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にアップしておきました。
各画素の輝度値に所望誤差を加え,それを量子化ステップで割って,
可逆符号化をして,復号し,その後各画素の輝度値に量子化ステップを
かけてあげれば出来るのでないかと思い、先生に確認したところ
それでできるとのことだったのですが、書き方がよくわかりませんでした。
どなたかお願いいたします。
0813デフォルトの名無しさん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、多次元配列などの基礎のみしか学習していません。
08148112009/04/17(金) 00:33:56
すみません 問題4だけでもお願い出来ないでしょうか
既存のソースをテンプレート化する問題です
よろしくおねがいします
0815デフォルトの名無しさん2009/04/17(金) 01:10:44
Nの階乗を再帰を用いた方法で計算してその計算過程も表示するプログラムを教えてください

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

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

0825デフォルトの名無しさん2009/04/17(金) 06:45:44
ID違うけど>>815です
>>817さん
ありがとうございます
でも実際にコンパイル/実行してみると
7行目:サーバーエラー、intは間違ってます
と出てしまうんですけどどうすればいいんでしょうか?
ちなみに使っているソフトはCmachineです
勝手ですいませんが回答お願いします
0826デフォルトの名無しさん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
0827デフォルトの名無しさん2009/04/17(金) 11:19:20
こまけーことはいいんだよ!(例のAA)
と、言われそうだけど

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

なぜなら、0! = 1 だから。
0828デフォルトの名無しさん2009/04/17(金) 15:00:21
>>827
そうするつもりで間違えた。指摘ありがとう。
0829デフォルトの名無しさん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);
}
をさっきのみたいに
途中の計算結果も表示するにはどうすればいいんでしょうか?
0830デフォルトの名無しさん2009/04/17(金) 17:27:57
for (k=1;k<=n;k++) {
printf("%d*%d=%d\n", k, sum, sum*k);
sum=sum*k;
}
0831デフォルトの名無しさん2009/04/17(金) 17:45:03
>>815
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9038.c
0832デフォルトの名無しさん2009/04/17(金) 19:01:22
派生クラスのサイズが、基本クラスのサイズより小さくなる事はありますか?
例えば
class A
{
private: int a
}
class B:: private A
{
}
このように書いた時でも、classBのインスタンスは
Aで定義したaが初期化されてしまうというか
メモリを割り当てられてしまうんですか?
0833デフォルトの名無しさん2009/04/17(金) 20:58:45
>>830-831さん
ありがとうございます
>>830さん
でもそれを入れなおしてコンパイルすると10行目:予期せぬEOFってでます
for (k=1;k<=n;k++) { の{をとってコンパイルするとエラーは出ないんですが
N!の答えで出てきません
申し訳ないですが回答お願いします
0834デフォルトの名無しさん2009/04/17(金) 21:03:40
>>832
試してみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9039.txt
0835デフォルトの名無しさん2009/04/17(金) 21:06:33
for (k=1;k<=n;k++) {
  printf("%d*%d=%d\n", k, sum, sum*k);
  sum=sum*k;
}
0836デフォルトの名無しさん2009/04/17(金) 21:07:34
>>833
だから単文でも中括弧を省略するなとあれほど口を酸っぱk
0837デフォルトの名無しさん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です。
ってでました
どうすればいいんでしょうか?
08388352009/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);
0839デフォルトの名無しさん2009/04/17(金) 21:28:01
>>838さん
ようやくできました・・・。
ありがとうございました
お騒がせしてもしわけなかったです
0840デフォルトの名無しさん2009/04/17(金) 21:29:56
>>834
ありがとうございます。
コピペして走らせて見ました。
どうやっても増えちゃいますね。
0841デフォルトの名無しさん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] その他の制限:各課題に指定あり
0842デフォルトの名無しさん2009/04/17(金) 22:57:16
>>841
どうでも良いけど課題3簡単過ぎじゃない?
#include <stdio.h>
main()
{
puts("名前:山田 太郎");
puts("学籍番号:00A000");
puts("好きな科目:プログラミング演習");
}
0843デフォルトの名無しさん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;
}
0844デフォルトの名無しさん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をわざとやらせるとか
"が全角だとかはこういうレベルの人たちに気づかせようってのは
間違ってる気がする。
自分で間違うヤツはいっぱいいるけど
0845デフォルトの名無しさん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;
}
0846デフォルトの名無しさん2009/04/17(金) 23:12:10
しまった
mainがintだからreturnは必要か
0847デフォルトの名無しさん2009/04/17(金) 23:13:06
課題が酷すぎてそんな事どーでもよくなる
0848デフォルトの名無しさん2009/04/17(金) 23:13:59
教えてる側からしたらtypoで動かないんですけどって呼ばれるのはめんどくさいから
早めに体験させとくのは悪くないと思うけど。大学の講義としてはすごくベタな問題だよそれ
08498412009/04/17(金) 23:18:20
早速解いていただき有難うございます!
まだ習いたてで何度試しても上手くいきませんでしたorz
これから授業について行けるように頭に叩き込もうと思います。
0850デフォルトの名無しさん2009/04/18(土) 00:01:48
>>849
こんな問題出すような先生の言うことは聞いちゃダメだぞ
自分で勉強するんだ
0851デフォルトの名無しさん2009/04/18(土) 00:05:53
>>850
それじゃあ単位取れないだろw
無難にこなしつつも軽蔑しろ
といわなきゃ
0852デフォルトの名無しさん2009/04/18(土) 00:57:50
課題4を除けば4月の課題としては普通だが

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

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

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

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

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

知るかよそんなの
0855デフォルトの名無しさん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;
}
0856デフォルトの名無しさん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;
}
0857デフォルトの名無しさん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;
}
0858デフォルトの名無しさん2009/04/18(土) 03:12:11
>>856,857

安価の付け方ミスったぜ……。
>>856が演習1。全角空白を適当に変換してくれ。
0859デフォルトの名無しさん2009/04/18(土) 03:42:18
>>858
夜遅くにありがとうございました><
0860デフォルトの名無しさん2009/04/18(土) 06:08:54
演習2はstrcspnかstrchr使えばええんちゃうの?
0861デフォルトの名無しさん2009/04/18(土) 07:46:22
>>813 1、2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9042.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9043.c
08628552009/04/18(土) 08:14:29
>>813 演習3
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9044.txt
0863デフォルトの名無しさん2009/04/18(土) 12:20:32
すみません>>842がビルドエラーになるのですがとこが間違ってるのでしょうか?
0864デフォルトの名無しさん2009/04/18(土) 12:21:46
少なくとも出力されているエラーを貼りましょう
0865デフォルトの名無しさん2009/04/18(土) 12:23:37
mainの戻り値とかが怪しいな
それ以上はエスパーじゃないから分かんない
08668632009/04/18(土) 12:30:56
説明不足ですみません。
以下がエラーメッセージになります。

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

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

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

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

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

直線の式と四角形の座標を入力して直線が四角形を通過しているか
(角で交わるものも含む)どうかを判定するプログラムです。
よろしくお願いします
0880デフォルトの名無しさん2009/04/18(土) 19:01:42
>> 879
四角形の大きさなどは?
0881デフォルトの名無しさん2009/04/18(土) 19:07:28
>>880
特に決められていないので大きさに関係なく
判定できたらいいなと思います
0882デフォルトの名無しさん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;
}
0883デフォルトの名無しさん2009/04/18(土) 19:58:15
>>882
ありがとうございます
直線のa,b,cは傾きと切片とあと何を入力してるんでしょうか?
0884デフォルトの名無しさん2009/04/18(土) 19:59:51
ax + by + c = 0
0885デフォルトの名無しさん2009/04/18(土) 20:05:20
あと180°以上の角があるやつには対応してないから
0886デフォルトの名無しさん2009/04/18(土) 20:06:22
直線は無限なのか有限なのか
四角形は座標軸に対して傾いてないのかとか
多少気になるな
無限で傾いてないと仮定するのが一番楽そうだけど
0887デフォルトの名無しさん2009/04/18(土) 20:09:13
>>886
説明がたりなくて本当にすみません。
直線は無限で四角形は座標軸に対して傾いていません
0888デフォルトの名無しさん2009/04/18(土) 20:11:10
直線に対して四角形の角の四点がすべて同じ側にあるかどうかを調べる
ってのが方針でしょう
0889デフォルトの名無しさん2009/04/18(土) 20:16:18
>>875
ダウト。cdecl じゃなくて stdcall(pascal) だったら呼ばれた側で処理しないと。
0890デフォルトの名無しさん2009/04/18(土) 20:22:04
定義からすると四角形じゃなくて長方形(矩形 Rectangle)が正しいな
そして座標軸に対して傾いていない
0891デフォルトの名無しさん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;
}
0892デフォルトの名無しさん2009/04/18(土) 20:51:49
数学の問題としてもC言語の問題としても面白くない
0893デフォルトの名無しさん2009/04/18(土) 21:09:57
数学の問題としてもw
面白くないw
0894デフォルトの名無しさん2009/04/18(土) 21:22:43
二つの対角線のうち、どちらかが直線と交わればいい。
対角線と直線が交わるってことは、対角線の両端の座標をax+by+cに代入した結果が、
片方は正で片方が負になっていればいい。
0895デフォルトの名無しさん2009/04/19(日) 00:54:33
>>894
で、それって888の言ってることとどう違うの?
0896デフォルトの名無しさん2009/04/19(日) 00:57:45
>>870
後者をやってるヤツなんて見たことないが・・・
わざわざint つけてvoidつけてとかバカだろと
0897デフォルトの名無しさん2009/04/19(日) 01:12:34
釣れねーよw
0898デフォルトの名無しさん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] その他の制限:なし
0899デフォルトの名無しさん2009/04/19(日) 01:56:45
>>898
>>813,855
0900デフォルトの名無しさん2009/04/19(日) 01:58:36
重複すいませんでした。
0901デフォルトの名無しさん2009/04/19(日) 06:43:35
>>895
対応できる範囲が違う
今回は長方形なので同等だが
図のような四角形だと結果が変わる
ttp://2sen.dip.jp/cgi-bin/upgun/up1/source/up26197.png
0902デフォルトの名無しさん2009/04/19(日) 09:14:48
>>901
じゃあ895は888にむしろ劣ってるね
0903デフォルトの名無しさん2009/04/19(日) 11:03:44
お前が888か?w
具体性皆無でクソの役にもたたねーよw
0904デフォルトの名無しさん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;
}
0905デフォルトの名無しさん2009/04/19(日) 12:49:50
>>903
904みたいにコードで示してから具体性とか言え
904はダメダメだけどな
0906デフォルトの名無しさん2009/04/19(日) 16:24:19
どこがダメダメなのかコードで示してから言えw
0907デフォルトの名無しさん2009/04/19(日) 17:16:42
>>903
具体性も何も ax+by+c に代入して符号調べるだけじゃん
0908デフォルトの名無しさん2009/04/19(日) 18:08:02
その程度のことすら書いてないのが888
0909デフォルトの名無しさん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] その他の制限:なし。

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

質問者のレベルを考慮すれば分からなくても仕方ないけど
>>908 は質問者なの?
09119082009/04/19(日) 18:14:55
いいからさっさと答えんかいカスども
0912デフォルトの名無しさん2009/04/19(日) 18:15:07
異なるってことは、今まで生成したパスをファイルで保存すんの?
0913デフォルトの名無しさん2009/04/19(日) 18:17:42
>>910
そういうことはコード書いてから言ってねw
0914デフォルトの名無しさん2009/04/19(日) 18:21:50
>>910
質問者じゃないけど、>>888じゃ質問者の役にはたたないだろ。
実際にコード書くか、>>894程度の説明ぐらいはしないと。
0915デフォルトの名無しさん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;
}
0916デフォルトの名無しさん2009/04/19(日) 18:34:38
すばやく2回実行すると同じpassができるw
0917デフォルトの名無しさん2009/04/19(日) 18:38:59
同じパス出てもいいの?題意には書いてないけど
0918デフォルトの名無しさん2009/04/19(日) 18:39:20
>>915
ありがとうございます。
早いですね♪
0919デフォルトの名無しさん2009/04/19(日) 18:59:05
良いらしい。
0920デフォルトの名無しさん2009/04/19(日) 20:11:44
random(3), srandom(3) を使えって意味じゃなかったのか…
0921デフォルトの名無しさん2009/04/19(日) 21:26:29
>>920
mingw だとリンクエラーになるけど
linux だとまんまなのがあったのか
0922デフォルトの名無しさん2009/04/19(日) 21:34:41
>>921
Cygwin使えということだな。
0923デフォルトの名無しさん2009/04/19(日) 21:59:35
>>906
同じ点を2回計算するのがダメ
quad[3]とquad[0]が作る線分のことを考慮してないのがダメ

よってダメダメ
0924デフォルトの名無しさん2009/04/19(日) 22:07:30
>>923
>quad[3]とquad[0]が作る線分のことを考慮してないのがダメ
これは問題ないと思うじぇ
09259232009/04/19(日) 22:41:31
ああそうか、線分じゃなくて直線だから大丈夫なのか
スマン
0926デフォルトの名無しさん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の繰り返しを使う
0927デフォルトの名無しさん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;
}
0928デフォルトの名無しさん2009/04/19(日) 23:35:22
例外処理も何もしないとか論外すぎんだろksg
0929デフォルトの名無しさん2009/04/19(日) 23:45:40
因にその和はn*(n+1)*(n+2)/3
0930デフォルトの名無しさん2009/04/19(日) 23:47:19
>>927
for(i=1;i<=5,i++)など、なるべく簡単に最初に習う範囲でお願いします。
0931デフォルトの名無しさん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;
}
0932デフォルトの名無しさん2009/04/19(日) 23:54:32
わざわざreturn 0つけるくらいならmain()だけで良いだろ。
0933デフォルトの名無しさん2009/04/20(月) 00:00:46
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
0934デフォルトの名無しさん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」で組んでいます。
0935デフォルトの名無しさん2009/04/20(月) 00:12:35
>>931
解決しました。
ありがとうございました。
927、929さんもありがとうございました。
0936デフォルトの名無しさん2009/04/20(月) 00:13:07
if (hon_t.isbn[3] != '-' || hon_t.isbn[5] != '-' || hon_t.isbn[11] != '-' || hon_t.isbn[15] != '-') {
// error
}
0937デフォルトの名無しさん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の繰り返しを使う
  初心者用でなるべく簡単なものでお願いします。
0938デフォルトの名無しさん2009/04/20(月) 00:36:03
カキコ後10分経過
鋭意清書中約3名
コンパイル中約6名
コーディング中約18名
0939デフォルトの名無しさん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;
}
0940デフォルトの名無しさん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;
}
0941デフォルトの名無しさん2009/04/20(月) 00:42:00
>>936
解決致しました。
ありがとうございました。
0942デフォルトの名無しさん2009/04/20(月) 01:04:58
>>940
解決しました
ありがとうございました。

0943デフォルトの名無しさん2009/04/20(月) 08:17:51
>>932
それint省かれてるだけだから結局return 0いるじゃん。
0944デフォルトの名無しさん2009/04/20(月) 08:41:25
きっと戻り値の型を省略すると void になると思ってたんだろ
0945デフォルトの名無しさん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;
}

続く。
0946デフォルトの名無しさん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」を返す。


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

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

>>962
享楽的に生きろ

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

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

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

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

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

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