検索結果 418 件

by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルのy座標が0になってしまいます
返信数: 3
閲覧数: 444

Re: ファイルのy座標が0になってしまいます

ぱっと見ただけですが、ここが間違ってます。

fscanf_s(fp, "%d %d", &p.x, &p.y);

fscanf_s(fp, "%lf %lf", &p.x, &p.y);
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 引数の違う親クラスの関数が使えなくなる
返信数: 6
閲覧数: 909

Re: 引数の違う親クラスの関数が使えなくなる

確かに実装しなおしとも言えますが、私なら多分このようにします。
実際のfunc(a)の中身はそこそこ複雑な処理でしょうが、
それを2回書く必要はありません。

int func(int a) { return Base::func(a); }
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 引数の違う親クラスの関数が使えなくなる
返信数: 6
閲覧数: 909

Re: 引数の違う親クラスの関数が使えなくなる

ここに原因と解決法があります。

CodeZine『C++による開発で陥りやすい問題点の検証』
オーバーロードとオーバーライド
https://codezine.jp/article/detail/276?p=5
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 変数について教えてください
返信数: 7
閲覧数: 1311

Re: 変数について教えてください

うろ覚えのせいなのかもしれませんが、問題の体をなしていません。
プログラムか問題か、少なくとも一方に間違いがありませんか?
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルに書かれた式の計算について
返信数: 12
閲覧数: 2600

Re: ファイルに書かれた式の計算について

みけCAT さんが書きました: 課題で作成するべきプログラムの内容は
「指定された内容のファイルを作成し」
ファイルの作成をプログラムでする必要はないんじゃないですか?
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: c++の命名規則について
返信数: 8
閲覧数: 1452

Re: c++の命名規則について

> c++の開発者の好み… > あくまで利用者である以上は有無を言わずそれに順応しろということですかね… 文句を言うなら使うな、というのは極論ですが、不便に思う人が少数派なのではないですか? 標準ライブラリの部分と、自分(自社)で書いた部分が区別しやすいとも言えます。 多くの人が不便に思うなら、今の形に落ち着いていないでしょう。 最初の開発者の意向も尊重されますが、今や多くの人が標準化に関わっています。 現実問題として、30年以上使われている標準ライブラリの命名規則は変えられず、 自作の部分を気に入ったコーディングルールで作成するしかないのではないでしょうか。 スネーク記法で標準ライブラリに合...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: ライブラリについて
返信数: 6
閲覧数: 1382

Re: ライブラリについて

> Gitの管理なる書籍はGitの欠点を補うための技術が載っているわけであってGitの機能ではないのですね! hideさんは、gitの欠点の話はしていないと思います。 ソースコードの管理は昔からの難題で、大人数で開発する場合は難しさも膨れ上がります。 現在はバージョン管理ツールを使って管理する方法が主流であり、gitはそのツールの1つです。 ソースコードの管理は、開発チーム毎にスタイルがあり、 バージョン管理ツールが求められている機能も様々です。 強力で多機能なので、すぐに使いこなせない人が多いとしたら、欠点と言えるかもしれませんが。 Excelにも技術書(解説書)がありますが、それがExce...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 2次関数を遺伝的アルゴリズムを用いてもとめる
返信数: 3
閲覧数: 774

Re: 2次関数を遺伝的アルゴリズムを用いてもとめる

hideさんの書いているように、C言語の基礎は必要でしょう。
ある程度習得した後でないと、遺伝的アルゴリズムは困難かと。
その際には、「グレイコード」について調べてみるとよいでしょう。

まずはC言語で簡単なプログラムを自由に作れるようになりましょう。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 演算子の優先順位について
返信数: 3
閲覧数: 721

Re: 演算子の優先順位について

まず、「演算子の優先順位」という言葉を誤解しているのでしょう。
評価の順番はまた別の話です。

x = a * b + c;

が、

x = ((a * b) + c);

と解釈されるという意味です。
もし、加算の優先度が高い規則だったら、

x = (a * (b + c));

と解釈されてしまいます。


次に、前置インクリメントと後置インクリメントの違いを理解していないようです。
以下を試して理解してください。

コード:

a = 5;
x = ++a;

b = 7;
y = b--;

printf("%d, %d, %d, %d\n", a, b, x, y);
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 線形リストの先頭移動
返信数: 11
閲覧数: 2258

Re: 線形リストの先頭移動

> ひとまず、リスト表示のコードも合わせて再掲します。

リスト表示、間違ってますよね。
最後の要素まで確認してますか?


> 前述した標準ライブラリがインクルードされています

だから、この部分も疑っているわけです。
多分大丈夫なのでしょうけど、「多分」を取り除きたいのです。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 線形リストの先頭移動
返信数: 11
閲覧数: 2258

Re: 線形リストの先頭移動

> >リスト表示
> 実装してみました。現在のところ、再現を取ろうにもなかなか取れていません。

リスト表示が正しく実装できている保証もありません。
行き詰ったら、もろもろ最新のコード一式をあげてみてはどうでしょうか。

最小のデータと最小の手順で、不具合が再現する方法を見つけるのが大事です。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 線形リストの先頭移動
返信数: 11
閲覧数: 2258

Re: 線形リストの先頭移動

> この、状況は全く同じなのに「起こったり起こらなかったりする」
> バグというのがどうにも不安で、質問させていただきました。
> どうかよろしくお願いします。

単なる再現性の低いバグでしょう。
なぜデバッグしないのですか?

私ならばリストの内容を表示する関数を作り、
並び替えの前後に表示してみます。
またデータの数も5件程度でデバッグします。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 0.0 / -1.0 = -0.0
返信数: 3
閲覧数: 726

Re: 0.0 / -1.0 = -0.0

お使いの処理系が書かれていませんが、たぶん仕様です。

https://ja.wikipedia.org/wiki/IEEE_754

「ゼロは仮数が0の有限数である。
符号が別に定義されているので、符号付の2種類のゼロ +0 と-0 が存在する。」
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体,ポインタ
返信数: 6
閲覧数: 703

Re: 構造体,ポインタ

SetNode(), AllocNode(), InsertNode(), AppendNode(), DeleteNode()とあるように、
Nodeを操作する関数群を作りたかったのでしょう。

AllocNode()については、たまたま内容が1行しかないので、
必要性に疑問を持たれているのでしょう。
上記の関数群で、AllocNode()を作らずにcalloc()で済ます場合とどっちが良いでしょうか。
きっと著者は作るべきと思ったのでしょう。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: "..." の使い方
返信数: 3
閲覧数: 767

Re: "..." の使い方

>...の呼び方

私も詳しくないけど。

「可変長引数テンプレート」
https://ja.wikipedia.org/wiki/C%2B%2B11 ... C.E3.83.88
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: ドキュメント/ビュー アーキテクチャにおけるドキュメント管理方法について
返信数: 2
閲覧数: 631

Re: ドキュメント/ビュー アーキテクチャにおけるドキュメント管理方法について

> あるいは他に定石があれば教えてください。

ビューが同期すべきデータを持たないのが理想なのでは?
ユーザがセルを操作したら、ビュークラスはドキュメントクラスの更新用メソッドを呼び出し、
自分自身やセルクラスの再描画メソッドを呼び出します。

セルクラスの描画に必要なデータはドキュメントクラスしか持っていないので、
セルクラス描画時には、ドキュメントクラスのデータ取得用メソッドを呼び出します。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: パズルゲーム ひとふで書きの問題難易度について
返信数: 8
閲覧数: 854

Re: パズルゲーム ひとふで書きの問題難易度について

> スタート地点からの全ルート探索結果をツリーとして見たときに,
> 正解を含まない部分木が出現する深さが浅いほど難しい…? とか思ったのですが,
> そんな単純な話でもなさそうですね.

むしろ正解を含まない部分木の高さが影響すると思います。
迷路で例えると袋小路の長さでしょうか。
枝分かれがあっても、少し先で袋小路になることが判れば、
安心して進むことができます。

プログラムで解く場合は、また別の難易度の定義になると思います。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 【雑談】ドラゴンクエストの賢者の石について
返信数: 4
閲覧数: 3837

Re: ドラゴンクエストの賢者の石について

dicさんが納得できるか判りませんが、そんなに不思議なことではないと思います。

まず、Wikipediaの記載に『一般によく知られた賢者の石は卑金属を金などの貴金属に変えたり、
人間を不老不死にすることができるという』、とあります。
錬金術という当時の最高の学問の考えた、『究極の物質』のようなものでしょう。

錬金術の目標の1つである「卑金属を貴金属に変える」性質に着目して、
近年の研究者の中には劇薬である黄血塩を指していると考える人もいるということ。
当然その研究者も、黄血塩が不老不死に関係があるとは考えてないでしょう。

(タイトルに「雑談」と付けるべきでは?)
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: mandelbrot集合
返信数: 4
閲覧数: 839

Re: mandelbrot集合

ちょっとググるとこんなのも見つかりますが、参考になりますか?

http://nepia01.blogspot.jp/2013/10/cgnuplot.html
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: mandelbrot集合
返信数: 4
閲覧数: 839

Re: mandelbrot集合

> 最も短くなるようなプログラムを教えていただけないでしょうか。 まずは長くても不格好でもよいのでしっかり動くプログラムを作ってください。 次にきれいで読みやすいプログラム。冗長な部分があれば整理します。 普通はここまでです。 そのうえで、もしもプログラムの長さを1バイトでも短くしたいなら、それは別の技術です。 「ショートコーディング」について調べてみてはいかがでしょう。 この掲示板にも得意な人はいるでしょうから、その段階になったら質問してください。 (1)不格好だが一応動くプログラム (2)きれいで読みやすいプログラム (3)限界まで短くしたプログラム 方正さんが目指すのはどこですか? いま...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?
返信数: 31
閲覧数: 30452

Re: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?

119章まで順番にやれとは言いませんが、
最初の10章くらいまではしっかり理解しながらやってはどうですか?
エラーが何を言っているかある程度分かるようになりますよ。

windows.hをインクルードするとどうなりますか?
またHGDIOBJの件は、正しくキャストをしていないのでは?
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?
返信数: 31
閲覧数: 30452

Re: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?

> 結局長い目でみてWindowsプログラミングを極めるならどの開発言語がいいんでしょうか?

この目的でこの選択しならば、Win32 API 一択ですね。
Windowsプログラミングが極めるに値するかは疑問ですが。

まずは、Win32 APIをある程度自由に使えるようになってみては良いのではないでしょうか。
その頃にはVBAがここにあることのおかしさにも気づけるでしょう。
1つの事だけをやっていて極めようという事にも疑問を感じられるのではないでしょうか。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?
返信数: 31
閲覧数: 30452

Re: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?

> いやCはもう2年やってるのでそろそろ実用的なアプリを作りたいんです。 何年やっているかは関係なくて、どの位理解しているかです。 別スレの↓を見ると、基本が疎かになっているのではないかと思います。 > ちなみに連結とかはどうすれば? > lptstr=x+TEXT("bcd"); > でabcdってしたくても無理でした。 > とりあえずダイアログとか作ってファイルの一覧を表示したり、ダイアログ上で計算したりとかです。 > いなみにWindows フォーム アプリケーションだと1日で作れますか? 1日で作れるかどうかは人によるでしょう。無意味な質問です。それと作ろうとするアプリの難易度。 > ...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?
返信数: 31
閲覧数: 30452

Re: 初心者がフォームアプリケーション作るならwin32プロジェクトはきついですか?

Win32APIは敷居は高いですね。
C言語もそこそこ難しいし、Windowsプログラミングの仕組みというかお作法もそこそこ難しいし、TCHAR関連もそこそこ難しいです。
当然、これら以外にもそこそこ難しい概念は連続して出てきます。

目的が何か判りませんが、いきなりWin32でプログラムを作ろうとするのではなく、
まずはもう少しC言語を理解してはいかがでしょうか。
各個撃破です。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 線形リストの基底クラス
返信数: 5
閲覧数: 882

Re: 線形リストの基底クラス

> 基底クラスでAdd/AddRange/RemoveEnd/Clear/Root/End/Next/Prev
> などの関数を一回書いて、あとは流用なんて出来たら便利だなと思って相談しました。

その後、進展はありますか?
Compositeパターンが使えると思うのですが、使えない理由があるのでしょうか。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 線形リストの基底クラス
返信数: 5
閲覧数: 882

Re: 線形リストの基底クラス

何をやりたいのかよくわかりませんが、Compositeパターンが使えませんか?
以下にC++の実装例があるので、検討してみてください。

http://www002.upp.so-net.ne.jp/ys_oota/ ... /index.htm


全然違う場合、もう少しやりたいことの説明が必要かと。
不完全でもよいので、ソースコードとか。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 勉強サイトについて
返信数: 2
閲覧数: 545

Re: 勉強サイトについて

深さ優先探索「など」が何を指しているのか、何のために勉強したいのか、 少し長くて理解できなかったコードはどのサイトか、などを書いてくれると答えが得られやすいかと。 特にどっかのサイトのコードのこの部分がわからない、など。 かなり古いサイトですが、昔私が勉強させてもらったサイトをとりあえず紹介します。 コンピュータ&パズル(トップページ) http://www.ic-net.or.jp/home/takaken/index.html パズル問題解法のアルゴリズム講座 http://www.ic-net.or.jp/home/takaken/pz/index.html 藤原博文氏の「再帰のお勉強」...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: double型の計算ずれについて
返信数: 10
閲覧数: 1420

Re: double型の計算ずれについて

解決になっているので、質問者さんに読まれないかもしれませんが、 元々の疑問が解決していないのではないかと思うので一応書きます。 0.2というのは簡単な小数で、 0.2 + 0.2 + ... + 0.2 == (0.2 * 100) == 20 なのも自明です。 しかし、これは私たちが馴染んでいる10進数での話です。 コンピューターでは2進数が使われていますが、 0.2を2進数で表すと、0.00110011001100110011... という循環小数になります。 double型はfloat型の倍の精度を持っていますが、 無限に続く小数を扱えるわけではないので、どこかで切り捨てることになります...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 簡潔なプログラム
返信数: 8
閲覧数: 786

Re: 簡潔なプログラム

最初の質問についてですが、整数値cも追加したらどうなるでしょうか。 3つの整数に重複がないとすると、大小関係は6通りになります。 cout << "1番小さい値は" << a << "です。\n" << "次に小さい値は" << b << "です。\n" << "1番大きい値は" << c << "です。\n"; というような書き方を6か所書くことになります。 出力のフォーマットを変更したくなった場合も、6か所直すことになります。 一般的に、これは良い方法とは言えません。 「大小の判定」のロジックと「結果の表示」を分けた方がシンプルになります。 ただ元々のプログラムも十分シンプルなので、著者の...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 簡潔なプログラム
返信数: 8
閲覧数: 786

Re: 簡潔なプログラム

> ここの値が、なぜかおかしなことになってしまうのです。
> 例えばminの方に5を入力しても小さい方の値は、0ですと出てきてしまいます。

minはaで初期化していますが、その時のaの値は0なので、
minは0で初期化されるという事です。

aに数値を入力した後に、minとmaxをaで初期化せるのが、
問題集の意図でしょう。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 文字が……………
返信数: 4
閲覧数: 480

Re: 文字が……………

正しく設定できてないから、そうなっているのだと思われますが。
試しに、次のように「L」を書いたらどうなります?

DrawString( 250 , 240 - 32 , L"Hello C World!" , Cr );
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 画像情報処理について
返信数: 4
閲覧数: 1214

Re: 画像情報処理について

輪郭が判るなら、輪郭の画素のX座標Y座標それぞれの最大最小を求めるだけです。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 【共同開発者募集】 インタプリタ・コンパイラ制作
返信数: 28
閲覧数: 5037

Re: 【共同開発者募集】 インタプリタ・コンパイラ制作

質問の意図が伝わっていないようですね。 プロジェクトの難易度の要因は色々ありますが、 最も重要な要因(少なくとも要因の一つ)はプロジェクトの規模だと私は思っています。 そのためプロジェクトの規模を答えられるか聞いたので、 行数で答えるならばプロジェクトの全ソースファイルの行数の合計です。 「フラットシェーディングのフルソフトウェア3Dレンダラ」のプロジェクトの全行数が2000行で、 募集中のプロジェクトが完成した場合の見込みが10000行程度ということでしょうか? それならば、「今までの最大の5倍に挑戦」ということなので少々野心的とは感じますが、 1万行というのはさほどの規模ではないので、1人...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 【共同開発者募集】 インタプリタ・コンパイラ制作
返信数: 28
閲覧数: 5037

Re: 【共同開発者募集】 インタプリタ・コンパイラ制作

> フラットシェーディングのフルソフトウェア3Dレンダラのプロジェクトは完成しています。 > また、2Dのゲーム用ライブラリなども今完成直前です。 > その他のプロジェクト(10~15個)はスパゲッティ化で放置状態になっています。 ↓これには答えていただけないのですね。 > 完成させたプロジェクトのうち最大のものと、今回のプロジェクトの見込みについて、 > 何千行とか何人月とかの単位で答えられますか? 「みんなでゲームを作ろう」という呼びかけも、滅多に成功しないようです。 それと比較しても人が集まるかどうか。 焦らずに身の丈に合ったものを作って経験を積むことをお勧めします。 最初のうちは小規模...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 【共同開発者募集】 インタプリタ・コンパイラ制作
返信数: 28
閲覧数: 5037

Re: 【共同開発者募集】 インタプリタ・コンパイラ制作

規模はともかくとして、バグがあまりにも多いというのは、
設計が破綻しているのではないでしょうか。

今までどの程度の規模のプロジェクトを完成させたことがありますか?
今までの完成させたプロジェクトと、今回のプロジェクトの規模とが、
あまりにも差があるならば、優秀なプロジェクトマネージャーも必要になるでしょう。

完成させたプロジェクトのうち最大のものと、今回のプロジェクトの見込みについて、
何千行とか何人月とかの単位で答えられますか?
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 配列に格納された数値のペアを探し出す
返信数: 15
閲覧数: 1712

Re: 配列に格納された数値のペアを探し出す

かずまさんに先を越されてしまった。勉強になります。

ところで、15行目で、+1 は必要ですか?
sizeが最大になるのは、全ての数値が違う場合で、ROW*COL だと思うのですが。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 配列に格納された数値のペアを探し出す
返信数: 15
閲覧数: 1712

Re: 配列に格納された数値のペアを探し出す

考えてみたら、C++を覚える方がよほど難易度が高いですね。 数値の範囲を決めてよいならば、次のプログラムで十分です。 #include <stdio.h> #define ROW 5 #define COL 4 #define MAX_NUM 10 int array[ROW][COL] = { { 1, 2, 5, 6 }, { 4, 2, 3, 7 }, { 2, 1, 9, 10}, {10, 3, 7, 4 }, { 8, 7, 6, 0 }, }; int main() { int m[MAX_NUM + 1][MAX_NUM + 1] = { 0 }; int i, j, a, b...
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 配列に格納された数値のペアを探し出す
返信数: 15
閲覧数: 1712

Re: 配列に格納された数値のペアを探し出す

> の部分ですが、これはC言語で言うとどのような処理をしているのでしょうか?
> C言語しか習っておらず、C++はよく分かっていない状態です。

C++のライブラリを使っています。
「stl map」でググりましょう。

C言語には該当するライブラリがないので、同等のものを自作する必要があります。
(探せばあるかもしれませんが)
その場合は難易度が少し上がりますが、C言語で作成しますか?


> 私の書き方がよろしくなかったですね。
> 反省します。

仕様を正確に文章にするのはプロにも難しいものです。
でも、これが書けないとプログラムは尚更書けないので、頑張ってください。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 配列に格納された数値のペアを探し出す
返信数: 15
閲覧数: 1712

Re: 配列に格納された数値のペアを探し出す

> ペアとみなしてもらって構いません。

そうですか。
「他のリングバッファにあるかサーチしていき」とあったので気になったのですが、
ペアでよいなら、かずまさんのプログラムで完璧ですね。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 配列に格納された数値のペアを探し出す
返信数: 15
閲覧数: 1712

Re: 配列に格納された数値のペアを探し出す

データが以下の場合、(2, 5)はペアとみなしますか?

{ 1, 2, 5, 2 },
{ 4, 2, 3, 7 },
{ 2, 1, 9, 10},
{10, 3, 7, 4 },
{ 8, 7, 6, 0 },
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: ループネストの簡略化
返信数: 1
閲覧数: 598

Re: ループネストの簡略化

> 上の例ですと3重程度ですから直接書いても大した問題ではありませんが、
> さらに重なると書くのも大変ですし、ミスも増えてきます。

この程度ならば十分簡潔だと思います。
さらに重なる場合、例えば10段階にネストするような場合でも、
下手な小細工をするよりも簡潔だとは思いますが、
そもそも処理的にどうなのよと思い、アルゴリズムを見直します。

どうしても多重の深いネストが必要な場合は再帰関数を使うでしょう。
実際に何をやりたいのか具体的でないと、これ以上のアドバイスは難しいです。
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 垂線による座標判別について質問です。
返信数: 3
閲覧数: 648

Re: 垂線による座標判別について質問です。

> 説明が中々上手くできなくて申し訳ないです…

画像を見ても何を言っているのか全く分かりません。
何とか説明してもらわないと協力しようがないのでは?
by たいちう
3年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

忙しく日が経ってしまい、読んでもらえないかもしれませんし、 読んでもらえたとしても、くっちゃべーさんにどれほど理解していただけるか判りませんが、 やり残した気がするので一応書きます。 遺伝的アルゴリズムでよくある失敗は、そこそこ成績の良い解に収束してしまい、 最適解を見つけられない事です。 この種のアルゴリズムの宿命のようなもので、決定的な解決方法を私は知りませんし、 多分存在しないと思います。 そこそこ成績の良い解を少々変更しても、成績が下がるだけで、すぐに淘汰されてしまいます。 普通の突然変異がうまく重なって、元の解よりも成績の良い解が得られる確率は非常に小さいでしょう。 TSPを日本の都...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

改善されたとのことで何よりです。

何故、反転が有効なのか全くわからないのならば、
問題の性質やアルゴリズムの特徴を全く理解していないのだと思います。
交叉が何故役に立たない(と私が思っている)のかも、判らないのでしょう。

質問掲示板なので質問は歓迎なのですが、自分で考えることを放棄していませんか?
プログラムが完成したのならば、当然ある程度は考えているとは思いますが、
次は自分が何を作ったのか、考えてみてください。

出し惜しみしたいわけではないですが、回答は数日待ってください。
私としては自明なことなので、どのように説明したら判りやすいか、
(酔って帰った今は)思いつきません。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> 見た目です。怪しいものはのぞいたとしても、明らかに無駄な通り方をしているものが多いです。 どのように「明らか」なのか、具体的に説明できますか? 日本語で正確に説明できるなら、コーディングにすることも難しくないかもしれません。 日本語で説明できないなら、コーディングなんて不可能です。 コーディングできるなら、終了条件に使えますね。 交叉についてですが、TSPには有効でない操作だと私は考えています。 TSPの性質上役に立つはずがないと考えていますし、 実際プログラムに取り入れても改良されませんでした。 この点については、くっちゃべーさんは今回逆の結論を持っているかもしれませんが、 失礼ながら、...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

最短経路を求められるアルゴリズムではないと書きましたが。
何がご不満なのですか?

ちなみに最短経路を得られていないことは、どのように確認しているのですか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: あったかいCCレモンについて
返信数: 3
閲覧数: 715

Re: あったかいCCレモンについて

普通じゃないです。それを買ってみるのが普通じゃないです。
でも私も買ってしまいそうだけど、その場で開栓する勇気はないかな。屋外だとしても。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

仮に、くっちゃべーさんの作ったプログラムを私が作ったら、倍の速さで動くとします。 あるいは、くっちゃべーさんがPCを買い替えたら、 同じプログラムが5倍の速さで動くようになるかもしれません。 「一般的に何分か?」という質問に意味がないことが判るでしょう。 では、どうしたらいいでしょうか。 既にプログラムが完成しているとします。 1分後、3分後、5分後、10分後、30分後、、、などの成績を見てください。 何回も試して、傾向や平均を調べてください。 もし100回試した結果、5分後と比較して10分後の成績がよくなるケースが10回だった場合、 5分の時点で打ち切るべきでしょうか? 100回中1回でも成...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

やはり、自分が何をしているのか、よく判っていなかったのですね。 くっちゃべーさんの取り組んでいる問題、「巡回セールスマン問題」は、 「NP困難」と言われる難しさの問題です。 都市数が5の場合、あり得る経路の数は5!=120通りしかなく、 120通りを全て試して最短経路を見つけるプログラムは簡単に作れるでしょう。 都市数が10の場合でも、経路の数は10!=3628800通りであり、 都市数5と同じ総当たりのプログラムで最短経路を見つけることができます。 今どきのPCなら、殆ど瞬時に見つけられるでしょう。 都市数が20になると、経路の数は20!=2432902008176640000通りであり、 ...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

やはり根本的に誤解しています。
遺伝的アルゴリズムで最短経路が得られる保証はありません。

私が書いた「理論的最適解」と「準最適解」という言葉について考えてみてください。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> 20都市もおそらく時間さえかければ解けると思いますが、 > それでは遺伝的アルゴリズムの意味がありませんので、20都市も1分ほどで解けるようにしたいです。 > 上のコード、さきほどのコード(全体のプログラム)を元に > なにが問題なのかあるいはなにを追加すべき教えて欲しいです。 「解ける」とはどういうことを指していますか? 既に次のように書いています。何か誤解していませんか? ↓ > 遺伝的アルゴリズムに明確な終わりはありません。 > 準最適解を得るためのアルゴリズムなので、 > 時間をかけても最適解が得られる保証はありません。 > >> ちなみに、以前のバージョンで交叉ありの方が成績が良...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> 交叉なし・10都市なら1分ほどと言いますが、なぜそう言い切れるのかわかりません。 > 「突然変異しか遺伝子の中身を変化させることはできず、 > 突然変異ではどれを変化させるかはランダムになっている」 > これだと何分かかるかはそのときの運によりませんか? > 1分終わるときもあれば数分、数十分もしかすると数時間かかってもおかしくないと思うのですが・・・ > 1世代に1度でも確率として少なすぎるのでしょうか? 遺伝的アルゴリズムに明確な終わりはありません。 準最適解を得るためのアルゴリズムなので、 時間をかけても最適解が得られる保証はありません。 都市数が増えると爆発的に探索空間が広がるので...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> 動かすためにゲームエンジンUnityを使用しますが、 > いかがいたしましょう? そのためにC#になったのですね。 > setTotalDistanceとshowRouteの中身についても > Unityの機能を大量に使っています。 showRouteはともかく、setTotalDistanceにはこのライブラリの機能は不要と思いますが。 遺伝的アルゴリズムの部分と、その結果を表示する部分がうまく分かれていないのでしょうか。 ゲームエンジンUnityは、私は触ったことはありません。 特に興味もなく、今後も触る予定はありません。 No.28について言えることは、メソッド名と実際の処理が一致し...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> 自分がきちんと説明できているか不安になってきました。
> また、説明通りにコードが書けているとは思えなくなってきました。
> なのでソースコードを載せます。

不十分です。
これらの関数をどのように呼び出しているかが欠けています。


> また、setTotalDistanceとshowRouteの中身についてはライブラリ?の関数を大量に使っていましたので
> コメント通り問題なく処理できているものだとしてください。

ごちゃごちゃしている部分程、バグがあるものです。
この辺りも省略せずに、動かせるソースを載せてください。
必要ならばデータも。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> ただ、突然変異のタイミングが気になります。 > その点について指摘お願いします。また、その他の気になる点についてご指摘ください。 何が気になるのか具体的に書いてください。 指摘のしようがありません。 その他については、現在の成績が気になります。 例えば5分かかって、理論的最適解に到達できていないとしても、 その時の距離が、理論的最適解と比較して数%長いだけなのか、 数倍もかかるのかでは、状況が全く違います。 > 1.すべての個体を評価 > 2.評価した結果に基づき、評価の高かった順に個体をソート > 3.すべての個体からルーレット方式にて2個体を親として選出。そのまま残して子1と子2とする...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: [雑談] フォーラムルールの変更(掲示板の基本方針変更)について
返信数: 23
閲覧数: 3770

Re: [雑談] フォーラムルールの変更(掲示板の基本方針変更)について

容認すると、丸投げ率が高まるでしょう。
回答をもらえて当然と考える質問者が増えれば、
むしろ殺伐とするのではないでしょうか。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> ・親となったデータには突然変異が起こらないようになっているがこの処理は適切か。 生物学の進化を考えると、一番優秀な個体がたまたま子孫を残せないことは当然あるので、 全遺伝子に突然変異が起こりうる方が「自然」です。 ですがアルゴリズム的には、折角得られた暫定的な最適解が失われてしまうのは避けたいところです。 もしかしたら2度と見つからないかもしれませんので。 処理が適切かどうかは、くっちゃべーさんがどのような処理をしているか、 文章だけでは伝わってこないので判断できません。 例えば10個体だとして、、、 1.全個体(親世代)を評価する。 2.上位2個体をコピーして子1と子2とする。 3.適当...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

大前提として、今は交叉なしの実装の話です。 順序表現の説明のため、将来実装する交叉を引き合いに出してしまった私の落ち度です。 混乱させて申し訳ありません。 > 実際には「平均すると100世代に1回、1つの遺伝子に突然変異が起こる」となっております。 > 1%では低すぎますか? 99世代の間は選択しか行わないことになります。 無駄なだけではなく、その間に遺伝子群の多様性が失われてしまいます。 ちなみに、生物学的な遺伝の知識が乏しいならば、 これを機に軽く勉強することをお勧めします。 多様性が失われることがアルゴリズム的にどういう意味を持つのか理解できると思います。 > これは一様交叉であることが...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

答えやすい方から書きます。 > しかし、総距離の短い2ルートは突然変異しないようになっています。 > 最短の記録消えるなどということは(上の条件で)起こりうることなのでしょうか? > それとも私のプログラムのバグでしょうか? 当然バグです。 デバッグしましょう。 > ここまでを1% の確率で行うようになっています その説明ではまだ曖昧ですので、確認させてください。 以下のどれをさしているのでしょうか。 A) 平均すると、100世代に一回突然変異が起こる。 B) 平均すると、10世代に一回突然変異が起こる。(10遺伝子×10世代に一回) C) 平均すると、12.5世代に一回突然変異が起こる。(8...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> これは遺伝的アルゴリズムがうまくいっていると言えるのでしょうか? 言えないでしょう。 前も書きましたが、交叉がなくても機能するはずです。 交叉で性能が改善されることはありますが、 交叉なしでの性能が悪すぎるという事は、交叉以外の部分にバグがあるのでしょう。 都市数が少ないときはPCのスペックでごまかせても、 都市数が増えると爆発的に探索空間が広がるので、 ごまかしが効かなくなっているのではないでしょうか。 私の予想では深刻なバグがあるので、これから先はバグを潰す作業が最優先ですが、 自分の能力以上のプログラムに取り組んでいる人には難しい作業です。 必ずしも推奨される方法ではないですが、一番...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> 3都市,5都市において交叉なしで解が収束しました。 > ただ、すべてのデータで都市の回り方が同じではなく > 1番良いデータにおいて解が収束しましたが、これでいいわけでよね? > 次のステップとしては何をすべきでしょうか? 「解が収束」が何を指しているのか判りません。 机上での予想通りの最短経路が得られたということですか? そうであれば最低限の部分はできていることになります。 そうでないならデバッグしてください。 次は都市数10です。 もし毎回乱数で都市の座標を決めているなら、 デバッグをやりやすくするために、毎回同じ座標の組を使ってください。 その10都市について、本当の最短経路を総当た...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> とするととてつもない時間がかかりますし、何より総距離はなかなか減っていかないと思います。 > それでも実行して放っていけばよいのでしょうか? 突然変異の発生率を上げてもよいのですが、 10都市でとてつもない時間がかかるならば、 プログラムが正しく作れていない可能性もあります。 例えば、5都市でプログラムを作ってみてはいかがですか。 あるいは3都市とか。必ず最短経路が得られますか? > また、終了条件としてはすべてのデータで都市の回り方が同じになったらとなっていますがこれでいいですか? これはナンセンス。遺伝子の多様性を放棄しています。 最終的な解はトップだけ取り出せばいいのです。 ただ、一...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> このように変わる突然変異をしております。
> 確認が取れたところで以下の(3)ですが、
> 10都市に変えて何をすべきなのでしょうか?交叉はまだ切り離していますよね?

交叉なしで解決してないのですよね?
それならば原因を突き止めて解決するだけですが。

何を困っているのか状況が判りません。
もう少し説明をしてもらえないと、アドバイスのしようがありません。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

> (2)に従いましたが、質問です。このとき交叉は完全に切り離しているので > 総距離が変わる。すなわち都市の通る順番が変わるためには突然変異しかありませんよね? > これだと総距離が減っていくとは言えないと思うのですが、減っていくような突然変異ってあるのでしょうか? > というよりそれは突然変異なのか?って思ってしまって質問しました。 > おそらく、私の解釈がおかしいのだと思います。 都市の訪問順について、 ABCDE... ↓ BACDE... のように変わることを突然変異と言っています。 私が勝手に言っているのではなく、一般的な表現と思ってください。 このときに、総距離が増えるときもあれ...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

「ひっすー」さん == 「くっちゃべー」さんでしょうか。 名前を統一してください。フォーラムルールも確認してください。 > やっぱり交叉以外の部分が問題のようですね。 うまくいっていない ↓ 交叉を変更 ↓ やはりうまくいっていない この状況のみから言えることは、あまりありません。 交叉の変更前と変更後のそれぞれに問題があるかもしれないし、 交叉以外の部分に問題があるかもしれないし、 交叉と交叉以外の両方に問題があるかもしれません。 > 以下のように回答されましたが、どうすればこのことが確認できるのでしょうか? > 突然変異の確率を上げてデータすべての通る都市の順番が同じになるまで待つとかでし...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: C/C++ 実行速度
返信数: 5
閲覧数: 2307

Re: C/C++ 実行速度

> また、最適化を行わないで、java以上の速度を望めるのかです。 ここで言う最適化は、何を指しているのでしょうか? プログラマが色々工夫した結果でしょうか? コンパイラが最適化した結果でしょうか? 例として挙げているコードでは、演算した結果を使っていません。 最近のコンパイラが本気で最適化したら、forループを実行しないのではないですか? 実行結果が20秒もかかっていることから、デバッグモードでビルド・実行したのではないかと思いますが、 コンパイルオプションなど、ビルドの設定を教えてください。 速さを求めるならば、コンパイラに最適化させないで他の言語と比較しても意味がないと思います。 意味が...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 遺伝的アルゴリズムについて
返信数: 48
閲覧数: 5381

Re: 遺伝的アルゴリズムについて

交叉についてまずい所もありますが、それ以前の問題のような気がします。
遺伝的アルゴリズムは、突然変異と評価と選択さえ機能すれば、解が収束するはずです。
一旦、これらの機能のみを正しく作り、完成後に交叉を実装してはどうでしょうか。

おそらく交叉なしでも、うまく動いてないのだと思いますが、
適当な指摘のためには、ソース全体を載せてください。必要ならば都市のデータも。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: C++におけるdelete hoge と delete[] hogeの使い分けについて
返信数: 10
閲覧数: 4804

Re: C++におけるdelete hoge と delete[] hogeの使い分けについて

> 気になったのはこっちです

deleteしなくてはならない配列の要素数が判らなくて困ります。

配列でも配列じゃなくても、常にdelete[](あるいは常にdelete)するような設計も可能だったかもしれませんが、
C++ではそのような文法は採用されませんでした。

# 不採用の理由は、時代的にコンパイラの実装が面倒になるからかな?
# あるいは、プログラマに自由と責任を与えるC言語の方針の踏襲かも。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: Hello worldよりもっと前の議論
返信数: 30
閲覧数: 9141

Re: Hello worldよりもっと前の議論

> windowsapiって本当何でもできますね。恐れ入ります。
> でもwindowsapiって使えるようになったのって最近じゃないですか?
> windows95時代windowsapiを使えるそんな環境ってあったんでしょうか?

私が触ったことを今思い出せる範囲に限っても、例えば、
1998年発売のVC++6.0なんかでは普通に使えてました。
VB6やDelphi5でも使えましたし、それ以前のバージョンでも使えてましたよ。

使えなかったとしたら、Windows自体が使い物にならず、普及しなかったでしょうね。
Windows95時代のプログラマはどうしていたと思っていたのですか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム3
返信数: 14
閲覧数: 1482

Re: 数独を解くプログラム3

> 結果はというと、誤入力が大幅に減りました。 > ですが、実際に埋めて、それが正解というのも増えていません。 > 条件を厳しくしたからだと思います。なんとか6月中には完成させたいです。 > プログラム、アルゴリズムに対するご指摘よろしくお願いします。 結構プログラムは書けていると思いますが、根本的な考え方が間違っていると思います。 数独の解き方についてではなく、プログラムの作り方についてです。 誤入力が減ったとありますが、誤入力することが一度でもあるならば、それはバグです。 条件を厳しくしたから正解が増えていないと推測していますが、 条件には正しい条件と間違った条件しかありません。 いい塩梅...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 大学院入試の問題です!解けません!
返信数: 14
閲覧数: 1876

Re: 大学院入試の問題です!解けません!

題意としては、2重のforループでf1と同じ処理を書け、だと思います。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム3
返信数: 14
閲覧数: 1482

Re: 数独を解くプログラム3

「GとFで7と9が使われるので、下段左ブロックに注目すると、Hには1または6が入ることになります。」

言い換えると、

「GとFで7と9が使われるので、同じブロックのHには7と9は入りません。」

この処理が抜けていませんか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム3
返信数: 14
閲覧数: 1482

Re: 数独を解くプログラム3

時間がないのでNo.10のプログラムはちゃんと見ていません。 No.7のプログラムで致命的な点を2つ見つけていたのですが、 どうやらそれは修正されたようですね。 > 結果的にどこかのマスのフラグを1つに絞れるつもり(今なら6より7,9。7,9より1のみになる)なのですが、 > 代入まで持っていくことができません。 予想と結果が違うんですよね? 結果は突然湧いて出てくるわけではなく、途中経過を経て結果が導かれます。 プログラムを作るときに予想していた途中経過は、どこまで予想通りでしたか? それをちゃんと確認しましょう。 # もしかして、すごく原始的な開発環境なのですか? # Break Poin...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 大学院入試の問題です!解けません!
返信数: 14
閲覧数: 1876

Re: 大学院入試の問題です!解けません!

> (1)は実際にプログラムを再現してみて、値を代入したら答えはわかるのですが、 > このような筆記試験では頭の中で場合分けを重ねて時間をかけて答えをだすしかないのでしょうか。 大学院の難易度や、院試全体でのこの問題の難易度が判りませんが、情報系の大学院なら、 この程度の問題を時間をかけずに答えを出すことが期待されているのではないでしょうか。 (1)が何をするプログラムか日本語で正確に説明できますか? 何かをするプログラムを自分で考えて自由に作れるようになれば、 プログラムを読んで、何をするプログラムなのか判るようになります。 圧倒的に練習不足でしょう。 > (2)は題意はわかるのですが、まっ...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム3
返信数: 14
閲覧数: 1482

Re: 数独を解くプログラム3

次はこれですね。 > 中段左ブロックで6が入るのはDEだけになります。 > 従って、縦並びのFには6が入らず、Fに入るのは7と9だけとなります。 Fのタテヨコとブロックを見ると、6・7・9の可能性がありましたが、 中段左ブロックの6の入るマスがD・Eのみになったことから、 Fから6の可能性がなくなりました。 判定の原理は「Cに6が入らない」を導いたのと同じはずです。 順々にやっていって、どこまでコーディングとテストができますか? # プログラムに無駄は多そうですが、できればまず完成させましょう。 # あれこれ効率を考えて未完成よりは、冗長でも完成させた方が、 # よほど価値があります。 # と...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム3
返信数: 14
閲覧数: 1482

Re: 数独を解くプログラム3

> ただ、上のようにしてHに1が確定することはわかりますがプログラムにできません。 > そもそもこの解き方はn国同盟と関係あるのでしょうか?それすらわかってません。 > 何をどうデバッグして、何を見たらよいのでしょうか? Hが確定する理由は判りました。 一方、「n国同盟」という用語は定義が曖昧な印象を感じていますので、 この解法が「n国同盟」なのかは判断付きません。多分違うと思いますが。 「n国同盟」という解法も万能ではないでしょうから、 解けなかったからといって不具合があるとは限りません。 n国同盟が正しく実装できれば、「このマスのこのフラグはクリアされるはず」、 というマスを探し、予想通り...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム3
返信数: 14
閲覧数: 1482

Re: 数独を解くプログラム3

前スレを読み返してみたけど、デバッグするようにさんざん指摘していますね。
今回も同じことです。

後で時間が取れたときに見るかもしれませんが、
それを待つよりもご自分でデバッグした方が早いかもしれないし、
何より建設的ではないですか?

(問題として間違っていなければ)数独が必ず解けるのと同じように、
この種類の不具合は必ず原因を突き止められます。
何故しないのですか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム3
返信数: 14
閲覧数: 1482

Re: 数独を解くプログラム3

今回は私がやっときましたが、前スレと「n国同盟」とやらを説明するサイトへのリンクを貼りましょう。

前スレ
数独を解くプログラム2
参考サイト
ナンバープレース、数独 解法まとめ

それと、現在「n国同盟」が正しく実装されたら解けると考えている問題も、
ソースコードに埋め込んでもらえると、デバッグしやすいです。
酒を飲み始めてしまったので、今日はここまでです。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 【アンケート】ドラクエ1を一人で作ろうとしたらどの程度の年月がかかりますか?
返信数: 7
閲覧数: 3427

Re: 【アンケート】ドラクエ1を一人で作ろうとしたらどの程度の年月がかかりますか?

伸びませんね。 ソフト屋さんとru-puさんの回答を比べるだけでも、私としては興味深いのですけどね。 「詳細に仕様を検討しないと分からない」「仕様で悩む必要のない」と、 全く逆のことを書かれています。 経験年数は30年以上だけど、ゲームを作ったことのない私としては、 本業が忙しすぎなければ、DXライブラリ等の習得を含めても、 余裕を見て3か月くらいかなと思っていました。 回答を書くつもりはありませんでしたが。 ソフト屋さんの回答を見ると、ゲームのプロだけあって、 大ヒットする商品として作ろうとしているでしょうね。 あるいは完璧なイミテーションか。 経験や知識があるほど、ハードルが上がるようです...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列を連番で繋げて埋めるロジック
返信数: 6
閲覧数: 960

Re: 二次元配列を連番で繋げて埋めるロジック

リンク先の説明でもどんなゲームか判りませんでした。

> 自分の周囲にひとふでで書けるマスが何マスあるか?みたいなのを表示させたいです。

この部分をもっと厳密に説明することはできますか?
私には伝わらないし、プログラムを作る以上、絶対必要です。

それと最大サイズについてですが、リンク先に表示されている6×6ですか?
この程度ならwhileを使った原始的な方法でも、あまり問題にならないのではないかと。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列を連番で繋げて埋めるロジック
返信数: 6
閲覧数: 960

Re: 二次元配列を連番で繋げて埋めるロジック

真面目に考えると、かなり難しそうな問題なのですが、
盤面の大きさはどの程度までを想定しているのですか?
そして用途は何ですか?場合によってはベターな提案が得られるかも。


> 4以上ならその場合がなくなる気もするのですがどうなのでしょうか。

奇数×奇数なら起こりえるのです。
サイズと出発点が与えられたら、瞬時に判定できるのですが。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: directXについて
返信数: 34
閲覧数: 2807

Re: directXについて

No.14で指摘されているように、どんなエラーか正確に書かないと。
No.15のエラーは、windows.hがインクルードされていないから発生しています。
プロジェクトを新しく作って、下のコードをビルドすることはできますか?

コード:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    return 0;
}
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: directXについて
返信数: 34
閲覧数: 2807

Re: directXについて

> >>17
> どうやればいいのでしょうか・・・

先頭に #include <windows.h> を追加するとどうなりますか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: メモリリークやメモリ破壊について
返信数: 7
閲覧数: 1876

Re: メモリリークやメモリ破壊について

仕事でC++を使っていたのは5年程前までですが、 その頃にはそのようなツールは大変高価なものでした。 今はフリーで適当なのがあるかもしれませんが、 メモリリークならば、普通にデバッグできないことが問題です。 Aozora0630さんの質問や他の質問者への回答を見て感じるのは、 かなり基本を疎かにしているようだな、ということです。 あちこちからソースコードをコピーして、うまくつなぎ合わせれば、 そこそこのものができ上がるかもしれませんが、 基本を身に付けておかないと、先に進めなくなる時が必ず来ます。 ツールにできることは、必ずプログラマにも可能です。 よい機会なので、じっくりとデバッグをしてみて...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

> p.s 現在のコードは載せるべきですか? 掲示板のルールに次のように書かれています。 「また、解決した時は、「解決しました」とだけ言って去らず、ソースコードや解決した方法を明記して下さい。」 まだ完全に解決はしてないと思いますが、キリが良いところで載せてもらいましょうか。 誰かの役に立つかもしれませんし、別の指摘をもらえるかもしれません。 最後に、最初から気になっていたけどスルーしていた点。 細かいことですが、次のように書き換えた方がよいと思います。 「Size + 1」という式に意味はありませんので。 for (int Num = 1; Num < Size + 1; Num++) ↓ ...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

> →書いていますとのことですが、これは残ってしまった空白はバックトラック法で解くということでしょうか?

単純なバックトラック以外についてだと、No.2、No.3、No.6、No.7に書かれています。
意味が判らないなら、その旨を質問してください。


> みると、左上のボックスに4が二つ入っています。
> これをみる限り、コードがまちがっていると思うのですが、間違いはありませんか?

当然間違っています。判りますよね?
これは、「問題が難しくて解けない」という状態ではなく、
「考え方か実装に間違いがあるから解けない」という状態です。
何度も書いていますが、なぜデバッグしないのですか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: ネットワークを作成するプログラムにおいて特定の条件下で起きるエラーについて
返信数: 5
閲覧数: 709

Re: ネットワークを作成するプログラムにおいて特定の条件下で起きるエラーについて

95行目でNPotentialが300になっていたため、実行時エラーが発生しています。
PotentialIDの配列のインデックスとして有効な範囲はわかりますか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

頑張りましたね。

> また、下のように指摘されたところも修正したつもりですが、
> これは機械的に入れ替えていることになっているのではないでしょうか?
> もし、そうだとしたら論理的に入れ替えるとはどういう意味なのか教えて下さい。

なぜ入れ替えたのか、説明ができるなら結構です。


> 実行結果については、同じ数字を行・列・ボックスに2つ以上入れるようなことはなくなりました。
> しかし、多くの空白を残しています。なんとしても解けるようにしたいです。
> たくさんのご指摘お待ちしております。

この件については、私もyokoさんも既に書いています。
それ以上に何が必要なのですか?指摘の数?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: ネットワークを作成するプログラムにおいて特定の条件下で起きるエラーについて
返信数: 5
閲覧数: 709

Re: ネットワークを作成するプログラムにおいて特定の条件下で起きるエラーについて

やりたいことは全くわからないけど、main()の変数sizeをグローバル変数にして、
Rand()を標準関数のrand()にしたところ、vectorの範囲外へのアクセスで落ちました。
51行目とかは正しいの?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: ネットワークを作成するプログラムにおいて特定の条件下で起きるエラーについて
返信数: 5
閲覧数: 709

Re: ネットワークを作成するプログラムにおいて特定の条件下で起きるエラーについて

取りあえず、コンパイルできるコードを載せてみては?
エラーの再現はおろか、Rand()の範囲やsizeの値すらわからない。
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

solve()とsolve2()を見てみました。 どちらも無駄は多いですが、致命的な誤りはありません。 慌てて直す必要はないですが、一応伝えると、 206行目と207行目、221行目と222行目は、それぞれ入れ替えた方がいいです。 機械的に入れ替えるのではなく、論理的な意味を考えて入れ替えてください。 ここまでの修正をすると、2つの関数はどちらも、for(Line)、for(Column)、ifで始まります。 ifの内側の前半にsolve()由来のコード、後半にsolve2()由来のコードを書くことで、 まとめることができるでしょう。 まとめるべきか、ということについては、私ならまとめません。...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

> 具体的にはボックス・列・行に2つ以上同じ数字を入れてしまうなどです。 同じ問題に対して同じタイミングで必ず起きる現象なので、デバッグとしては非常に簡単な部類です。 この程度の規模のプログラムにも、必ず必要なスキルですので、上達したいなら必ず身に付けてください。 > ちなみにfilledGrid()を少し直しても、解けませんでした。 ↑と書きましたが、タテヨコだけではなく、ブロック内の可能性も消す必要がありました。 それも直したら、完成しました。 solve()とsolve2()の関係については、まだ丁寧に見てません。 色々とちぐはぐな所があるようですので、重要な問題を指摘しにくいです。 続...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

> 上のyokoさんの5番を実装したつもりなのですが、以前よりも解けなくなってしまいました。 > 具体的にはボックス・列・行に2つ以上同じ数字を入れてしまうなどです。 デバッグしましょう。工夫してください。 とりあえず、filledGrid()の実装が間違っています。 ある数字を入れたら、可能性を消すのはそのマスだけではなく、 タテヨコに同じ数字が入る可能性も消さなくてはなりません。 ちなみにfilledGrid()を少し直しても、解けませんでした。 solve()の実装は間違ってないようで、 solve2()で数字が決まるたびにreturnするようにしたら、 wikipediaの問題が解ける...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

> もし仮にyokoさんのプログラムと似たプログラムをつくったとして、 > 皆さんは人間に近いと思いますか?それとも大きく離れていると思いますか? > あくまで率直な意見で構いませんので回答お願いします。 バックトラックの部分が人間らしくないと思います。 プログラミングは簡単なのですが。 人間が難問を解くための定石が他にもあるので、 それを実装すると人間らしいのではないでしょうか。 それでも解けない問題があった場合も、とことん深さ優先のバックトラックではなく、 反復深化のような方法を取ると人間らしくなるかも。 # 人間らしく数独を解く、というテーマが、 # 人工知能に近づいているとも思えないの...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 数独を解くプログラム2
返信数: 25
閲覧数: 3136

Re: 数独を解くプログラム2

よっぴーさん自身は、難しい問題を解くときにどうしていますか?
その方法を忠実にコーディングしたら、人間に近いアルゴリズムになりませんか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: 文字の宣言はint型?
返信数: 7
閲覧数: 1631

Re: 文字の宣言はint型?

著者が間違えている場合は論外なので、今は普通の著者を想定します。 (1)このような理由から、(2)こういう場合には、(3)これはこうすべきである。 というような事が書いてあったのではないでしょうか。 雑誌の記事の見出しなどが「これはこうすべきである」となっていることがよくあります。 著者は自分の記事を読んでほしいので、見出しをセンセーショナルなものにすることがあります。 一般的には「これはこうすべきでない」ということが常識とされているときに、 あえて「これはこうすべきである」という見出しを付けることもよくあります。 記事を読んだら「特殊な状況では一般的常識を無視すべきこともある」 といった程度...
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: VS2013のエラー
返信数: 3
閲覧数: 1150

Re: VS2013のエラー

そんな時はエラーメッセージでググってみましょう。
もしまだならば、↓を試してください。

vs2012 error: package 'visual c++ package' failed to load
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: このプログラムのポインタ演算について質問があります
返信数: 19
閲覧数: 5961

Re: このプログラムのポインタ演算について質問があります

> そこは1個ずつ消しているので、効率は悪くてもメモリリークにはならない気がします。

freeの引数は必ずNULLになりませんか?
by たいちう
4年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル名を変更するシステム
返信数: 29
閲覧数: 3939

Re: ファイル名を変更するシステム

とりあえず、かずまさんのプログラムを何故動かせないのか理解してはどうでしょうか。
プロジェクトのプロパティで、文字セットをUNICODEからマルチバイトに変えてみてください。

↑のキーワードをいろいろ調べてみましょう。
そうしないと、みけCATさんのアドバイスも、不思議な呪文で終わってしまいます。

詳細検索ページへ移動する