下
C言語のお勉強ページに対するご意見・ご感想スレ
22:へなちょこ管理人 ★ 2008/11/24(月) 20:11:25 /*符号無し整数xを右にnビット回転した値を返す*/ unsigned rrotate(unsigned x, int n) /*符号無し整数xを左にnビット回転した値を返す*/ unsigned lrotate(unsigned x, int n) だから合ってるような気がするんですが読み間違えてるんでしょうか・・・
23:超絶初心者 2008/12/27(土) 15:58:18 第四章4-18のリンクが4-1になってますよ。
24:へなちょこ管理人 ★ 2008/12/29(月) 02:52:32 >>23 Oh...misstake. 修正しておきますた。
25:超絶初心者 2009/01/06(火) 00:14:19 演習6-9についてなのですが、問題が配列v2の並びを逆順にしたものを配列v1に格納する関数 なのですがこれをコンパイルするとv1がv2に格納されるのですがこれでよろしいのですか? 初心者であまり問題の意味も理解しきれていないのですがスイマセン… ちなみに私はこのようにやってみました、間違っていたらご指摘ください。 void intary_rcpy(int v1[], const int v2[], int no) { int i; for (i = 0; i < no; i++)v1[i] = v2[(no - i) - 1]; } int main (void) { int i;int a[NUMBER], b[NUMBER]; printf("%d×2個の数値を入力してください。\n", NUMBER); for (i = 0; i < NUMBER; i++) { printf("a[%d] = ", i); scanf("%d", &a[i]); printf("b[%d] = ", i); scanf("%d", &b[i]); } puts("bの数値を逆転したものをaに代入します。"); intary_rcpy(a, b, NUMBER); for (i = 0; i < NUMBER; i++) { printf("a[%d] = %d", i, a[i]); printf("b[%d] = %d", i, b[i]); putchar('\n'); }
26:へなちょこ管理人 ★ 2009/01/06(火) 06:04:25 パッと見ですが、 for (i = 0; i < no; i++)v1[i] = v2[(no - i) - 1]; この行に違和感感じました。 詳しくは帰宅した後にでも〜。
27:へなちょこ管理人 ★ 2009/01/07(水) 00:38:06 問題を見ると /* 要素数がnoであるint型の配列v2の並びを逆順にしたものを配列v1に格納する関数 void intary_rcpy(int v1[], const int v2[], int no) {} を作成せよ。 */ とあります。 まず、 printf("%d×2個の数値を入力してください。\n", NUMBER); ここがおかしいです。 ×2個はいらないです。 その下も以下略。 まず問題をわかりやすく砕いてみましょう。 要は、 12 34 56 78 90 となってる配列(v1)を 90 78 56 34 12 という配列(v2)にすればいいのです。 なので、 v1配列の最初の値をv2配列の最後に代入 ↓ v1配列の最初+1の値をv2配列の最後-1に代入 ↓ 以下略 これでうまくいくはず? なんか自分の回答みると無駄な処理してるような・・・。 とりあえずこんな感じです〜。
28:へなちょこ管理人 ★ 2009/01/07(水) 00:40:23 付け加えると、constをつけると弄れなくなるので、 必然的にintary_rcpyに与える引数は 逆順にした値を格納する配列,入力した配列,要素数(配列の数)ですね。 眠い頭で書いてるので変なこと書いてたら吸いません。
29:へなちょこ管理人 ★ 2009/01/07(水) 00:47:04 久々にCのコード覗いて思ったけど未だにオレ、配列とポインタの区別できてないんだよなぁ。 なんとなく違いはわかるんだけど明文化しろって言われたらできない。
30:超絶初心者 2009/01/07(水) 05:15:06 実引数bをv1に、aをv2にとしているのを、aをv1に、bをv2にと勘違いしていました。スイマセン intary_rcpyなのですが最初の for ( i = 0; i < no; i++ ) v1[i] = v2[i]; temp = v1[i]; v1[i] = v1[(no - 1) - i]; v1[(no - 1) - i] = temp; for (i = 0; i < no; i++) v1[i] = v2[(no - 1) - i];に書き換えることが可能だとおもいます。 お忙しい所質問にご回答いただきありがとうございます。今後とも利用させていただきます。
31:へなちょこ管理人 ★ 2009/01/23(金) 21:02:36 某人生ゲームみたいなボードゲーム。サイコロを振って出た目の分進んでゴールを目指す。途中止まったマスによって様々なイベントが起こり、そのたびに所持金やプレイヤーのステータスが変化する。例えば、所持金が変化するイベントやステータスが上下するイベントがある。移動制限は作らない。 ステータスや所持金で選べる職業が変化する。ゴールしたときプレイヤーの所持金とステータスをランキングに残す。所持金のランキングとステータスのランキングと総合スコアのランキングをそれぞれ上位の10人ずつ残す。総合スコアは所持金とステータスの値を計算式にあてはめて算出する。最初にいくつか質問をして、ステータスの初期値をきめる。マスの進む数は1?6までの数をだすサイコロで決める。マス目は100マスぐらいを予定。少ないターン数でゴール出来たら所持金やステータスにボーナスがある。
上
前
次
1-
新
書
写
板
AA
設
索
C言語のお勉強ページに対するご意見・ご感想スレ http://newcomer.s368.xrea.com/test/read.cgi/bbs/1186266778/l50