検索結果 42 件

by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: 幅優先探索で発生するメモリエラー
返信数: 2
閲覧数: 2328

Re: 幅優先探索で発生するメモリエラー

next_x,yの存在を忘れて、謎の座標を渡しておりました・・・
まだまだ精進が足りないようです。
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: 幅優先探索で発生するメモリエラー
返信数: 2
閲覧数: 2328

幅優先探索で発生するメモリエラー

https://dixq.net/forum/viewtopic.php?f=3&t=19902 過去にこちらでみけCAT様にご回答いただいたアルゴリズムを元に再び幅優先探索を作成したのですが、とあるところで「expression vector subscript out of range」のエラーが出てしまいます。 既にご回答いただいているので、自分の力で解決したかったのですが、一行一行デバッグをかけても、何故ここでエラーが発生しているのか私ではわかりませんでした・・・ またお力をお貸しください。 プレイヤーを追いかける敵のルートを探すのに使用しています。 OS:Windows10 コンパイ...
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: cinで入力した数値を横並びにしたい
返信数: 16
閲覧数: 7966

Re: cinで入力した数値を横並びにしたい

std::coutというのは独特で、<<(左シフト演算子のオーバーロード)を利用して文字等を出力します。←まだ覚えなくていい 変数や文字列同士は << で区切ると覚えておいてください。 #include <iostream> int main() { int data1 = 0, data2 = 0; // 数値を入力 std::cin >> data1 >> data2; // 横並びに出力 std::cout << data1 << ", " << data2 << std::endl; return 0; } また、scanfのエラーですが、scanfやfscanfなどは、バッファオーバ...
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: cinで入力した数値を横並びにしたい
返信数: 16
閲覧数: 7966

Re: cinで入力した数値を横並びにしたい

入力した数値を横並びに表示したいのでしょうか?
言葉だけでは理解しにくい部分もあるので、scanfで書いたプログラムをここに提示してくれれば、より正確な回答を得られると思いますよ。
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 7396

Re: ラムダ式はいらない子?

ファイルをオープンできなかった場合の処理について普通に失念しておりました・・・ハズカシイ

その記述は一番最初に思いつきましたが、下記のようにしていたため、エラーを出しまくって諦めてました・・
コントラスタで引数を取ることで、そのような書き方ができたんですね。

コード:

// 述語関数を関数オブジェクトで記述して、for_eachに渡す
	struct Output {
		void operator() (ofstream &o, int x) {
			of << x << ((x % 2) ? "は奇数です" : "は偶数です") << endl;
		}
	};
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 7396

Re: ラムダ式はいらない子?

一見何が変わるのかわかりませんでしたが、いざ作ってみるとあ~ら不思議。なかなかうまくいかない... ラムダ式では、キャプチャの機能を使用することで簡単に外部の変数などにアクセスできますが、関数オブジェクト等の場合、for_eachなどのテンプレートでは直接関数の引数を記述することができないため、非常に面倒ったんですね。 ラムダ式の他にも様々な方法がありましたが、どれも非常に分かりづらい&面倒くさいでラムダ式を使わない理由がないと思うほどです。 当たり前のように利用していたキャプチャですが、なくなって初めてその大切さに気付きました。 #include <iostream> #include <f...
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 7396

Re: ラムダ式はいらない子?

なるほど・・・関数型プログラミングを学ぶことで、より理解が深められそうですね!
本気でラムダ式を利用しようとなると、プログラミングの考え方から見直さないと駄目みたいです(笑)

見やすさ、バグの生まれにくさという点で関数型のほうが圧倒的に優れているように見えますし、コーディング時間も短縮できそうで、関数型が流行るのも納得という感じです。

全くの余談ですが、関数型よりも命令型のほうが「俺今めっちゃプログラミングしてる」感はありあすね。
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 7396

Re: ラムダ式はいらない子?

変数のように扱える関数という点も面白いですね
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 7396

Re: ラムダ式はいらない子?

なるほど、確かに短い関数の場合は、外部に関数を作って・・・とするのが少し面倒だとは思っていました。
よくよく考えてみれば、ラムダ式のような「別に無くても作れるけどあると便利だよね」というような機能は他にもたくさんありましたね。
言ってしまえばテンプレートもそれにあたりますし。
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 7396

ラムダ式はいらない子?

お世話になっております。 C++11にて、ラムダ式なるものが追加されました。 「猫でもわかるC++プログラミング」には、述語関数で利用するとちょっぴり便利などと言うようなことがかかれていますが、正直私ほどのレベルではこれだけのためにわざわざラムダ式を追加する必要があったのかな?と感じてしまいます。わざわざ追加されているということは、何か有用な使い方があるはず! 是非ご教授ください。 #include <iostream> #include <algorithm> #include <vector> #include <windows.h> using namespace std; int ma...
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: 未解決の外部シンボル(T_ChangeNum(int))が参照されました
返信数: 5
閲覧数: 4811

Re: 未解決の外部シンボル(T_ChangeNum(int))が参照されました

大きなクラスを作る際(今回はテスト用なので小さいですが)、ごちゃごちゃして見づらくなってしまうと考え、ファイルを分割しておりました。
やはり同じファイルにまとめて書いた方がよさそうです、ありがとうございました。
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: 未解決の外部シンボル(T_ChangeNum(int))が参照されました
返信数: 5
閲覧数: 4811

Re: 未解決の外部シンボル(T_ChangeNum(int))が参照されました

inlineはヘッダファイルのみで実装するのですね、失念しておりました。
しかしこれでは、若干動作が遅くなってしまうのではないでしょうか。
by 遊び人
5年前
フォーラム: C言語何でも質問掲示板
トピック: 未解決の外部シンボル(T_ChangeNum(int))が参照されました
返信数: 5
閲覧数: 4811

未解決の外部シンボル(T_ChangeNum(int))が参照されました

以下のようにプロジェクトを分割した際、test.cppを読み取ってくれずタイトルにあるエラーがでてしまいました。 どのようにすれば正常に動作するのでしょうか? //main.cpp #include <iostream> #include "test.h" using namespace std; int main() { Test test; test.T_ChangeNum(4); cout << test.T_GiveNum() << endl; return 0; } // test.h #pragma once #include <iostream> class Test { pri...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: Wordに文字列を書き込む際、文字のフォントとサイズを指定したい
返信数: 2
閲覧数: 3896

Re: Wordに文字列を書き込む際、文字のフォントとサイズを指定したい

word内ではクリック数回でできてしまいますが、外からは難しいのですね・・・
今は潔く諦めます(´・ω・`)
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: Wordに文字列を書き込む際、文字のフォントとサイズを指定したい
返信数: 2
閲覧数: 3896

Wordに文字列を書き込む際、文字のフォントとサイズを指定したい

お世話になっております。タイトルの通りです。 Wordでは文字のフォントとサイズを変更することが可能です。 それをプログラムの中で指定したいのですが、可能でしょうか? 今回は、文字フォントを「MS 明朝」に、文字サイズを14に。 使用しているオフィスソフトはWPS Writerです。 開発環境 コンパイラ:Visual Studio 2017 C++, OS:Windows10 #include <iostream> #include <string> #include <fstream> using namespace std; bool ExportToFile(const char *s...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: 素材を実行ファイルとは別のフォルダに保存したい
返信数: 2
閲覧数: 1561

Re: 素材を実行ファイルとは別のフォルダに保存したい

Rei様、ご返答ありがとうございました。
無事解決できました。
詳細な説明を書いてくださりとても助かりました。
これでぐちゃぐちゃになっているファイルの中からexeファイルを1分以上探し続けるという事態がなくなります。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: 素材を実行ファイルとは別のフォルダに保存したい
返信数: 2
閲覧数: 1561

素材を実行ファイルとは別のフォルダに保存したい

お世話になっております。
DXライブラリにてゲーム等を作成する際、実行ファイル(exe)とゲームに使用する素材(画像、音楽等)が同じフォルダに入っていなければ実行ファイルが読み取ってくれません。
使用する素材が増えるとフォルダ内がごちゃごちゃして見にくくなってしまいますので、以下の画像のように分割したいのですが、可能でしょうか?

可能ならば方法を教えて下さると助かります。
開発環境はVS2017C++、Windows10です。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: 複雑な障害物を迂回してゴールにたどり着きたい
返信数: 4
閲覧数: 2876

Re: 複雑な障害物を迂回してゴールにたどり着きたい

再帰を用いると物凄くシンプルになりますね。
CanPassFieldの最適化もありがとうございます。
やっぱりswitchで長々と書くのは綺麗ではないですね。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: 複雑な障害物を迂回してゴールにたどり着きたい
返信数: 4
閲覧数: 2876

Re: 複雑な障害物を迂回してゴールにたどり着きたい

無事解決できました、ありがとうございます!
分かりやすくコメントを付けてくださいありがとうございます。
本格的なアルゴリズムというものを見たことがなかったので衝撃的でした。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: 複雑な障害物を迂回してゴールにたどり着きたい
返信数: 4
閲覧数: 2876

複雑な障害物を迂回してゴールにたどり着きたい

お世話になっております。 ゲームのAI(Artificial incompetence)を作りたいと考えているのですが、目的地への移動がうまく出来ずにいます。 先に目的地へのルートを見つけた後でそれに沿って移動するという予定なのですが、 複雑な障害物がある場合、どのようなアルゴリズムを組めば良いのかわかりません(´・ω・`) ご助言お願い致します。 プレイヤー(スタート地点)は上下左右に一マスずつ移動できます。 #include <iostream> using namespace std; constexpr int FIELD_SIZE = 6; void Display(int fiel...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: 宣言の順番について(c++)
返信数: 3
閲覧数: 4168

Re: 宣言の順番について(c++)

回答ありがとうございます。
変数等の命名規則やconstexpr intなどを使うべきなど、参考書にはあまり書かれていないので勉強になります。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: 宣言の順番について(c++)
返信数: 3
閲覧数: 4168

宣言の順番について(c++)

お世話になっております。 プロジェクトを分割しないことと仮定して、 現在私は、クラスや関数の宣言の順番を[define]→[include]→[関数の宣言]→[グローバル変数の宣言] →[クラスや構造体の宣言]→[main関数]としています。 この順番が正しいのか間違っているのか分からないので、参考までにお伺いしたいのですが、 皆様はどうなさっておりますか? こうした方が良いなど意見下さると助かります。 また、現在変数、クラス、関数の名前の付け方が全て一緒なのですが、皆様は区別してらっしゃいますか? #define aaaa 114514 #include <iostream> using n...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: コントラスタに引数があるクラスの動的確保
返信数: 8
閲覧数: 13683

Re: コントラスタに引数があるクラスの動的確保

デフォルトコントラスタを作らなくてもできる方法があったんですね!
かずまさんのコードが綺麗で個人的に気に入りました。
ポインタって奥が深いですね。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: コントラスタに引数があるクラスの動的確保
返信数: 8
閲覧数: 13683

Re: コントラスタに引数があるクラスの動的確保

どちらにしてもデフォルトコントラスタは作らなければならないようですね・・・ どちらを使用するか迷いますが 以後plaement newを使用させていただきます。 皆さんありがとうございました! #include <iostream> #include <random> #include <new> using namespace std; class A { private: int a; public: A() : a(0) { } A(int num) : a(num) { } void show_a() { cout << a << endl; } }; int main() { int...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: コントラスタに引数があるクラスの動的確保
返信数: 8
閲覧数: 13683

Re: コントラスタに引数があるクラスの動的確保

回答ありがとうございます。
確かにそのようにすればプログラムは動きますね!
動的確保の場合コントラスタに引数があると難しいですか(´・ω・`)
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: コントラスタに引数があるクラスの動的確保
返信数: 8
閲覧数: 13683

コントラスタに引数があるクラスの動的確保

お世話になっております。 例えば以下のようなプログラムがあったとき、21行目にてクラスの動的確保を行っているのですが、コントラスタに引数が必要な場合、 以下のような書き方などではコンパイルエラーになってしまいます。 どのように書けばエラーにならないのかお教えください(初期化は何行になっても構いません) #include <iostream> #include <random> using namespace std; class A { private: int a; public: A(int num) : a(num) { } void show_a() { cout << a << en...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: フレンドクラスからxの値が変更できない
返信数: 4
閲覧数: 3228

Re: フレンドクラスからxの値が変更できない

皆様分かりやすい説明をありがとうございます。
フレンドクラスでも変数の寿命が適応するのですね・・・
とても良い勉強になりました。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: フレンドクラスからxの値が変更できない
返信数: 4
閲覧数: 3228

Re: フレンドクラスからxの値が変更できない

change_Axの引数を参照渡しにすることで値を変更することができました。ありがとうございます。 void change_Ax(A &name, int num) { name.x = num; } しかし「猫でもわかるC++プログラミング」という書籍のP299では、参照渡しではなく値渡しでxの値を変更できると書いてあります。これはどういう意味でしょうか? class A { int x; public: A() : x(10) { } friend class B; }; class B { public: // フレンドクラスなので、xの値を変更できる void change_x(A a...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: クラスのメンバ配列の初期化
返信数: 5
閲覧数: 3307

Re: クラスのメンバ配列の初期化

色々な方法があるのですね。 A() : test{} { }のやり方ではたくさんの要素を初期化するのが面倒くさいのでfor文かfillを今後使用させていただきます。 ご意見ありがとうございました。 #include <iostream> using namespace std; class A { private: int test[10]; public: A() { //コントラスタ for (int i = 0; i < 10; i++) { test[i] = 0; } } int give_a(int num) const { return test[num]; } }; int m...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: フレンドクラスからxの値が変更できない
返信数: 4
閲覧数: 3228

フレンドクラスからxの値が変更できない

以下のプログラムにて、classAのフレンドクラスであるclassBはclassAのxを参照することはできるのですが、 xの値を変更することができません。 これは元々フレンドクラスから値を変更することができないのか、 何か記述忘れがあるのか、 それともclassBはまだ完全にclassAと友達になれていないのか、 教えてください。 OS:Windows10 コンパイラ:Visal Studio 2017 #include <iostream> using namespace std; class A { private: int x; public: A() : x(10) { } void ...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: クラスのメンバ配列の初期化
返信数: 5
閲覧数: 3307

Re: クラスのメンバ配列の初期化

ちなみにc++11以前はどうしていたのでしょうか?
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: クラスのメンバ配列の初期化
返信数: 5
閲覧数: 3307

Re: クラスのメンバ配列の初期化

なるほど!
普通の配列と同じ初期化の仕方でよかったんですね・・・
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: クラスのメンバ配列の初期化
返信数: 5
閲覧数: 3307

クラスのメンバ配列の初期化

c++初心者です。 例えば以下のようなようなコードがあったとき、test[10]をすべて0で初期化したいのですが、 コントラスタでtest[0](0)のようにしてもエラーになってしまいます。 どのようにすれば配列を初期化できるのでしょうか? #include <iostream> using namespace std; class A { private: int test[10]; public: //こ↑こ↓ A() : test(0) { } //コントラスタ //-------- int give_a(int num) { return test[num]; } }; int mai...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: DxLibのGetRand()とstdlibのrand()の違いについて+α
返信数: 9
閲覧数: 11015

Re: DxLibのGetRand()とstdlibのrand()の違いについて+α

詳しい情報をありがとうございます。
rand関数にも汎用性等でGetRand関数に勝っている部分があったんですね。
rand関数が要らない子にならなくてよかったです。

時間計測についてはやはり方法が少ないのですね・・・
GetNowCount関数?とやらもあるようですが、私はclock関数を使うことになりそうです。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: DxLibのGetRand()とstdlibのrand()の違いについて+α
返信数: 9
閲覧数: 11015

Re: DxLibのGetRand()とstdlibのrand()の違いについて+α

なるほど!GetRand関数は初期化の必要がない上にrand関数より高性能だったんですね・・・
今まで知らずに損をしておりました、ありがとうございます。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: DxLibのGetRand()とstdlibのrand()の違いについて+α
返信数: 9
閲覧数: 11015

DxLibのGetRand()とstdlibのrand()の違いについて+α

c言語(+DXライブラリ)にてゲームを作る際、乱数は必要不可欠です。
普段はstdlib.hのrand関数とsrand関数を用いているのですが、
DXライブラリにはGetRand関数とSRand関数があり、その違いがよく分かっておりません。
また、どちらを使用したほうが良い?のかも教えて下さい!
開発環境はVisalStudio2017を使用しており、OSはwindows10です。

【+α】
題名とは全く関係のないことですが、現在制限時間等の時間計測にはclock関数を用いています(それしか知らないのですが)。
もし他に有用な時間計測ができる方法がございましたらお教えください。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: temp()の回数が2の倍数回だと入れ替わらない
返信数: 2
閲覧数: 1970

Re: temp()の回数が2の倍数回だと入れ替わらない

なるほど、srand関数は一度だけでいいのですね・・・
勘違いしておりました、ありがとうございます!
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: temp()の回数が2の倍数回だと入れ替わらない
返信数: 2
閲覧数: 1970

temp()の回数が2の倍数回だと入れ替わらない

文字列同士を入れ替えるtemp()関数を何度か繰り返す場合、2の倍数回だと何度やっても入れ替わりません。 理由が分かる方がおられましたらお教えください。 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef struct { char string[4]; } Test[3]; Test test; void temp() { int x, y; char temp[4]; srand((unsigned)time(NULL)); x = rand() % 3; while (1) { y = rand() % 3; ...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: scanfを用いないint型の数字の入力を知りたい
返信数: 4
閲覧数: 2982

Re: scanfを用いないint型の数字の入力を知りたい

なるほど、今回は数字のみを入力することしか考慮していなかったので、そのパターンが頭から抜けておりました。
今後そちらのコードを採用させて頂きます。ありがとうございました。
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: scanfを用いないint型の数字の入力を知りたい
返信数: 4
閲覧数: 2982

Re: scanfを用いないint型の数字の入力を知りたい

前者の方法で無事成功しました。 勉強になりました、ありがとうございます(´∀`) こうしてみるとscanfって面倒くさいですね(´・ω・`) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main() { int value, n, i; char input[12]; START: printf("数字を入力\n"); scanf("%s", input); n = strlen(input); for (i = 0; i < n; i++) { if (isdigit(in...
by 遊び人
6年前
フォーラム: C言語何でも質問掲示板
トピック: scanfを用いないint型の数字の入力を知りたい
返信数: 4
閲覧数: 2982

scanfを用いないint型の数字の入力を知りたい

int型の変数にscanfで数字を入力する際、文字などを入れるとおかしくなってしまいます。 getchを使った場合は0~9の数字しか入力できない(もしかしたらあるのかもしれないですけど私は知らない)ので、 入力できる値に制限がなく、尚且つ文字を入力してもおかしくならないようにできる方法があれば教えてください! #include <stdio.h> int main() { int input; while (1) { scanf("%d", &input); //もしinputが数字だった場合break、そうでない場合はループという処理にしたいです。 if (inputが数字) break; ...

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