プログラム実行していないのですが、
for文内、
の添え字のiがjなのでは?
検索結果 24 件
- 3年前
- フォーラム: C言語何でも質問掲示板
- トピック: hold=の式はなんで必要なんですか?
- 返信数: 1
- 閲覧数: 2930
Re: hold=の式はなんで必要なんですか?
再度関数について勉強したほうがいいかと。 関数Olympicは引数の年(year)に対してオリンピックが開催されるかどうかを判定するものになっています。 hold = olympic(year); にてolympic関数の結果をholdに格納していて、 switch文にてholdの値をもとに何を表示するかを決めています。 つまりholdはオリンピック開催を判定する計算結果を格納するための変数となっています。 変数holdを使用しないのであれば、 switch (hold) を switch (olympic(year)) に変更すればいいです。 ※ここの()内をholdからyearにとの記載が...
- 3年前
- フォーラム: C言語何でも質問掲示板
- トピック: 時差について、どなたかご教授お願いします。
- 返信数: 3
- 閲覧数: 3582
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: メルセンヌ・ツイスタを使用した乱数をファイルに出力
- 返信数: 34
- 閲覧数: 10800
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: オセロの反転の考え方について
- 返信数: 11
- 閲覧数: 7406
Re: オセロの反転の考え方について
返信遅くなりました。 バグの原因はここではないかというのは分かりましたが、 プログラムをもう一度全体的に見直すと 修正箇所、改善箇所がありましたので、 修正したプログラムを載せます。 ※時間がなかったため、一部しか修正していません。 また、盤面探索、反転のところ以外の機能(勝者判定等)については 未実装(未修整)です。 おそらく作成済みと思いますので、そちらと合体させてください。 修正箇所についてはコメントにて記載しています。 /**/でかかれたコメント部分が該当箇所(もともとのコメントと区別するため)です。 ※コードタグで囲んでいますが、BBCodeの仕様なのか、#defineのコメン...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: オセロの反転の考え方について
- 返信数: 11
- 閲覧数: 7406
Re: オセロの反転の考え方について
追記です
終了判定が間違っていると思われます。
終了判定は以下のようになります
・8×8の64マスなので、白の数+黒の数≧64のとき終了
・片方がパスのとき、もう片方もパスの場合
・石の色が一色になった場合
これを踏まえて修正するとプログラムは完成すると思います。
※プログラムは自分で何回か試してみてバグがあるかなどを探すと自分で改善点見つけられますよ
終了判定が間違っていると思われます。
終了判定は以下のようになります
・8×8の64マスなので、白の数+黒の数≧64のとき終了
・片方がパスのとき、もう片方もパスの場合
・石の色が一色になった場合
これを踏まえて修正するとプログラムは完成すると思います。
※プログラムは自分で何回か試してみてバグがあるかなどを探すと自分で改善点見つけられますよ
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: オセロの反転の考え方について
- 返信数: 11
- 閲覧数: 7406
Re: オセロの反転の考え方について
1つだけバグがありました。
どこにも置けません
の場合、パスされて次のターンへ移るのですが、
その際に置ける場所に置いても
そこには置けません
と表示され、
再度入力のときは問題ないのですが。
プログラムを細かく見ていませんが、
どこにも置けません
のときに、ターンが移ったあとの
盤面の状態が表示されなかったので、
そこらへんを見るといいかもしれません。
どこにも置けません
の場合、パスされて次のターンへ移るのですが、
その際に置ける場所に置いても
そこには置けません
と表示され、
再度入力のときは問題ないのですが。
プログラムを細かく見ていませんが、
どこにも置けません
のときに、ターンが移ったあとの
盤面の状態が表示されなかったので、
そこらへんを見るといいかもしれません。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: オセロの反転の考え方について
- 返信数: 11
- 閲覧数: 7406
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: オセロの反転の考え方について
- 返信数: 11
- 閲覧数: 7406
Re: オセロの反転の考え方について
反転の前に Check_stone関数に // ☆を初期化 } else if (field[j][i] == PUTOK){ field[j][i] = EMPTY; } とありますが、 これだと 白が置く番ではPUTOKだったけど、 白が別の場所に置いて黒の番になったときに 黒がPUTOK という場合に対応できません。 改善策としては、 盤面検索の前に先に全てのPUTOKをEMPTYに変更してから盤面検索を行うと確実です。 また、今のままだと正しい石探しが出来ていません。 例えば、右を見ているときに、 for (x = 0; x<8; x++){ if (field[x][i] == tu...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: オセロの反転の考え方について
- 返信数: 11
- 閲覧数: 7406
Re: オセロの反転の考え方について
考え方という点でいうと、 場所の特定は逆で、 空白マス発見→ 周囲8マスに自色と異なる色がある→ 色のある方向を調べ、自色が出てきたら置ける、壁または空白マスの場合は置けない これを全部のマスで行えばおける場所の特定ができ、 反転は場所の特定を応用して、 周囲8マスを1マスずつ調べていき、 反転可能な方向(異なる色の直後に自色がある)場合は、 自色が出てくるまで異なる色の個所を自色に変える とすればできます。 プログラムを少しだけ見ましたが、 黒、白の値は1と-1にしたほうが反転のときに-1を掛けるだけで済むので楽です。 今のやり方だと反転のときに黒と白別々に処理を書かなければいけなそうでした...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: ファイル書き込みの上書きについて
- 返信数: 6
- 閲覧数: 4776
Re: ファイル書き込みの上書きについて
かずまさん
返信ありがとうございます。
strchr関数を初めて知りました。
これを使うほうが完結に書けますね。
かずまさんのを使用させていただきます。
ありがとうございました。
返信ありがとうございます。
strchr関数を初めて知りました。
これを使うほうが完結に書けますね。
かずまさんのを使用させていただきます。
ありがとうございました。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: ファイル書き込みの上書きについて
- 返信数: 6
- 閲覧数: 4776
Re: ファイル書き込みの上書きについて
返信ありがとうございます。かずま さんが書きました: fclose(fp_r) が while(1) の中で 1回以上、while(1) の後で 1回の
合わせて 2回以上呼ばれています。
fclose(fp_r); を while(1) の前にひとつだけ置くようにしてみてください。
while(1)の前にのみfcloseを書くことで解決しました。
※while(1)の前がif分のため、対応するelse文の後にもfclose書きました。
ありがとうござました。
とりあえず正常に動きましたので、
簡潔にするのほうは無しにして、解決とさせていただきます。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: ファイル書き込みの上書きについて
- 返信数: 6
- 閲覧数: 4776
Re: ファイル書き込みの上書きについて
boxさんbox さんが書きました:個人的な感想です。
file_write.c
の処理内容が仰々しいような感じがします。もっと単純にできるように思います。
おっしゃる通り、簡素化できないかとも思いましたが
今の私の知識ではこれが精いっぱいです。
※YNの処理を正しく行うため試行錯誤した結果です。
最初の質問とは異なりますが、簡素化の方法ヒントのみでかまいませんので、
何かありますでしょうか。
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: ファイル書き込みの上書きについて
- 返信数: 6
- 閲覧数: 4776
ファイル書き込みの上書きについて
久々の質問です。 ファイル出力において、既存のファイルを上書きしようとすると、エラーが出て上書きされません。 新規ファイルの場合は正しく出力されます。 原因わかりましたら教えてください。 情報の過不足ありましたら、提示いたしますので、返信ください。 環境 c言語 VS2015 win8.1update 以下コードです。 //bat.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "bat.h" int main(void) { FILE *fp_w; fp_w=file_make(); file_wri...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: ホップフィールドネットワークについて
- 返信数: 1
- 閲覧数: 3900
Re: ホップフィールドネットワークについて
このプログラムだと、 エネルギー関数の計算はいらないと思います。 http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/hop3.html にある通り、 エネルギー関数を最小にする結合荷重の計算をプログラムで行っているからです。 また、プログラムは実行していませんが、 http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/hop2.html にあるとおり、 記憶できる数が大体ニューロンユニット数×0.15なので、 ニューロン数が13は無いと想起できないので、 ニューロン数を増やす必要があると思います。 ...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: ポインタについての質問
- 返信数: 5
- 閲覧数: 2368
Re: ポインタについての質問
そもそもreturn文の使い方が間違っています。 Cではreturn文では1つしか値を返すことができません。 ポインタで値を関数に渡した場合は 返却値で返す必要はありません。 修正するなら /*関数*/ void tasihiki(int c, int d, int *W, int *S){ *W = c+d; *S = c-d; //return (c, d, *W, *S); //. . .(1) ←削除してよい } となります。 関数で使用する void や int についてあまり理解できていません。 とのことですが、 簡単な話、 return文で返ってくる値の型が何であるかというだけで...
- 8年前
- フォーラム: C言語何でも質問掲示板
- トピック: scanfで複数(具体的な数は不明)の文字列を入力し、処理するプログラムはどう作ればよいのですか?
- 返信数: 5
- 閲覧数: 8815
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 数独を解くプログラム2
- 返信数: 25
- 閲覧数: 9292
Re: 数独を解くプログラム2
>プログラムは自分で考えたい気持ちの方が強いので、 >できればある程度プログラムが完成してからアップして欲しいです。 ご要望あり次第アップいたしますので、その際はご連絡ください。 なお、私のプログラムのアルゴリズムは下記の本を参考にしています。 また、DXライブラリでの作成となります。 鉛筆パズルゲームプログラミング ナンバープレース・お絵かきパズル・ナンバークロスワードのアルゴリズム たいちろうさんが書かれている通り、バックトラックの部分は人間らしくないのはその通りです。 そのために >7.は難しい問題のときに起こりますので、そこも理詰めで解きたい場合は >高度な解法を実装することになります...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 数独を解くプログラム2
- 返信数: 25
- 閲覧数: 9292
Re: 数独を解くプログラム2
自分も数独のプログラムは作成したことがありますが、 次のように作りました。 1.問題読み込み 2.取り合えす空白部分にすべての数字のフラグを立てる 3.空白マスを上から順に見ていき、縦、横、同じブロック(3×3)にある数字をフラグから消去 4.フラグが1つしかないマスは確定 5.縦、横、同じブロックでフラグが1つしかない数字はその箇所を確定 6.3.に戻る 7.埋まらない場合はバックトラックで解く 7.は難しい問題のときに起こりますので、そこも理詰めで解きたい場合は 高度な解法を実装することになります。詳しくは検索してみてください。 現在プログラムをアップできないのですが、必要とあればアップい...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: scanf関数について
- 返信数: 4
- 閲覧数: 1804
Re: scanf関数について
1 2
の入力の場合は
scanf("%d%d", &x, &y);
とする必要があります。
scanf("%d,%d", &x, &y);
では、他の方が回答されている通り、
間に,を入れる
つまり
1,2
でないと正しく動作しません。
の入力の場合は
scanf("%d%d", &x, &y);
とする必要があります。
scanf("%d,%d", &x, &y);
では、他の方が回答されている通り、
間に,を入れる
つまり
1,2
でないと正しく動作しません。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 基本情報技術者試験
- 返信数: 8
- 閲覧数: 2962
Re: 基本情報技術者試験
勉強時間について書いていませんでしたが、何時間勉強したかは覚えていません。 通学時間が2時間あったため、その間でかなり勉強できていたとは思います。 また、大学が情報系だったため、授業で習った範囲と重なる部分もあり、 まったく情報系のことを知らない人よりか勉強時間というのは短いのではないかと思いました。 ですので、あくまで推測ですが基本情報のための勉強ということに絞ると70~100時間くらいではないかと思います。 なお、勉強に関しては午前についてがほとんどで、午後のための勉強というのは特に行ってはいませんでした。 強いて言うなら受験前から自己研鑽のためにC言語の勉強はしていましたが。 自分の勉強...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 基本情報技術者試験
- 返信数: 8
- 閲覧数: 2962
Re: 基本情報技術者試験
私は基本情報技術者試験を取得していますが、午前の問題については過去問を解くだけで6割は取れると思います。 というのも、それなりの割合で過去問とまったく同じ問題(選択肢の順番も一緒)が出題されるからです。 それ以外の問題でも、過去問に似た問題や過去問を解いていれば自然とわかる問題がほとんどです。 以下に午前の過去問が解くことのできるサイトを挙げます。 一夜漬け 情報処理技術者試験 また、あえて参考書を挙げるとすれば午前に関してのみですが 平成24年度 イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室 (情報処理技術者試験) になります。 この本はクレーバー方式といって、 ~とくれ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 新ANSI C言語辞典 に代わる本
- 返信数: 6
- 閲覧数: 5006
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: アドレスを用いた数値の入れ替え
- 返信数: 8
- 閲覧数: 5390
Re: アドレスを用いた数値の入れ替え
見た限り最初のソースで正解です。
問題の意味は、
値そのものだけ値を交換しているのではなく、
アドレスを交換することにより値を交換しています。
仮にp_aのアドレスを10番地、p_bのアドレスを20番地とすると、
値そのものだけ値を交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:10番地→200
p_b:20番地→100
一方、
アドレスを交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:20番地→200
p_b:10番地→100
となります。
問題の意味は、
値そのものだけ値を交換しているのではなく、
アドレスを交換することにより値を交換しています。
仮にp_aのアドレスを10番地、p_bのアドレスを20番地とすると、
値そのものだけ値を交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:10番地→200
p_b:20番地→100
一方、
アドレスを交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:20番地→200
p_b:10番地→100
となります。