検索結果 108 件

by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語での単語検索とカウントプログラム
返信数: 30
閲覧数: 4455

Re: C言語での単語検索とカウントプログラム

ここまで多数の返信をいただきながとても重要なことを書いていませんでした。講師は課題には学習した範囲までの内容しか使ってはいけないという人で、具体的に言うと、授業で使用される「新・明解C言語(柴田望洋)」の11章までの内容で作成しなければなりません。よって、rewind() やfgetなどのファイル系の関数、構造体などは使用できません。(以前まだ習っていないstrcmpを使用し評価を下げられました。現在は学習済みです。) 大変申し訳ありません・・・。 具体的に何を使用して良いかわからなかったので 授業で使用している書籍を調べましたが、該当書籍が3種類ありました。 新・明解C言語入門編 目次 h...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語での単語検索とカウントプログラム
返信数: 30
閲覧数: 4455

Re: C言語での単語検索とカウントプログラム

オフトピック
みけCAT さんが書きました: となっており、assignment-expressionとは一番「外側」(ASTで一番根に近い所)の演算子がコンマ演算子でない式のことなので、
いずれも定数でない式が要素数として使えることがわかります。
コマンドライン引数の数は、実行時にならないとわかりません。
それを最適化で定数にしてしまうようなコンパイラは欠陥品でしょう。
解説ありがとうございます。納得しました。
単純にVCが対応していないだけなんですね。
勉強になりました。
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語での単語検索とカウントプログラム
返信数: 30
閲覧数: 4455

Re: C言語での単語検索とカウントプログラム

ミスがあるかもしれませんが とりあえず、CとC++で動くものです。 追記:(以下のプログラム、英文を考慮していませんでした。ピリオドの対応してません。) 環境:VS2013/Windows10 // Cのつもり #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFF_MAX 128 // 標準入力から単語を取得する int GetWord(char* pText) { for (int idx = 0; idx < BUFF_MAX; ++idx) { char ch = getchar(); // 単語の...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語での単語検索とカウントプログラム
返信数: 30
閲覧数: 4455

Re: C言語での単語検索とカウントプログラム

SH さんが書きました:他にもおかしな点がありますが分かる方いたら教えていただきたいです。
実行結果に直接関係ないですが、気になったので・・・

以下のコードは、おそらく環境依存です。
配列の宣言に変数を使用していますが、定数として解釈されている様です。
SH さんが書きました:

コード:

int  word_cnt[argc - 1];
Clang 3.8 / LLVM 3.8 では、コンパイルできましたが、
Visual Studio 2013 のコンパイラでは、コンパイルエラーします。
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列のポインタを他のソースファイルで書き換えたい
返信数: 13
閲覧数: 1432

Re: 二次元配列のポインタを他のソースファイルで書き換えたい

ポインタの付け替えで実現する場合は、以下の通りです。 となっており、a[0]への変更がbに反映されておらず、bへの変更がa[0]に反映されていません。 今回の検証ではGCCを使用しましたが、inemaruさんの指定するVS2013では正しく「ポインタの付け替え」が行われていますか? 【追記】 VC(2013かは不明)で検証 しましたが、同様にa[0]とbは独立しており、コピーが行われていると考えられます。 ご指摘ありがとうございます。 完全に自分の ミス でした。 VS2013で確認したところ、コピーが行われています。 付け替えは行われていません。 落ち着いて考えると、std::arrayの...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列のポインタを他のソースファイルで書き換えたい
返信数: 13
閲覧数: 1432

Re: 二次元配列のポインタを他のソースファイルで書き換えたい

申し訳ありません。 質問斜め読みして、回答が的外れになってました。 (前の回答は、スポイラーテキストにしました。) ポインタの付け替えで実現する場合は、以下の通りです。 ↑ 間違いでした。このコードの動作は、 コピー です。ご注意ください。 // 環境:VS2013 #include <cstdio> #include <array> std::array<int, 5> b = { 11, 12, 13, 14, 15 }; void setPointer(std::array<std::array<int, 5>, 2>& refA) { refA[0] = b; } void outpu...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: DxLibでゲームの実行EXEとは別に設定EXEを用意したい
返信数: 15
閲覧数: 1635

Re: DxLibでゲームの実行EXEとは別に設定EXEを用意したい

設定ファイルを共有する実行ファイルがある状況について
注意したい点を一つ書くと、

フォーマットは、気を付けた方が良いかもしれません。

テキスト形式(txt, ini, xml, json等)であれば、問題は起こりにくいですが
バイナリ形式だと型の違いを意識してデータを読み書きする必要が出てきます。

windows環境であれば、バイトオーダー(エンディアン)までは気にする必要ないと思うので
別言語からバイナリを書き出す場合は、型の対応表を見ながらの対応になると思います。
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: 全く訳の分からない例外がスローされてしまいました
返信数: 7
閲覧数: 908

Re: 全く訳の分からない例外がスローされてしまいました

エラー的に、「配列外アクセス」な気がしますが、
Visual Studioならウォッチ機能等を使用してデバッグするのが速いと思います。
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列のポインタを他のソースファイルで書き換えたい
返信数: 13
閲覧数: 1432

Re: 二次元配列のポインタを他のソースファイルで書き換えたい

コピーで実現する場合のソース アンセーフ版(生配列を使用する場合) // 環境:VS2013 // Visual Studio だと必要かもしれん #define _SCL_SECURE_NO_WARNINGS #include <cstdio> #include <array> int b[] = { 11, 12, 13, 14, 15 }; void setPointer(int* pA) { // 配列bのサイズは5なので bの先頭アドレス+5で終端アドレス std::copy(b, b + 5, pA); } void output(){ printf("bのアドレス = %p\n"...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列のポインタを他のソースファイルで書き換えたい
返信数: 13
閲覧数: 1432

Re: 二次元配列のポインタを他のソースファイルで書き換えたい

コピーで実現する場合のソース コピーで良いなら、std::copyを使えば安全 // 環境:VS2013 #include <cstdio> #include <array> std::array<int, 5> b = { 11, 12, 13, 14, 15 }; void setPointer(std::array<std::array<int, 5>, 2>& refA) { std::copy(b.begin(), b.end(), refA.front().begin()); } void output(){ printf("bのアドレス = %p\n", &b.front());...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C# 行数を表示したい。
返信数: 17
閲覧数: 1764

Re: C# 行数を表示したい。

Visual Studio以外にもC#のIDEはあるので、
(フォーラムルール的にも)開発環境は明記した方が良いでしょう。

UnityやMacの話だった場合、
MonoDevelopが使用されている可能性があるわけです。
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体の初期化
返信数: 5
閲覧数: 957

Re: 構造体の初期化

初期化がゼロクリアで、C++であるなら、
自分は下記のようにしています。

コード:

MyStruct data = {};
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C++の勉強方法についての質問
返信数: 7
閲覧数: 1459

Re: C++の勉強方法についての質問

しかし、Direct3D等のサンプルにしても、古いC++の文法で書かれていることがほとんどです。 だから、Direct3DかつC++11のサンプルだけをやるというようにこだわると何もできなくなります。 まるで、C++11が別言語みたいな言われようですが、 新しいC++を知ったからと言って、古いC++が理解できなくなる訳じゃないです。 「何もできなくなる」というのは大げさな上に間違っています。 C++11はC++なのですから古いコードで書かれていても、 C++11のコンパイラでコンパイルできます。 ただ、技術を勉強するときに新しいものにこだわるのは少し問題があります。 例えばDirectXにつ...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: エラーができて実行ができないプログラム
返信数: 8
閲覧数: 952

Re: エラーができて実行ができないプログラム

後はライブラリリンクだけできればよかったのに、 なぜCLAPACKに変更したのでしょうか? CLAPACKは使用経験がないので、自分では分かりかねます。 とりあえず、エラーについて 予想 で答えます。 error C2733: 'zgesv_' : オーバーロードされた関数の C リンケージの 2 回以上の宣言は許されません。 CLAPACK側に同名(zgesv_)の定義があるため、エラーしていると予想。 realがあいまい Complex から real に変換できません どこかに定義されたreal関数とstd::real関数が名前衝突したと予想。 提示されたコードで怪しいと思った点を修正し...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: エラーができて実行ができないプログラム
返信数: 8
閲覧数: 952

Re: エラーができて実行ができないプログラム

そのエラーは、「関数zgesv_の実体がない」というエラーだと思われますが Lapackライブラリのリンクが、できていないのでは? extern "C" { // Lapackライブラリの関数呼び出し用の定義 void zgesv_ ( const int& N, const int& NRHS, Complex** A, const int& LDA, int* IPIV, Complex** B, const int& LDB, int& INFO ); }; もし自前で実装するのであれば、(本末転倒) extern "C" { void zgesv_ ( const int& N, co...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: エラーができて実行ができないプログラム
返信数: 8
閲覧数: 952

Re: エラーができて実行ができないプログラム

エラーを見る限り58行目で、テンプレート引数を解決できてないだけっぽい
以下のコードで、解決しませんか?

コード:

  // info = zgesv( A, x, b );
  info = zgesv<N>( A, x, b );
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C++の勉強方法についての質問
返信数: 7
閲覧数: 1459

Re: C++の勉強方法についての質問

5. DirectXプログラミングをやりたい場合は、まずC++でDLLを読み込む方法と  COMプログラミングができないと無理だった気がする(私より詳しい人頼みます) 個人的な所感です。 C++で(基本的な)処理を書く上では、自前でDLLを読み込んだりはしません。 (VSやDirectXの実装側でやってくれている為) また、COMプログラミングに関して詳しく知っていなくても 関数の意味や3Dに関する知識があれば、普通にC++(よりC言語寄りだけども)が使える程度で どうにかなりそうだと思います。 (専用の関数を使用するため、COMプログラミングを感じさせない作りになっている) [hr] 以下...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語、構造体について
返信数: 6
閲覧数: 1354

Re: C言語、構造体について

かずま さんが書きました:

コード:

#include <stdio.h>  // 関数 printf の宣言を取り込む (定義は入っていない)
inemaru さんが書きました:

コード:

#include <stdio.h> // (関数printfの定義が入っているファイルを読み込む)
かずま様の説明と自分の説明に差があったので補足です。

確かにヘッダーには、宣言しか入っていませんが、
最終的に、定義(実装)の入っているファイルが読み込まれるようになるので
<stdio.h>には、定義が入っていないという意味です。
(printfの実装は組み込まれていることが多いですが・・・)
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: 分割してよみこんだ画像(4方向に動かす)の透過ができません
返信数: 4
閲覧数: 734

Re: 分割してよみこんだ画像(4方向に動かす)の透過ができません

つまり、 「透過画像の透過部分が透過されていない」 ということでしょうか?

もしそうだとしたら、
  • 全体のコード(もしくは再現コード)
  • 使用している画像の詳細等(問題なければ)
  • DXライブラリのバージョン
  • 開発環境
程度は、提示した方がよさそうです。

最低限必要な情報が欠損した状態の質問には答えられないことが多いので
フォーラムルールの質問テンプレートの使用をお勧めします
http://dixq.net/board/board.html
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語、構造体について
返信数: 6
閲覧数: 1354

Re: C言語、構造体について

インスタンスという用語をそのソースで使うのがふさわしいのかどうか、 いささか疑問に思います。 単に「変数を定義する」くらいでいいような気がしなくもありません。 意味的には、間違っていないつもりですが、 C言語は、C++と違ってオブジェクト指向を導入していないので、 用語としては、スタンダードではないかもしれません。 (C++の構造体はクラスと同等なので、明確に区別していない限りインスタンスと呼んでも問題ない) 解説サイトで調べたところ、聞きなれないですが、 構造体のインスタンス = オブジェクト と呼ぶらしいです。 詳細は、ロベールさんの解説に丸投げします。 ・メモリ上にある変数を実体(イン...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語、構造体について
返信数: 6
閲覧数: 1354

Re: C言語、構造体について

ソースが何をやっているのか?という質問であれば、こんな感じでどうでしょうか? (用語の意味が不明瞭な場合は、検索してください) #include <stdio.h> // (関数printfの定義が入っているファイルを読み込む) // 座標X,Yを持った構造体 point の定義 typedef struct point { double cx; // 座標X double cy; // 座標Y } point; // 構造体を引数で初期化してインスタンスを返却する関数 point set_point(double x, double y) { point pt; pt.cx = x; pt....
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: TEを引数にして、JUDGEを返す
返信数: 13
閲覧数: 1385

Re: TEを引数にして、JUDGEを返す

あれ、さっきとコメント表示が違う・・・。 いえ、まだ勉強途中なので関数、引数、戻り値に関してもあまりよく理解していません。 編集と返信が入れ違いになってしまったようです。 (レスの内容にキーワードを書き加えてました。) とりあえず、検索すれば解説サイトがあるので活用してください。 最低限、「関数」について理解していないと、この課題は解けません。 以下は、関数についての参考までに // 関数を使うと // 共通化できる部分をまとめたり // 処理を分割したりできる // 戻り値のない関数 void Proc1(){ printf("Proc1"); } // 戻り値のある関数 int Proc...
by inemaru
2年前
フォーラム: C言語何でも質問掲示板
トピック: TEを引数にして、JUDGEを返す
返信数: 13
閲覧数: 1385

Re: TEを引数にして、JUDGEを返す

このプログラムができてすぐ、勝敗部分等に関数を使い、TEを引数にしてJUDGEを返す関数を作ってもらいたいと課題を頂きました。 今回教えて頂きたいのは、この<<関数を使い、TEを引数にしてJUDGEを返す関数を作ってもらいたい>というところです。 正直言って、ちょっと言っている意味がわからなかったのですが、 同じ処理を何度も書かないためにする必要があるものなのかなと思っています。 関数などのサイトや、本などを見てやっていますがいまいちどうしていいかわかりません。 漠然とした質問ですが、一体TEを引数にしてJUDGEを返すとはどういうことなのでしょうか。 単純に、<<じゃんけんの結果を返す関数...
by inemaru
3年前
フォーラム: C言語何でも質問掲示板
トピック: visual stdio エラーについて困ってます
返信数: 2
閲覧数: 516

Re: visual stdio エラーについて困ってます

プロジェクトのプロパティから
[構成プロパティ]→[C/C++]→[プリコンパイル済みヘッダー]
の[プリコンパイル済みヘッダー]が[使用]とか[作成]にもしなってたら
[プリコンパイル済みヘッダーを使用しない]に変更すると治るかもしれない

画像のみで判断なので、あまり期待しないでください。
by inemaru
3年前
フォーラム: C言語何でも質問掲示板
トピック: [C#]先に値型の変数を返して、後から参照でその値を変更したい
返信数: 6
閲覧数: 893

Re: [C#]先に値型の変数を返して、後から参照でその値を変更したい

C#詳しくないですが、
少なくとも、どこかに result の参照を退避させないと
result にアクセスする事すらできないので変更とか無理なんじゃ・・・
by inemaru
3年前
フォーラム: C言語何でも質問掲示板
トピック: インスタンス名.メソッド名().メソッド名()の記述の仕方
返信数: 2
閲覧数: 475

Re: インスタンス名.メソッド名().メソッド名()の記述の仕方

記述式の名称は、知りませんが 戻しているのは、「参照(参照渡し)」じゃないですか? https://www.google.com/search?&q=C%2B%2B+%E5%8F%82%E7%85%A7%E6%B8%A1%E3%81%97 #include <iostream> struct Hoge final { Hoge& MethodA(){ std::cout << "A" << std::endl; return (*this); } Hoge& MethodB(){ std::cout << "B" << std::endl; return (*this); } }; int m...
by inemaru
3年前
フォーラム: C言語何でも質問掲示板
トピック: C++でシーンが変更できない
返信数: 2
閲覧数: 894

Re: C++でシーンが変更できない

軽くみた感じ、 Sceneを継承したTopで呼んでるSceneChangeのミスに見えた void Top::Update(){ if(CheckHitKey(KEY_INPUT_Z)==1){ SceneChange(Scene_Menu); // ↑ これは this->SceneChange(Scene_Menu); を呼んでるけど //  実装が空だから何も起きない // 本当は、コンストラクタで受け取ってる changer を使って //  changer->SceneChange(Scene_Menu); にしたかった? } } 以下のスポイラーは似たような感じに動くように、コード...
by inemaru
3年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルに書かれた式の計算について
返信数: 12
閲覧数: 2584

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

課題の目的だけを達成するなら、 解析処理すら必要ない気がしたので書いてみました。 シェルに丸投げする方法です。 もちろん環境依存です。 Windows10・VS2013 環境で確認しました。 (パフォーマンスチューニングはしていません。) #include <iostream> // io #include <cstdlib> // system #include <fstream> // ifstream #include <vector> // vector #include <string> // string // テキスト型 typedef std::vector<std::stri...
by inemaru
3年前
フォーラム: C言語何でも質問掲示板
トピック: 引数の違う親クラスの関数が使えなくなる
返信数: 6
閲覧数: 895

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

(using宣言以外の方法では、)型を明示すれば呼び出せます。

コード:

class Base {
public:
	int func(int a) {
		return a + 1;
	}
};

class Myclass : public Base {
public:
	int func(int a, int b) {
		return a + b;
	}
};

int main()
{
	Myclass a;
	//a.func(1); //エラー
	a.Base::func(1);
	return 0;
}
by inemaru
3年前
フォーラム: C言語何でも質問掲示板
トピック: c++の命名規則について
返信数: 8
閲覧数: 1431

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

標準ライブラリの命名規則に関しては、
イマイチはっきりした情報が見つけられない(不確かな情報)なので、
あまり信用しないで
一意見として受け取ってください。

少し調べてみたところ、C++標準委員会とかで議論されてはいるみたいですが
  • ローカル変数と型名の衝突の回避
  • テンプレート引数名をテンプレートクラス内でusing宣言する事が多い為、名前衝突が起こりうる
くらいのことしかわかりませんでした。

誤解釈とかもありうるので、
間違ってたらすいません。

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