下
C言語のお勉強ページに対するご意見・ご感想スレ
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マスぐらいを予定。少ないターン数でゴール出来たら所持金やステータスにボーナスがある。
32:へなちょこ管理人 ★ 2009/01/23(金) 21:08:54 サイコロの目を決める int saikoro = 1; saikoro = rand() % 6 + 1;
33:へなちょこ管理人 ★ 2009/01/23(金) 21:22:29 【びん取りゲーム】 ルール:交互に1〜3本のびんを取ります。最後の1本を取った人が負けです。 びんの本数: 20 先攻後攻を決めます...先攻 [1] / 後攻 [2] : 1 ===========================あなたの先攻でスタート============================ 何本取りますか?...3 プレイヤー>3 本取ったぞ! □□□■■■■■■■■■■■■■■■■■ あと 17 本! コンピュータ>1 本取ったぞ! □□□□■■■■■■■■■■■■■■■■ あと 16 本! 何本取りますか?...2 プレイヤー>2 本取ったぞ! □□□□□□■■■■■■■■■■■■■■ あと 14 本! コンピュータ>2 本取ったぞ! □□□□□□□□■■■■■■■■■■■■ あと 12 本! 何本取りますか?...2 プレイヤー>2 本取ったぞ! □□□□□□□□□□■■■■■■■■■■ あと 10 本! コンピュータ>1 本取ったぞ! □□□□□□□□□□□■■■■■■■■■ あと 9 本! 何本取りますか?...3 プレイヤー>3 本取ったぞ! □□□□□□□□□□□□□□■■■■■■ あと 6 本! コンピュータ>1 本取ったぞ! □□□□□□□□□□□□□□□■■■■■ あと 5 本! 何本取りますか?...1 プレイヤー>1 本取ったぞ! □□□□□□□□□□□□□□□□■■■■ あと 4 本! コンピュータ>3 本取ったぞ! □□□□□□□□□□□□□□□□□□□■ あと 1 本! =================================ゲーム終了================================== あなたの負け!また挑戦してね! nterキーを押すと終了...
34:へなちょこ管理人 ★ 2009/01/23(金) 21:23:57 #include <stdio.h> #include <time.h> #include <stdlib.h> #include <windows.h> //びん取りゲーム main () { int bin_max;//びんの総本数 int bin;//残りびんの本数 int max = 3;//一度に取れるびんの最大数 int p_turn = 0;//プレイヤーターンフラグ int p_get, m_get;//プレイヤー、コンピュータそれぞれの取ったびんの数 int i; srand(time(NULL)); //びんの総本数を決める bin_max = rand()%5 + 20; bin = bin_max; printf("【びん取りゲーム】\n"); printf("ルール:交互に1〜3本のびんを取ります。最後の1本を取った人が負けです。\n"); printf("びんの本数: %d\n", bin_max); //先攻後攻を決める printf("先攻後攻を決めます...先攻 [1] / 後攻 [2] : "); scanf("%d", &p_turn); while(getchar() != '\n') { } if(p_turn == 1 || p_turn == 2) { printf("============================あなたの"); if(p_turn == 1) { printf("先攻"); } else if(p_turn == 2) { printf("後攻"); p_turn = 0; } printf("でスタート============================\n\n"); } else { printf("不正な値を受け取りました...強制的にプレイヤーは後攻です。\n\n"); p_turn = 0; } //びんを交互に取る for(; bin > 1; p_turn = !p_turn) { if(p_turn) {//プレイヤーのターン do { p_get = 0; printf("何本取りますか?..."); scanf("%d", &p_get); while(getchar() != '\n') { } } while((p_get < 1) || (p_get > max)); printf("プレイヤー>%d 本取ったぞ!\n", p_get); bin -= p_get; if(bin <= 0) { printf("プレイヤー>0になっちゃったよ・・・\n"); } } else {//コンピュータのターン if(bin <= max + 1) { m_get = bin - 1; Sleep(500); } else { m_get = rand()%max+1; Sleep(rand()%500 + 1000); } printf("コンピュータ>%d 本取ったぞ!\n", m_get); bin -= m_get; } //残り本数の表示 if(bin >= 1) { for(i = 0; i < bin_max; i++) { if(i < bin_max - bin) { printf("□"); } else { printf("■"); } } printf(" あと %d 本!\n", bin); } } printf("\n==================================ゲーム終了==================================\n"); //勝敗判定 if(!p_turn && (bin <= 0)) { p_turn = !p_turn; } if(p_turn) { printf("あなたの負け!また挑戦してね!\n"); } else { printf("あなたの勝ち!\n"); } /***********************************以下追加文********************************/ printf("Enterキーを押すと終了..."); rewind(stdin); getchar(); /***********************************追加文終了********************************/ return 0; }
35:名無しさんが転んだ! 2009/01/26(月) 09:45:38 演習7-4の解答ページが見れなくなっています。
上
前
次
1-
新
書
写
板
AA
設
索
C言語のお勉強ページに対するご意見・ご感想スレ http://newcomer.s368.xrea.com/test/read.cgi/bbs/1186266778/l50