C/C++の宿題を片付けます 97代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/10/09(火) 22:40:13【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 96代目
http://pc11.2ch.net/test/read.cgi/tech/1190331997/
0153デフォルトの名無しさん
2007/10/12(金) 21:05:46ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5056.txt
0154デフォルトの名無しさん
2007/10/12(金) 21:56:11やたら回りくどくなってしまったお・・・。いい訳だけどCは使いにくすぎ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5058.c
ヒントが素晴らしかったお。
0155デフォルトの名無しさん
2007/10/12(金) 21:57:130156デフォルトの名無しさん
2007/10/12(金) 22:03:0123: 不正な初期化(関数 calc )って出てコンパイルできません・・・・
0157デフォルトの名無しさん
2007/10/12(金) 22:20:13その23行とやらをコピペしてみてくれ。
0158デフォルトの名無しさん
2007/10/12(金) 22:25:39node n = {tail, '\0', 0};
です
あと構造体を使わないでかけますか?
0159デフォルトの名無しさん
2007/10/12(金) 22:28:360160デフォルトの名無しさん
2007/10/12(金) 22:29:320161デフォルトの名無しさん
2007/10/12(金) 22:33:21違う違う
変数を使って初期化できるのはC99ってだけ
0162161
2007/10/12(金) 22:36:460163≠154
2007/10/12(金) 22:38:09gccでは警告だけでコンパイルできる。
それが通らないとは一体どんなコンパイラだ?
一応こう書き換えれば通ると思うが。
--
node n;
n.tail = tail;
n.c = '\0';
n.value = 0;
--
しかし、問題は他にもあって、環境によっては
--
fprintf(stderr, "\nFIND:");
--
をprintf()にしないと表示がぐずぐずになる。
また、割り切れない除算を強行するので例えば、1 2 / 3 + 4 *が得られている。
と言うことで、誰かが書き直すのを待った方がいいかも知らん。
0164デフォルトの名無しさん
2007/10/12(金) 22:38:22n.tail = tail;
みたいに分ければいけるかも
0166≠154
2007/10/12(金) 22:44:430168デフォルトの名無しさん
2007/10/12(金) 22:52:560169153
2007/10/12(金) 23:02:31>>153で上げたのはコインの枚数を変えるとおかしくなったので修正した。
ろだのコメントがおかしいけど気にしないで。
0170デフォルトの名無しさん
2007/10/12(金) 23:09:000171デフォルトの名無しさん
2007/10/12(金) 23:15:07ポインタ使うなってのは配列をスタックにしてやれってことなんだろうけど。
0172デフォルトの名無しさん
2007/10/12(金) 23:24:120173デフォルトの名無しさん
2007/10/13(土) 00:05:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5060.c
0174デフォルトの名無しさん
2007/10/13(土) 00:12:39どうもありがとうございます。
。でも数字を自分で入力するんじゃなく、9個の数字から4つ選ぶ9C4=126通りの組合せそれぞれに対して
12になるのが一つだせればいいんです。もし一つもなければNGを出すんですが・・・
0175デフォルトの名無しさん
2007/10/13(土) 00:37:27割り算それでいいの?
0176デフォルトの名無しさん
2007/10/13(土) 00:51:43ポインタ使わずに頑張ったところ悪いが、
1 3 / 9 * 4 *
↑こんなんが出ない
0177デフォルトの名無しさん
2007/10/13(土) 00:51:45まずい?浮動小数点数になおすべきなんかな
>>174
longjmp使っていいならやるお
0178デフォルトの名無しさん
2007/10/13(土) 01:02:310179デフォルトの名無しさん
2007/10/13(土) 01:15:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5061.c
0180デフォルトの名無しさん
2007/10/13(土) 01:35:37本当にわかってんの?
0181デフォルトの名無しさん
2007/10/13(土) 01:41:53tmpもdoubleにするか、キャストしないと、
端数切り捨てられますよ、っと
しかしポインタ使うなと言われて関数ポインタ使うとはw
0182デフォルトの名無しさん
2007/10/13(土) 01:48:320183デフォルトの名無しさん
2007/10/13(土) 01:51:11http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5062.c
0184デフォルトの名無しさん
2007/10/13(土) 02:42:24ポインタなしでどうやってんのかと見てみたら、関数の仮引数を int a[] みたいな書式でやってるのな、痛々しいw
0185デフォルトの名無しさん
2007/10/13(土) 03:57:110186デフォルトの名無しさん
2007/10/13(土) 05:55:11ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5064.c
0187デフォルトの名無しさん
2007/10/13(土) 06:02:55if(!is_12) printf("%d %d %d %d ---> NG\n", num[0], num[1], num[2], num[3]);
0188デフォルトの名無しさん
2007/10/13(土) 06:17:04もう気づいてるかもだが、 >>183 では 1789 ---> 98*71-/ になってるとこが
NG になるお。 9*8/(7-1) の括弧に対応してないのかな
0189デフォルトの名無しさん
2007/10/13(土) 06:25:460190デフォルトの名無しさん
2007/10/13(土) 07:58:190192デフォルトの名無しさん
2007/10/13(土) 08:35:31配列わずにポインタ使えって言うから例題みたら*(array+i)とかよくあること。
0193149
2007/10/13(土) 09:39:26>>186
おお!すごい。ありがとうございます。186と183の結果違いますね。
アルゴリズム的にはどういう感じですか?
186も改造して 1789にも対応しようと思うんですが
0194デフォルトの名無しさん
2007/10/13(土) 10:39:44[2] 問題文(含コード&リンク):
mem1に入っているプログラムで
data2に入っているsimulation_dataを読み込んで、モデル化するプログラムを作っているのですが、
うまく読み込めてないようなんです。実行されるとdata6_arspecの中のresult4bに結果が入力されます。
/*simulation_dataを読み込む文です間違いありかもしれません*/
FILE *fp1;
fp1=fopen("..\\data2\\simulation_data","r");
for(j=0;j<n;j++){
fscanf(fp1,"%15.5f \n",&raw_16ch[0][j]);
}
for ( j=0; j<n; j++ ) {
printf("%15.5f \n",raw_16ch[0][j]);
}
fp1=fopen("sim1_","w");
fprintf(fp1,"sim1_ \n");
for(j=0;j<n;j++){
fprintf(fp1,"%15.5f \n",raw_16ch[0][j]);
}
fclose(fp1);
この文が間違っているんだと思います。実行時に入力するのは、
�@..\data2\simulation_data �A2500 �B..\data6_arspec\ �Cresult4b\ �D1 �E64 �F25 �G1.0 �H1
の順です。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 10月15日10時まで
[5] その他の制限:よろしくお願いしますm(_ _)m
UP先はこちらです。
http://www.dotup.org/uploda/www.dotup.org6676.zip.html
0195デフォルトの名無しさん
2007/10/13(土) 10:56:450196デフォルトの名無しさん
2007/10/13(土) 11:07:50どっかで色々指摘したと思うのだが、完全無視か?
0197デフォルトの名無しさん
2007/10/13(土) 11:29:150199デフォルトの名無しさん
2007/10/13(土) 12:24:580200デフォルトの名無しさん
2007/10/13(土) 12:54:15[1] 授業単元:暇つぶしにもならないか?
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5065.txt
[3] 環境
[3.1] OS: 自由
[3.2] コンパイラ名とバージョン: 自由
[3.3] 言語: C
[4] 期限:2007年10月20日0時00分
[5] その他の制限:他の課題を優先
0201デフォルトの名無しさん
2007/10/13(土) 13:13:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5066.c
0202デフォルトの名無しさん
2007/10/13(土) 13:22:39show_deckやり直し
0203デフォルトの名無しさん
2007/10/13(土) 13:35:47( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5067.txt
0204デフォルトの名無しさん
2007/10/13(土) 13:55:21今さら指摘すると、それ分数使えない
0205デフォルトの名無しさん
2007/10/13(土) 14:08:26混ぜ具合の要求レベルによるんだろうってことはわかるんですけど。
0206デフォルトの名無しさん
2007/10/13(土) 14:09:320207デフォルトの名無しさん
2007/10/13(土) 14:18:53シャッフルとして使っちゃダメなレベル
0208デフォルトの名無しさん
2007/10/13(土) 14:20:54高卒の俺に教えてください。
0210デフォルトの名無しさん
2007/10/13(土) 14:24:03ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5068.txt
0211デフォルトの名無しさん
2007/10/13(土) 14:34:11あ、seed(time(0)); はめんどくさくて端折りました。
0212デフォルトの名無しさん
2007/10/13(土) 14:35:190213デフォルトの名無しさん
2007/10/13(土) 14:38:4053枚のカードから一発でババを引き当てることが出来る状態のことを
完全シャッフル状態といいます。
0214デフォルトの名無しさん
2007/10/13(土) 14:40:15どちらかといえば>>203のほうがいいと思うんだ、うん。
0215デフォルトの名無しさん
2007/10/13(土) 14:43:20210じゃなくて203?
0216デフォルトの名無しさん
2007/10/13(土) 14:46:45うげ、安価ミスw>210です
0217デフォルトの名無しさん
2007/10/13(土) 14:47:05農学部卒の俺の答え
今回の例だったら 52x52 のカウンタの配列作って、数万回試行、カウンタとって
標準偏差とってほかの方法と比べる、みたいなんじゃないか?証明はムリ
0218デフォルトの名無しさん
2007/10/13(土) 14:58:18for(i=0;i<N;i++){
r=(int)(rand() / (RAND_MAX + 1.0) * (i+1));
temp=array[i]; array[i]=array[r]; array[r]=temp;
}
みたいするといい感じに混ざるらしい。
詳しくは510からの議論を参照されたし
0219デフォルトの名無しさん
2007/10/13(土) 14:59:331から25までに入ってる奴は自分より小さい番号のところに絶対入らない糞仕様だぞ
0220デフォルトの名無しさん
2007/10/13(土) 15:00:28均一に混ぜるなら>>218の方法だけど、
リアルに似せるなら多少不均一でもいいかもね。よくないか。
0221デフォルトの名無しさん
2007/10/13(土) 15:25:330222デフォルトの名無しさん
2007/10/13(土) 18:41:50いまさら指摘すると、分数を使う必要はない
1/3*6 = 2 ができなくても 6*1/3 のように並び替えで同じ解が得られるから
0223デフォルトの名無しさん
2007/10/13(土) 18:58:14メモリ内を覗かれても、カードが配られる時まで
次に配られるカードが何であるか分からない
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void){
int card[52], i, idx, temp;
srand(time(NULL);
for(i=0;i<52;i++) card[i]=i;
for(i=0;i<52;i++){
idx=rand()%(52-i);
temp=card[i];
card[i]=card[i+idx];
card[i+idx]=temp;
}
for(i=0;i<52;i++) printf("%d\n", card[i]);
return 0;
}
※上記の表現は誇張しています。頑張れば次のカードを調べることは可能です
0224デフォルトの名無しさん
2007/10/13(土) 19:13:15void mywindow_init2()
{
int i;
HDC hdc = GetDC(mywin[0]);
for(i=0;i<MDC_MAX;i++){
mdc[i]=CreateCompatibleDC(hdc);
}
bmp[0]=CreateCompatibleBitmap(hdc,WINX,WINY);
bmp[1]=LoadImage(myinst,"bitmap1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
bmp[2]=CreateBitmap(WINX,WINY,1,1,NULL);
bmp[3]=LoadImage(myinst,"title.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
bmp[4]=LoadImage(myinst,"gameover.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
bmp[5]=LoadImage(myinst,"ending.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
SelectObject(mdc[0],bmp[0]);
PatBlt(mdc[0],0,0,WINX,WINY,WHITENESS);
SelectObject(mdc[1],bmp[1]);
SelectObject(mdc[2],bmp[2]);
SelectObject(mdc[3],bmp[3]);
SelectObject(mdc[4],bmp[4]);
SelectObject(mdc[5],bmp[5]);
COLORREF c;
c=GetPixel(mdc[1],0,0);
BitBlt(mdc[2],0,0,640,371,mdc[1],0,0,SRCCOPY);
BitBlt(mdc[1],0,0,640,371,mdc[2],0,0,SRCINVERT);
ReleaseDC(mywin[0],hdc);
}
で、ビットマップが変換できないってエラーでて困ってるんだけど
0225149
2007/10/13(土) 19:30:02183は組合せが1234から始まってないので・・・
あとプログラムのアルゴリズムに対して考察もしないといけないので・・・
0226デフォルトの名無しさん
2007/10/13(土) 19:33:18催促するならはっきり書かなきゃ
0227デフォルトの名無しさん
2007/10/13(土) 19:35:560229デフォルトの名無しさん
2007/10/13(土) 20:07:21for(i=1; i<=6; i++) {
for(j=i+1; j<=7; j++) {
for(k=j+1; k<=8; k++) {
for(l=k+1; l<=9; l++) {
//チェック用の関数
}}}}
ってやればよくね?
0230デフォルトの名無しさん
2007/10/13(土) 20:10:27チェック用の関数がどこにあたるかわからないです。。。
>>183のプログラムが理解できなくて・・・
>>186ならなんとか理解できそうなんですが
0231デフォルトの名無しさん
2007/10/13(土) 20:28:580232デフォルトの名無しさん
2007/10/13(土) 20:29:32うは、俺恥ずかしす
0233149
2007/10/13(土) 20:48:59やっぱり理解できなかったです。
122行目の
temp=work[index], work[index]=work[i], work[i]=temp; の構文がよくわからないです。なんでセミコロンじゃなくてコンマなんですか?
0234デフォルトの名無しさん
2007/10/13(土) 21:01:58work[index]=work[i];
work[i]=temp;
と同じ。
ただ、そういう書き方もできるだけ。
0237デフォルトの名無しさん
2007/10/13(土) 21:07:420238デフォルトの名無しさん
2007/10/13(土) 21:17:13解禁しますか?はいかイエスで答えて下さい
ニア はい
イエス
0239デフォルトの名無しさん
2007/10/13(土) 21:30:04まず f ( a b c d) 数字abcdをそのままの順序でつかって計算可能な式すべてを計算する を作る
○は加減乗算とする
可能性として a b ○ c ○ d ○ または a b ○ c d ○○ の形しかない
これで関数fはつくれるだろ
0241デフォルトの名無しさん
2007/10/13(土) 21:33:310242デフォルトの名無しさん
2007/10/13(土) 21:42:044つなら
a b○c○d○ a bc○○d○ と
a bcd○○○
でいいか?
0243デフォルトの名無しさん
2007/10/13(土) 21:44:180244デフォルトの名無しさん
2007/10/13(土) 21:47:12ab○c○d○ は dcab○○○ と等価
0245デフォルトの名無しさん
2007/10/13(土) 21:48:410246デフォルトの名無しさん
2007/10/13(土) 22:00:56というのを再帰して求めれば全ての配置が決まるな
0247デフォルトの名無しさん
2007/10/13(土) 22:09:590248デフォルトの名無しさん
2007/10/13(土) 22:22:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5069.c
表示部分がちょっと手抜き
0249248
2007/10/13(土) 22:27:599/(8-5)*4=12
が抜けとる
思ったよりめんどいな
0250デフォルトの名無しさん
2007/10/13(土) 22:34:060251248
2007/10/13(土) 22:36:350252デフォルトの名無しさん
2007/10/13(土) 22:41:58俺は試してないから知らないけど
■ このスレッドは過去ログ倉庫に格納されています