検索結果 150 件

by maru
4年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の値の保存
返信数: 3
閲覧数: 6857

Re: 関数の値の保存

> どこを改善すればよいでしょうか
まずはフォーラムルールを一読ください。「うまくいきません。」では伝わりません。

ちょっと見た感じでは
> double datax1[a],datax2;
コンパイルでエラーになりそう。配列の要素数が変数になっていて、その変数の値は初期化できていない。

> datax2[0]=x2;
datax2は配列ではない。

> datax1=x1;
datax1は配列。

いずれもコンパイラが吐き出すエラーをよく読めば改善できます。
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: データメンバの初期化に引数なしコンストラクタと引数付きコンストラクタを多重定義 したプログラム
返信数: 3
閲覧数: 2293

Re: データメンバの初期化に引数なしコンストラクタと引数付きコンストラクタを多重定義 したプログラム

norisuke825 さんが書きました:
5年前
解決しました。ありがとうございます。
とのことですが、どのように解決したか出せませんか?
単にコンパイルが通っただけ、または実行できた、としても問題が表面に出ていないだけで、プログラムとして正しくない(バグが残っている)場合もあります。
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: データメンバの初期化に引数なしコンストラクタと引数付きコンストラクタを多重定義 したプログラム
返信数: 3
閲覧数: 2293

Re: データメンバの初期化に引数なしコンストラクタと引数付きコンストラクタを多重定義 したプログラム

name tasteの定義を間違えているのではないでしょうか? const char* xxx[n]は定数文字列(定数文字へのポインタ)の配列です。 必要なのは定数文字列なのではないでしょうか? それならば、 const char xxx[];// 定数文字配列 または const char* pxxx;// 定数文字へのポインタ とすべきです。 xxxは「定数」文字配列なので書き換えを行うことはできません。つまり、コンストラクタで変更できません。定義を行うときに初期化できるだけです。コンストラクタで変更するにはconstをつけてはいけません。 pxxxはポインタなので書き換えができますが、ポ...
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: 物理 光る風について
返信数: 6
閲覧数: 4733

Re: 物理 光る風について

釣りかな?
オフトピック
風が光っているだけであり、風が光の速さで動いているわけではないので追い越すことは可能でしょう。(もし光る風が実在すればですが。)
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: queueでpushとpopの連続実行時にエラー
返信数: 7
閲覧数: 5347

Re: queueでpushとpopの連続実行時にエラー

質問です。
以下のコードでは RECORD_T の実体が確保されていないんですが、そこはいいんですか?
pRecord が不定ですけど。

コード:

		RECORD_T *pRecord;
		memset(pRecord, 0, sizeof(RECORD_T));
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: 未解決の外部シンボル(T_ChangeNum(int))が参照されました
返信数: 5
閲覧数: 4812

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

しかしこれでは、若干動作が遅くなってしまうのではないでしょうか。 性能を気にして inline を維持したいのならば、かずまさんが書いているように、 クラス定義内に関数の実体を書く、またはクラス定義の直後に inline キーワードを つけた関数定義を書けばいいでしょう。 class Test { int T_num; public: void T_ChangeNum(int number); int T_GiveNum() const { return T_num; } } inline void Test::T_ChangeNum(int number) { T_num = number...
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: 未解決の外部シンボル(T_ChangeNum(int))が参照されました
返信数: 5
閲覧数: 4812

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

test.cpp の inline が余分です。意味を考えてみて下さい。
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の照合アルゴリズム
返信数: 4
閲覧数: 3826

Re: 文字列の照合アルゴリズム

厳密にはtestは文字列ではなく、char配列です。
0で終端されたchar配列を文字列として扱うstr関数群があるだけです。

で、p=配列変数名というコードは、pに配列変数の先頭アドレス(ポインタ)を代入するコードになります。
配列変数名に整数(n)を加えると配列変数のn番目の要素へのポインタになります。
オフトピック
ソースコードを記述する場合、codeタグで囲っていただけると幸いです。
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: 作成したプログラムの失敗ケースはどんな場合か?
返信数: 3
閲覧数: 3584

Re: 作成したプログラムの失敗ケースはどんな場合か?

for文で回す回数が間違っています。sizeof(S)は102になり、文字列長ではありません。
そのため、文字列長が101未満の場合、配列Sに不定値が残ります。
オフトピック
文字列長102以上の場合、深刻な問題を引き起こす可能性があります。
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの解析をするのにC言語は向いてますか?
返信数: 5
閲覧数: 9497

Re: ゲームの解析をするのにC言語は向いてますか?

にわ鳥 さんが書きました:
5年前
えと、ゲームの処理を覗いて(?)チートコードを作ったりしたいってことです
他人が書いた難読化(?)されたコードとか読む必要があるらしくて
そういうことするのにこの言語は適してますかね?
適していません。
オフトピック
というか、チートをしたいと言っている人がこんな質問をしている時点で...
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 でんたくの作成
返信数: 4
閲覧数: 2783

Re: C言語 でんたくの作成

おっと、”;” が余分だった。実際にコンパイルしてみないとわからないこともあるね。

コード:

int AI(int x,char s,int y)	// ここの末尾にあった ; が余分
{
	switch (s) {
	case'+':	return x + y;
	case'-':	return x - y;
	case'*':	return x * y;
	case'/':	return x / y;
	default:	return error;
	}
}
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 でんたくの作成
返信数: 4
閲覧数: 2783

Re: C言語 でんたくの作成

"}"が一つ足りません。 #include<stdio.h> const int error = 1; int AI(int, char, int); int main(void) { int a, c, d; char b; printf("式を入力"); scanf("%d%c%d", &a, &b, &c); d = AI(a, b, c); if (d == error) { printf("エラー発生\n"); } else { printf("答えは%dです。\n", d); } return 0; } int AI(int x,char s,int y); { switch (s...
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: ビット演算を用いた基数変換について
返信数: 2
閲覧数: 1920

Re: ビット演算を用いた基数変換について

<疑問点> 関数cv2binはきちんとビット演算を用いているといえるでしょうか? コマンドライン引数からの2つの値を'unsigned n'にsscanfを用いて代入するにはどうすればよいでしょうか? &演算子はビット演算なので、一応要件を満たしているでしょう。 コマンドライン引数は argc に引数の数、argv に引数文字列へのポインタ配列として main関数に渡されます。 (ただし argv[0] は実行コマンドそのもの) この問題では Length(byte) 文字列へのポインタが argv[1] に入っていて、Integer number 文字列へのポインタが argv[2] に入...
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: コンストラクターのインスタンスが引数リストと一致しない
返信数: 5
閲覧数: 4830

Re: コンストラクターのインスタンスが引数リストと一致しない

コード、エラーメッセージが示されていない状態では何ともコメントできません。
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: コンストラクターのインスタンスが引数リストと一致しない
返信数: 5
閲覧数: 4830

Re: コンストラクターのインスタンスが引数リストと一致しない

私には仮引数が13個で、実引数が11個に見えるのだが...
by maru
5年前
フォーラム: C言語何でも質問掲示板
トピック: 既に宣言されたクラスを使うとエラーが出る。
返信数: 3
閲覧数: 4837

Re: 既に宣言されたクラスを使うとエラーが出る。

多重インクルードされていることが原因。 enemy.h が control.h でインクルードされていて、さらに control.cpp で enemy.h と control.h の両方がインクルードされているので、ENEMY が 多重に定義されている。そのためにclass再定義というエラーが発生している。 対策は3つほど浮かぶ。 1.control.cpp から enemy.h のインクルードを削除する。 2.ヘッダファイルの先頭に #pragma once を追加する。 3.インクルードガードを行う。(下記参照) #ifndef xxxx_h_include // include gua...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: アドレス入力
返信数: 2
閲覧数: 10130

Re: アドレス入力

cの場合(c++でも可)

コード:

double* p = (double*)malloc(sizeof(double) * 800);
//  色々な処理
free(p);
c++の場合

コード:

double* p = new double[800];
//  色々な処理
delete [] p;
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: constの使い道が分かりません!
返信数: 3
閲覧数: 2534

Re: constの使い道が分かりません!

Google君に「C マジックナンバー」と聞いてみたら、 「次のような理由で、マジックナンバーはプログラム中に含まれないことが好ましいとされる。 ・その数値の持つ意味がわかりづらい。 ・数値を変更する場合に、複数の箇所を変更しなければならない可能性がある。 」 という答えが得られました。 constを使用して定数として定義するプログラムを目にするのですが、なぜ定義するのでしょうか? まさにマジックナンバーを避けるために定数を定義するんです。 必要とあればその都度かけば良いものではないのでしょうか?(今回だったら500って書けば良い) 500という値を変更したい時、プログラム中にある500を全部...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: hash算法に対する理解
返信数: 9
閲覧数: 11391

Re: hash算法に対する理解

余りいい加減なことは言わないでほしい。 衝突の可能性はキーの数・性質/ハッシュテーブルの大きさ/ハッシュ関数の質に依存するので一概にはいえないはず。 衝突時の処理もハッシュアルゴリズム自体とは無関係。2, 3回の比較で済むかどうかはその方式による。 いい加減なことを書いたつもりはありません。 「ハッシュ関数を使えば、どんな場合でも 4回以上の比較を 行わなうことはない」と誤読されたようですが、 私は、回答の先頭で、 「key と value のセットが 100個あったとします。」と書き、 「実際のコードで見たほうが分かりやすいでしょう。」と書いて、 そのコードを提示しました。 キーの数は 1...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: hash算法に対する理解
返信数: 9
閲覧数: 11391

Re: hash算法に対する理解

かずま さんが書きました:ハッシュ関数を使うと、ほぼ 1発で value が見つかります。
ダメな場合でも、2, 3回の比較で済みます。
余りいい加減なことは言わないでほしい。
衝突の可能性はキーの数・性質/ハッシュテーブルの大きさ/ハッシュ関数の質に依存するので一概にはいえないはず。
衝突時の処理もハッシュアルゴリズム自体とは無関係。2, 3回の比較で済むかどうかはその方式による。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 正常にファイルを参照できず、悩んでいます。
返信数: 13
閲覧数: 4940

Re: 正常にファイルを参照できず、悩んでいます。

あれ? 38行目、ifstream に文字列をフォーマットする機能はなかったはずだが?

コード:

        ifstream ifs_2("TLT\\%s\\%s\\B.txt" ,folder_name,file_num);//データB
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 正常にファイルを参照できず、悩んでいます。
返信数: 13
閲覧数: 4940

Re: 正常にファイルを参照できず、悩んでいます。

23行目の入力を受けた内容を画面に改めて出力すると全く別の値になっていました。 デバッガを使えば画面に出力しなくても、値を確認することができます。 scanfの使い方そのものもあまり理解できていないのですがどのような関数で読み込めば数字12桁を正常に読み込むことが出来るでしょうか? scanf で12桁の文字列を取得するには char str12[12+1]; scanf("%s", str12); とすれば可能ですが、13文字以上を入力すると用意した領域を破壊してしまいますのでお勧めしません。 ファイルの入出力、文字列の出力にストリームを使用しているので、ここは入力ストリーム(cin)を使...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 正常にファイルを参照できず、悩んでいます。
返信数: 13
閲覧数: 4940

Re: 正常にファイルを参照できず、悩んでいます。

maru さんが書きました:23行目、文字列を読み込むのに int 型の変数のポインタを指定しています。
実行時にエラーが発生するようなら、その時の変数の値を確認してください。
(エラーが発生しなくても変数、プログラムの流れを確認し、アルゴリズムが正しいかを確認するのが完成への早道。)
でも、このバグは変数を確認してもわからないかもしれませんね。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 正常にファイルを参照できず、悩んでいます。
返信数: 13
閲覧数: 4940

Re: 正常にファイルを参照できず、悩んでいます。

いまだにインデントがそろっていないようですが...

23行目、文字列を読み込むのに int 型の変数のポインタを指定しています。
実行時にエラーが発生するようなら、その時の変数の値を確認してください。
(エラーが発生しなくても変数、プログラムの流れを確認し、アルゴリズムが正しいかを確認するのが完成への早道。)
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 正常にファイルを参照できず、悩んでいます。
返信数: 13
閲覧数: 4940

Re: 正常にファイルを参照できず、悩んでいます。

つばさ さんが書きました:皆様の助言をいただきたいのでどうぞよろしくお願いいたします。
デバッグすればよいと思います。
つばさ さんが書きました:ほかにもコードの書き方でよくない点があればご指摘いただければと思います。
とりあえず、
1.インデントがそろっていない。
2.エラーチェックが一切ない。
3.コンパイルが通らないコードだ。
4.マジックナンバーを使用している。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: C言語でリソースの練習をしています
返信数: 4
閲覧数: 3287

Re: C言語でリソースの練習をしています

DLLのリソースをロードするにはDLLのインスタンスハンドルを指定する必要があります。
DLLのインスタンスハンドルはLoadLibraryEx関数で取得します。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体、配列、ファイル操作について
返信数: 3
閲覧数: 10467

Re: 構造体、配列、ファイル操作について

環境が書いていないので正確ではありませんが、ソースコード(*.c)と同じフォルダではだめでしょう。
実行ファイルが生成されたフォルダに置く必要があります。
(基本的には、実行ファイルはソースファイルがあったフォルダを知りません。)
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: C++におけるオブジェクト指向の理解
返信数: 5
閲覧数: 3518

Re: C++におけるオブジェクト指向の理解

本題ですが、オブジェクト指向とは具体的に言えば、 コンパイル実行可能なソースをincludeなどで呼び集めて大きな作品を作る? ということでしょうか。 違います。上記はライブラリが充実しているかどうかであり、オブジェクト指向とは全く別の要素です。 「オブジェクト指向」を google 君に聞いてみたら Wiki がヒットします。 この中で、「オブジェクト指向プログラミングの構成要件」として「カプセル化 (情報隠蔽)」と「ポリモーフィズム (多態性)」が挙げられています。 オブジェクト指向では、オブジェクトの動作はオブジェクト自身が知っていればよく、外部ではその動作がどのように実装されているか...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 ぽ
返信数: 4
閲覧数: 2381

Re: C言語 ぽ

循環節の長さが除数より小さいことを考えると、除数の大きな数から小さい数への方向へ循環節長を計算し、それまでの最大循環節長が除数より大きくなったところで打ち切ってもいいんじゃないでしょうか。 // 引数の逆数の循環節を計算する int recurringLength(int n, int* pRemains) { int remain = 1; int* pRemain = pRemains; *pRemain = remain; while (remain) { int* p = pRemains; for (; p < pRemain; ++p) { if (remain == *p) { ...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 配列をスキップする方法
返信数: 9
閲覧数: 12016

Re: 配列をスキップする方法

かずま さんが書きました:No.2 の box さんの回答で十分だと思うんですが。
その意見に激しく同意なのですが、自分のコードに固執していたようなので、修正版ということで。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 配列をスキップする方法
返信数: 9
閲覧数: 12016

Re: 配列をスキップする方法

// 通常マクロは大文字では? #define n 3 int main() { int x, y, i; int skip[n]; puts("スキップする数を入力"); setvbuf(stdout, NULL, _IONBF, 0); for (i = 0; i<n; i++) { // 普段 scanf 系使わないので正しい使い方をよく分かっていないのだが、"%d\n" -> "%d" では? // VCでは"%d"だけにしないとだめ scanf("%d", &skip[i]); printf("%d\n", skip[i]); } for (x = 1; x <= 9; x++) ...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 数字以外の文字をはじきたい。
返信数: 11
閲覧数: 7875

Re: 数字以外の文字をはじきたい。

二つの else 節の両方に中かっこ({})がないため、余分なメッセージが出力されているだけのように見えますが。
インデントを適切にすればすぐにわかることです。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 配列とポインタの違いに関して
返信数: 4
閲覧数: 2987

Re: 配列とポインタの違いに関して

かずまさんではありませんが、回答してみます。 【疑問点1】 &buff1 は、配列全体(10バイトの領域)へのポインタ &buff2 は、ポインタ buff2 へのポインタ(10バイトの領域へのポインタではない) 上記に関して,配列全体へのポインタとはint型のポインタのような感じでしょうか? int型のポインタとは以下のようなものをイメージしています. int a=10; int * ptr_a=&a; int型のポインタは32バイトの領域のブロックを指していると思います. 同じようにbuff1はmallocで10バイトの領域のブロックが取られたものであるので, 新しく10バイトの型が作られ...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 宿題です 関数とポインタについて
返信数: 1
閲覧数: 1252

Re: 宿題です 関数とポインタについて

Node 構造体の内容がわからないと正しい回答ができないのですが、

コード:

typedef struct tagNode {
	int	num;
	struct tagNode*	next;
} Node;
であると仮定して、

コード:

    if(p->num==key){
とすればいいです(&が余分)。

なお、listsearch 関数で p が正しく初期化されていません。
先頭のポインタを引数で渡すなどの対策が必要です。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: nullptrチェックについて
返信数: 9
閲覧数: 5267

Re: nullptrチェックについて

やっていることが同じなので、回答も同じです。

このコードでは m_A は未初期化状態であり、nullptr ではなく不定です。
if (m_A) でnull チェックしても意味がありません。

コンパイルできたのであれば、実行して動作を確認してから投稿したら如何ですか。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: nullptrチェックについて
返信数: 9
閲覧数: 5267

Re: nullptrチェックについて

このコードでは f は未初期化状態であり、nullptr ではなく不定です。
if (f) でnull チェックしても意味がありません。

また、このメンバ関数はクラスオブジェクトを参照していないし、仮想関数にもなっていないので、nullptr でも呼び出しできちゃうんです(規格的にはどうか知りませんが...)。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: vector const_iterator
返信数: 7
閲覧数: 3355

Re: vector const_iterator

構造体の要素をメンバ変数といいます。 構造体のメンバは「構造体変数名.メンバ変数名」、「構造体変数名へのポインタ->メンバ変数名」でアクセスできます。 反復子を使用する場合はポインタと同様です(「構造体コンテナの反復子->メンバ変数名」、「(*構造体コンテナの反復子).メンバ変数名」。) struct foo { int x; // 構造体メンバx int y; // 構造体メンバy int z; // 構造体メンバz }; int main(int argc, char *argv[]) { struct foo v[] = {{ 9, 8, 7 },{ 3, 2, 3 }, { -1, -...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: vector const_iterator
返信数: 7
閲覧数: 3355

Re: vector const_iterator

「要素をピンポイントでとってきたい」というのが私には意味不明なんですが... vector の特定の順番(x番目)の要素をとってきたいのなら添字(インデックス [])を使って HOGE a = hoge[x]; とすればよいだけで反復子を持ち出す必要はない。 反復子を使って同じことをやろうとしたら vector<HOGE>::const_iterator cit = cbigen(hoge);// 先頭要素の反復子を取得 advance(cit, x);// 反復子をx番目まで進める HOGE a = *cit;// x番目の要素を配列からコピー インデックスを使うより手間がかかります。 そも...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: BINGOゲーム作成にあたって重複しない乱数の生成の仕方
返信数: 4
閲覧数: 5300

Re: BINGOゲーム作成にあたって重複しない乱数の生成の仕方

質問主さんのプログラムをよく見てみたら、カードの作成と抽選の両方に GetNumer() を使用していますね。
これで重複を許さないと、絶対にビンゴにならないと思いますが...
カード用と抽選用に二つの配列を用意するか、カードの作成後に再シャッフル(+シーケンス番号リセット)すれば解消すると思います。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: BINGOゲーム作成にあたって重複しない乱数の生成の仕方
返信数: 4
閲覧数: 5300

Re: BINGOゲーム作成にあたって重複しない乱数の生成の仕方

数値を重複しないようにするには、候補の数値を順番に並べて置き、それをシャッフルしてから順番に取り出すのが定石だと思います。 #include <iostream> #include <random> #include <assert.h> const size_t MaxNumber = 100; typedef struct tagBingoNumber { int numbers[MaxNumber]; size_t seq; } BingoNumber; void shuffle(BingoNumber* p, size_t maxNum) { for (size_t i = 0; i ...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: vector const_iterator
返信数: 7
閲覧数: 3355

Re: vector const_iterator

std::vector<> は配列と同様なもの。ただし要素の追加/削除が可能。 要素を追加するためのメソッドの一つが push_back() 関数。 std::vector<>::const_iterator はその配列の要素をアクセスするための反復子の一つ。 反復子を取得するためのメソッドの一つが begin() 関数。 反復子を使用することにより配列の要素を順次アクセスすることができる。反復子を使用して要素をアクセスする時はポインタと同様に*を使用する。 iterator は要素を変更することができるが、 const_iterator は要素を変更することができない。 つまり、vector...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: cのプログラミング基礎
返信数: 9
閲覧数: 10606

Re: cのプログラミング基礎

maru さんが書きました:この誤差はこれ以前に発生していた正の誤差より上の桁で発生しているため、これ以降の加算結果はしばらくは10進数で考えた値より小さいものとなります。
この部分は正確ではなかったようです。これ以降の結果がすべて10進数で考えた値より小さいものとなるわけではなく、蓄積した誤差が解消された後は10進数で考えた値より小さいものとなるというべきでした。実際に浮動小数点の値が10進数で考えた値より小さくなるのは 4.8 以降になります。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: cのプログラミング基礎
返信数: 9
閲覧数: 10606

Re: cのプログラミング基礎

もしそうなら、3と4の所は、説明が付きません。 だから、質問せざるを得なかったわけです。 0.1 を二進数で表現すると 0.001 1001 1001 以下 1001 が繰り返し続きます。16進で表現すると 0.19999999...です。 doubleの1.0 を16進で表現すると 3ff0000000000000 になりますが、これに 0.1 を加えると、3ff199999999999a となります。 これは 0.1 の有効数字以下の桁を零捨一入した結果、最後の桁が繰り上がった結果です。繰り返しパターンの 1001 の先頭を零捨一入したわけです。 これを繰り返して10回足しこむと 400...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: コマンドプロンプトからの四則演算入力
返信数: 21
閲覧数: 11316

Re: コマンドプロンプトからの四則演算入力

tgg さんが書きました:この発言から行けるのかなぁと思いchar *mをchar mで宣言して、*argvでやってみたのですが上手くいきませんでした。理由はなんででしょうか?
なぜ、これでいけると判断できるのか全く理解できません。
main関数の引数は int, char*[] であり、プログラム起動時にその型で渡されます。
これを int, char* として受け取っても正しく動作するはずがありません。受け取り方が正しくないので、その引数を代入する変数の型をごまかしても正しくなるはずはありません。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 回転角度a度を求めるプログラム
返信数: 3
閲覧数: 2970

Re: 回転角度a度を求めるプログラム

車輪の半径:r/2
→車輪の周:2πr/2 = πr
→回転角度a回った時の距離:x = πra/360
→距離xとなるときの回転角度:a = 360x/πr
これに角度の入力と計算結果を出力すればいいだけですよね。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: C++ if文にマクロ
返信数: 3
閲覧数: 1851

Re: C++ if文にマクロ

一応書いておくと int b = RECTANGLE_WIDTH(*rectangle) - MIN_ROOM_SIZE - 4; //MIN_ROO_SIZEは定数 は、コンパイルエラーになっていないだけで、意図したとおりには動作していないはずです。 マクロを展開すると、 int b = ((*rectangle).right-(*rectangle).left); - MIN_ROOM_SIZE - 4; //MIN_ROO_SIZEは定数 となるわけで、b には *rectangle の幅が入ります。後ろの - MIN_ROOM_SIZE - 4; は効果のない文となります。 エラーでは...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 逆行列
返信数: 3
閲覧数: 2010

Re: 逆行列

Inversematrix(ay)では、ayの逆行列が返ってきてそれにR0を掛けたいと考えています。 うまくいかないというのは、値が入らないということです だから、Inversematrix(ay)では、ay に単位行列が返ってきているって書いてるでしょ。 inv_a に逆行列を作成しているが、その過程で ay には単位行列が作成される。 inv_a に作成された逆行列を ay にコピーしていないから matrixmultiplication では単位行列が使用される。 「値が入らない」って言っても、何らかの値は入っているはず。 意図と違った値が入っているのなら、そのこと(期待値と実際の値)...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: C++ if文にマクロ
返信数: 3
閲覧数: 1851

Re: C++ if文にマクロ

マクロの最後のセミコロン(;)が余分。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 逆行列
返信数: 3
閲覧数: 2010

Re: 逆行列

「うまくいきません」では、どううまくいっていないのかわかりません。

というのはさておき、実行してみたところ、
Inversematrix(ay);
で ay に単位行列が返ってきています。これが質問者の意図と合っていないのではないでしょうか?

ところで、デバッグという言葉はご存知ですか?
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: C++が分からない
返信数: 6
閲覧数: 4888

Re: C++が分からない

それとC++で文字列を扱うのはとても大変でした。 C言語の拡張版とのことですが、慣れればCのcharより使いやすいのでしょうか? え!? ”char”は文字「列」ではなく、文字だと思っていたのですが... というツッコミはさておき、c/c++言語にはネイティブな「文字列」型はありません。 c言語のstr??関数群は0で終端されたchar配列を文字列とみなして処理を行う標準ライブラリ関数群であり「文字列」型という型はありません。 (終端の0を忘れるとひどい目に会う!) c++では、型と同様に扱うこのが可能なクラスを定義することができ、さらに標準ライブラリとしてstringクラス等が用意されてい...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: tmr0について
返信数: 10
閲覧数: 5830

Re: tmr0について

質問① どう記述すれば交互に点滅しますか? 片方のLEDを反転させればいいわけですから、以下のコードでも可能でしょう。 PORTAbits.RA1 ^= 0x01; PORTAbits.RA0 = PORTAbits.RA1 ^ 0x01; 質問② オシロで測定すると1,060sで60msecほどずれがあります。 タイマーとはこういうものなのですか? タイマそのものの精度はどうなんでしょう? 1,060sで60msecなら57ppmになります。温度補償のない水晶ならそのくらいはあり得ます。 まあ、みけCAT さんが書いている分周比のせいである可能性のほうがおおきいは思いますが。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体を用いたポインタのランダムソート
返信数: 7
閲覧数: 2553

Re: 構造体を用いたポインタのランダムソート

改良したものは 挿入ソートですね。 求めているものと異なるかもしれませんが、c++ による実装です。 #include <cstdio> #include <iostream> #include <list> const size_t numberOfData = 10; const int maxNumber = 100; template <typename T> void print(T t) { for (T::const_iterator it = t.begin(); it != t.end(); ++it) { std::cout << *it << std::ends; } ...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体を用いたポインタのランダムソート
返信数: 7
閲覧数: 2553

Re: 構造体を用いたポインタのランダムソート

昇順降順するプログラムは以下のようになっていてこれを改良して作成したいと思っています。 ソースコードはよく読んでいませんが、上の文を読むと「昇順降順するプログラム」は既にあるんですよね。 何をやりたいんですか? フォーラムルールをご一読ください。インデントされていないコードは詳細に読む気がしません。 なお、構造体のメンバにnext,prev があるということは双方向リストだと思いますが、google君で「双方向リストのソート」で検索するといくつか例が出てきます。 それらを参考にするのはどうでしょうか。 私は「リストのソート」が必要ならstd::list::sort()を使用します(c++です...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: fscanf_s ファイル読み込みが理解できません
返信数: 1
閲覧数: 2771

Re: fscanf_s ファイル読み込みが理解できません

fscanf_sの説明の読み込み不足かと。 https://msdn.microsoft.com/ja-jp/library/6ybhk9kc.aspx からの引用 「セキュリティが強化された関数 (_s サフィックス付き) とその他のバージョンの関数との主な違いは、セキュリティが強化された関数では、c、C、s、S、および [ の各型フィールドを使用するとき、引数として、それぞれの変数の直後にフィールドのサイズを渡す必要がある点です。 詳細については、次を参照してください。 scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_lとscanf 関数の文字幅指定します。」 ...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: 教えてください
返信数: 7
閲覧数: 3578

Re: 教えてください

二つの要素でソートを行うからと言って2回ソートする必要はないでしょう。 一般に、ソートは比較関数を作るだけで実行可能です。その比較関数で二つの要素を比較すればいいわけです。 #include <stdio.h> #include <stdlib.h> typedef struct tagElement { double x; double y; } Element; /*データ*/ Element Elements[] = { { -1, -2 }, { -0.99,0 }, { 0,0 }, { -3.1,+5.1 }, { -6,+6 }, { -3,-3 }, { -3.5,-3.1 }...
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: vector<*>の使い方がわからない
返信数: 8
閲覧数: 4601

Re: vector<*>の使い方がわからない

purin52002 さんが書きました:test型とAlly型は例え継承関係にあっても型は違うはず、、、。よって代入はできないのではないしょうか!?
規格にはどう書いてあるかよくわからないが、継承先オブジェクトを継承元に代入するのはOKでした(寝ぼけていたのかな?<自分)。
継承は元のメンバ+αなので継承先を元に代入すると、元のメンバのみコピーされ+αの部分がなくなる。逆はNG。
これは構造体でも同じですね。
by maru
6年前
フォーラム: C言語何でも質問掲示板
トピック: vector<*>の使い方がわからない
返信数: 8
閲覧数: 4601

Re: vector<*>の使い方がわからない

ポインタの使い方がよくわかっていないようですね。     std::vector<test*> vec;     Ally ally;     ally.set(1);     vec.push_back(&ally);     ally.set(2);     vec.push_back(&ally); このコードはAllyクラスの実体(オブジェクト)はallly一つでありそのポインタをベクタに二つ格納している。 そのポインタが指すオブジェクトはローカルに宣言されたallyであり、その値(a)は2になっている。 仮想関数func()の呼び出しでは[0],[1]どちらもallyの関数を呼び出す...
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: メモリの使用量がわかりません!!
返信数: 2
閲覧数: 3000

Re: メモリの使用量がわかりません!!

「計算量」で検索すると用語説明がいっぱいヒットします。 そのなかから一つを紹介。 http://www.kogures.com/hitoshi/webtext/al-order/index.html この中に 「このように、アルゴリズムでの主要な操作に着目して、解に達するまでに必要な操作回数のことを計算量(注)(オーダー)といい、O (nの式) で表現します。」 と説明されています。 計算量を計測することも可能ですが、ふつうはアルゴリズムをみて、繰り返しがどれだけあるかを考えます。 一般に、与えられた数 n に対して繰り返し回数が n に比例するなら O(n)、 for文が二重になっていて繰り...
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: CSVファイルの読み込み
返信数: 13
閲覧数: 6106

Re: CSVファイルの読み込み

うまくいかない原因の一つに、例にあるテキストのクラス人数と実際のクラスの名簿があっていない、ということがあるかと思います。
実際にプログラムを書いてみましたが、ちゃんと動くようになるまである程度時間がかかりました。
正しいデータでやってみることをお勧めいたします。
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: CSVファイルの読み込み
返信数: 13
閲覧数: 6106

Re: CSVファイルの読み込み

ファイルから直接構造体に読み込むのではなく、いったん一行分の文字列バッファに読み込んで、それから分解すればいいんです。
そうすれば空行を読み飛ばすことは簡単です。
fgets, sscanf を使用すればよろしいかと。あとは for 文をうまく使えば。。。

構造体のメンバがすべて文字列ですけど、クラス人数は int にしたほうがよくないですか?
あと、性別も bool もしくは enum にしたほうが後の処理が楽になります。
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: C言語による制御系、組込み系のお仕事について
返信数: 39
閲覧数: 15865

Re: C言語による制御系、組込み系のお仕事について

factorial()は、階乗を返す関数で、私の記憶ではn!という関数は知りませんでした。 function()は、関数という意味で、その部品プログラム内での核となる関数を意味しております。 n! は関数ではなく、nの階乗を示す数学の記号です。高校の数学でやったと思います。 もう少し厳密にはΠ(パイ)を使って表記しますが、順列や組み合わせの数の公式で階乗の部分に ! が出てくるはずです。 確かに function の意味は関数や機能ですが、Cの関数であることは見ればわかるので function という名前は意味がありません。 どういう機能を行う関数なのかで名前を付けないと意味を持ちません。 ...
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: C言語による制御系、組込み系のお仕事について
返信数: 39
閲覧数: 15865

Re: C言語による制御系、組込み系のお仕事について

ISLe さんが書きました:関数呼び出しのコスト以前に、組み込み系ではスタックが数KBしかない場合もあるので、無計画に再帰呼び出しするとすぐに暴走しますよね。
その通りです。だから、「再帰の深さ」って書いてるのに。。。
それ(スタックの消費)を含めて「再帰呼び出し」のコストと書いたつもりが、実際に投稿したのは「関数呼び出し」でした。
orz

【追記】
漢字まで間違えてるし。 修正しました。
「再起」⇒「再帰」
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: C言語による制御系、組込み系のお仕事について
返信数: 39
閲覧数: 15865

Re: C言語による制御系、組込み系のお仕事について

自分で作成した作品で、気に入っています。(ご感想を頂けるとありがたいです) 再帰呼び出しの例で階乗を使っている書籍/文献が見られますが、実際のプログラムで階乗を再帰で計算することはないだろうと思ってました。 数学的には   n! = factorial(n) = n×factorial(n-1) なのでスマートですけど、単純に   n! = 1×2×...×n で十分に思えます。この程度の演算処理で再起を使って計算するのは、関数呼び出しのコストと見合わないと思います。 まあ、この辺りはセンスと言われればそれまでなんですけどね。 実際の仕事で再帰呼び出しを使用するときには、再帰の深さがどれくら...
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: C++のオーバライド
返信数: 6
閲覧数: 2879

Re: C++のオーバライド

意図していることがよくわからないのですが、元のプログラムの saList[1] = *SaList[1]; では sa のオブジェクトに対して sb のオブジェクトを代入してしまっています。 この場合の動作は... 言語仕様に詳しくないので、どうなるのが正しいのかよくわかりません。 もし、意図した動作が、 「派生されたクラスオブジェクトを派生元のクラスオブジェクト配列にいれて、派生元クラスとして動作させたい」 ということであれば、そのような動作をするコードは思いつきません。 あと、sa では a を public にする必要性はないように思われます。 private か protected で...
by maru
12年前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題がわかりません
返信数: 5
閲覧数: 2144

Re: 大学の課題がわかりません

条件が「非素数」であることがポイントかもしれませんね。
「エラトステネスのふるい」等で素数判定が必要です。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: c言語のポインタについて質問です。
返信数: 16
閲覧数: 5832

Re: c言語のポインタについて質問です。

ISLe さんが書きました:難読コードは丸投げ連投をこらしめるためじゃないんですかね。
私もそんなところだろうと思っているんですが、そのコードがいかにも優れているかのようなコメントには賛成いたしかねます。初心者がこれを見てこんなコードがいいんだと思われても困りますからね。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: c言語のポインタについて質問です。
返信数: 16
閲覧数: 5832

Re: c言語のポインタについて質問です。

l;print_rev(char*s){s+=l=strlen(s);while(l--)putchar(*--s);} // ookami 60byte print_rev(char*s){for(s+=strlen(s);*--s;putchar(*s));} // bitter_foxさん 54byte (難あり) print_rev(char*s){*s?print_rev(s+1),putchar(*s):0;} // かずまさん 51byte 今のところ、かずまさんのコードが一番短いですね! 再帰や三項演算子をフツーに使ってきてるあたり、手馴れた感が...w 短けりゃいいってもん...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: VisualStudio2010でのDLL作成について
返信数: 4
閲覧数: 8275

Re: VisualStudio2010でのDLL作成について

うーん、これだけの情報では何とも言ってみようがありませんね。

ただ、本当にVS2010なら
1> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
のversion部分は16.00.xxxxになっているはずです。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: c言語のポインタについて質問です。
返信数: 16
閲覧数: 5832

Re: c言語のポインタについて質問です。

先頭文字のひとつ前を参照してはいけませんし、そこに '\0' があるとも限りません。 よく見ていなくて、すみませんでした。calloc で余分に領域を確保しているんですね。 正しいご指摘だと思いますよ。関数の仕様にはそんな前提条件は書かれていませんからね。 いくら使用例でcalloc で余分に領域を確保していても、仕様は満足しません。 print_rev(char*s){*s?print_rev(s+1),putchar(*s):0;} これだと、グローバル変数も strlen() も使いません。 print_rev関数の型はintでしょうか?省略せずに書いた方がよいと思います。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル分割が上手くいきません
返信数: 7
閲覧数: 3287

Re: ファイル分割が上手くいきません

はんなり さんが書きました:開発環境は Microsoft Visual Studio 2010 professional です
ソリューションエクスプローラビューのソースファイルアイコンを右クリックして、[追加]-[既存の項目]を選択。
分割したソースファイルを指定します。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 最小公倍数・最小公約数についておしえてください。
返信数: 4
閲覧数: 2829

Re: 最小公倍数・最小公約数についておしえてください。

フリオ さんが書きました:>1.gcd関数は x > y である必要がありますが、チェックされていません。

 試してみればわかりますが、x < y でも while の最初の一回で x と y が入れ替わるので
問題ありません。
あれ、剰余演算子は除数の方が大きくてもいいんですね。いわれてみればそうですね。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル分割が上手くいきません
返信数: 7
閲覧数: 3287

Re: ファイル分割が上手くいきません

このタイトルだと、プログラムでファイルを分割することを考えてしまいますね。
分割コンパイルで検索すると幸せになれるでしょう。

方法はコンパイラに依存します。ソースファイルをコンパイルするときに複数のファイルを指定する方法や、
統合開発環境で指定する場合など、開発環境に依存するので、開発環境を書いてください。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 最小公倍数・最小公約数についておしえてください。
返信数: 4
閲覧数: 2829

Re: 最小公倍数・最小公約数についておしえてください。

最終的な最大公約数が求まるまでの途中過程を表示をしたいのですが、実行すると途中経過がうまく表示されていないようです。 うまく表示されていないとは、「どうなって欲しい」が、「今どうなっている」を説明しないと何とも言ってみようがありません。 m=24, n=20として実行してみたところ、 (m,n)=(20,4) (m,n)=(4,0) と表示されますが、引数として渡した (m,n)=(24,20) が表示されないことが問題なのでしょうか? それでしたら、while文に入る前に表示処理を入れる必要があります。 改善点をおしえてください。 1.gcd関数は x > y である必要がありますが、チェ...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中のある特定の文字列の数行先の行の文字列を抜き出す
返信数: 4
閲覧数: 2184

Re: ファイル中のある特定の文字列の数行先の行の文字列を抜き出す

たかぎ さんが書きました:メモリマップドファイルを使うという選択肢はないのでしょうか?
なるほど、その方が手軽ですね。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: BCC Developerによるcsvファイルの読み込み
返信数: 9
閲覧数: 3865

Re: BCC Developerによるcsvファイルの読み込み

non さんが書きました:/でも大丈夫だと思うけど。
ですねぇ。

古い知識のままで、返信するとこんなことになっちまいますね。困ったもんです。 > 自分。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中のある特定の文字列の数行先の行の文字列を抜き出す
返信数: 4
閲覧数: 2184

Re: ファイル中のある特定の文字列の数行先の行の文字列を抜き出す

膨大とはどの程度のものでしょうか? 一度に全部メモリに載せることが出来るのか、できないのか? そこがポイントです。 MB以下であれば全部読み出して、文字列配列に行ごとに格納してから検索を行えばいいでしょう。 なお、サイズは環境によって替える必要があるでしょう。 メモリに載せられない場合、ファイルを読みながら検索するしかありませんが、検索文字列が複数あるの なら一行読みだすごとに、文字列検索を検索文字列数回繰り返すようにするなど、ファイルの読出し数は 最小回数になるようにしないと、性能面で問題になりそうです。 ところで、 int length = GetFileLength(fp_input);...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: BCC Developerによるcsvファイルの読み込み
返信数: 9
閲覧数: 3865

Re: BCC Developerによるcsvファイルの読み込み

まさかとは思いますが、パスの区切り文字が間違っているなんてことはありませんよね?
"csv/enemy.csv" -> "csv\\enemy.csv"
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: BCC Developerによるcsvファイルの読み込み
返信数: 9
閲覧数: 3865

Re: BCC Developerによるcsvファイルの読み込み

KOBA さんが書きました:BCC Developerを使ってcsvを読み込もうとしているのですが、うまく読み込めません。
どのように、うまくいかないんですか?
KOBA さんが書きました:原因がわかる方はいますか?
よろしくお願いします。
そのプログラムの実行時のフォルダ位置(ディレクトリ)と読み込もうとしているファイルの相対位置を確認してみてください。

ちなみに、FileRead_openはファイルを開くだけで、読み込むものではないと思いますが。...
まあ、詳細はうまくいかない内容を確認した後ということで。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: ご協力ください
返信数: 3
閲覧数: 1693

Re: ご協力ください

ファイル内容を全て読み込んで改行で分割して配列変数に格納する。 全部読み込むということは300行を超えるという可変の行数を管理することになります。 2行ごとに読み込み、行を入れ替えて書き込むほうが簡単でしょう。 それでも1行の文字数が可変個なので、最大文字数を検討しておくことが必要でしょう。 #include <stdio.h> const size_t max_sting_length = 128; // 一行の最大文字数 int main() { int result(0); FILE* in_file = fopen("input.txt","r"); // 読み込みファイル FILE...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル読み込みの関しての質問
返信数: 5
閲覧数: 2645

Re: ファイル読み込みの関しての質問

2つ目の質問は 『』 のプログラムを実現しようとしたときに、対象となるファイルの中身を一度すべて読み込む必要があるかどうか? ファイルの中身をすべて読み込む必要があるか?という問いに対しては、 最後まで読まないと対象のデータ全てを検索できないから当然「すべて読み込む必要がある」 という回答になります。 問題は「すべて」の前にある「一度」ということですが、真の問いは検索前に全部読み込んで メモリに保存しておくのか?、読み込みながら検索するのか?ということではないかと思います。 回答は、プログラムで検索するのが一回だけなら、読み込みながら検索するのがよく、一回の 実行で複数回の検索を実行するなら...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームプログラミングの館 入門編11について
返信数: 7
閲覧数: 2475

Re: ゲームプログラミングの館 入門編11について

while 文の()の中は変数ではなく式です。別に変数を使った式を書く必要はなく、定数でもかまいません。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 要素数0の配列
返信数: 6
閲覧数: 12065

Re: 要素数0の配列

   int *p = new int [0];    p[0] = 10;    cout << p[0] << endl; などとすると実行できてしまいます.これはどういう仕組みなのでしょうか. 最初の文は要素数0の int 領域を確保して、そのアドレスを返します。 つまりメモリアドレスは返ってくるが、その領域は使えない(使ってはいけない) 2、3番目の文は、その使ってはいけない領域にデータを書込み、読み出しています。 動作したのは、たまたまです。運よくそのアドレスのデータは他に使用されていなかった為でしょう。 また,この使用法は問題ないのでしょうか. もちろん大問題です。こんな使い方を...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: C++でファイルのパッキングをしているのですが、うまくいきません
返信数: 6
閲覧数: 2833

Re: C++でファイルのパッキングをしているのですが、うまくいきません

yucky001 さんが書きました:ありがとうございました。
無事できました。
10000バイト以上のファイルも読み込めるようにしました。
どうやって解決したのかを書いてみてください。
10000バイト以上のファイルといってもどのサイズまで可能でしょうか?
たまたま動いているだけということはないですか?
充分に大きなファイルであっても実行可能なアルゴリズムになっているか疑問です。

フォーラムルールにも「解決した方法を明記して下さい。」とあります。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: C++でファイルのパッキングをしているのですが、うまくいきません
返信数: 6
閲覧数: 2833

Re: C++でファイルのパッキングをしているのですが、うまくいきません

突っ込みどころが満載のソースコードですね。 とりあえず、fread, fwriteの使い方が間違ってます。 char *Data[10000]; size=fread(Data,1,MAXSIZE,Graph); fwrite(Data,size,1,fp); ↓ char Data[10000]; size=fread(&Data,1,sizeof(Data),Graph); fwrite(&Data,size,1,fp); で動作しました。 ただし、個々のファイルサイズは10000バイト以下です。 10000バイト以上になる場合、繰り返しが必要です。 #define MAXSIZE 101...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 最大値を求めるのに・・・
返信数: 10
閲覧数: 4729

Re: 最大値を求めるのに・・・

box さんが書きました:最大値の初期値が0で決めうちっていうのは、ちょっとまずいかもしれません。

私だったら、
a = in[0];
として、1~9のループを構成しますね。
ですね!
つい、データは0以上という仮定を置いてしまいました。
ループ範囲を0~9にするなら初期値は INT_MIN にすべきでした。

ループを1~9からにしていないのは配列範囲の一部を特別処理にするのが嫌だったからですが、
この程度の処理なら問題はないでしょうね。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 最大値を求めるのに・・・
返信数: 10
閲覧数: 4729

Re: 最大値を求めるのに・・・

Cielさん以外の方は配列の添字に注目していますが、問題はそれだけではありませんね。 添字を修正しても while(ns < 9) { if(in[ns+1] >= in[ns]) { a = in[ns+1]; } ns++; } これでは前後のデータを比較しているだけですよね。 それまでの最大値(a)と比べなければダメでしょう。 a = 0; for (int i = 0; i < 10; ++i) { if (in[i] >= a) { a = in[i]; } }
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 別スレッドを監視する処理
返信数: 2
閲覧数: 1384

Re: 別スレッドを監視する処理

basuku さんが書きました:お世話になります。
下記の場合、別スレッドが終わるまでウェイトするにはどんな処理にしたらいいでしょうか?
別スレッドの質問は解決されたようですが、何が違うのでしょうか?
http://dixq.net/forum/viewtopic.php?f=3&t=8051
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一纏めにした圧縮ファイルからの読み取り
返信数: 2
閲覧数: 974

Re: 一纏めにした圧縮ファイルからの読み取り

「圧縮ライブラリ」で検索をするといろいろなサイトが見つかります。

そこから、一つ紹介。
http://www.csdinc.co.jp/archiver/lib/extents.html
いろいろなエンジンがライブラリの形で提供されています。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: アクションゲームのジャンプについて
返信数: 6
閲覧数: 2976

Re: アクションゲームのジャンプについて

オーカー さんが書きました:ああなるほど
わかりました
本当に理解出来たのでしょうか?でしたら前のコードをどのように変えたのか書いてみてください。
フォーラムルールにも
また、解決した時は、「解決しました」とだけ言って去らず、ソースコードや解決した方法を明記して下さい
とあります。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 敵が消えてしまいます・・・
返信数: 2
閲覧数: 1021

Re: 敵が消えてしまいます・・・

ゲーム中に突然敵がきえてしまいます。 なぜきえるのかがぜんぜんわかりません・・・。 どうすればいいのでしょうか。 お願いします デバッグ作業の丸投げでしょうか? こんな長いコードを見ただけで間違いを見つけることが出来る人はそうそういませんよ。 プログラムが自分の思った通りに動かない場合、ソースファイルを見るだけで原因を特定し対策するのは非常に困難です。 まず、起きている現象を整理し、原因を突き止めて、その後対策を行います。 「突然」は本当に突然ですか? 再現性はありますか?再現性が或る場合、その条件を特定しましょう。 再現性がない場合、その再現性を見つけるようにしましょう。 何か操作をした時...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: アクションゲームのジャンプについて
返信数: 6
閲覧数: 2976

Re: アクションゲームのジャンプについて

y_pが前回の座標を保存しています。
14, 17, 21行でのJump呼び出し時にy_pの値がいくつになっているかを考えましょう。
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: アクションゲームのジャンプについて
返信数: 6
閲覧数: 2976

Re: アクションゲームのジャンプについて

参照先のコードを貼っておきます。 y_temp = Mario.y; Mario.y += (Mario.y - Mario.y_prev) + F; Mario.y_prev = y_temp; Fはジャンプしたとき10で空中では-1とするようです。 このコードは今の位置と前回に位置の差(つまり、その速度)に力を加える(加速・減速)ことにより 速度を求め、今の位置に加える(速度による移動を行う)ことによって次の位置を求めるものです。 Mario.y=Mario.y_prev=0で処理を開始すると、確かに結果は[0,10,19, 27, 34, 40, 45,・・・となる はずですが、Mari...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: staticメンバ変数を継承して利用する
返信数: 2
閲覧数: 2830

Re: staticメンバ変数を継承して利用する

件名のとおりstaticメンバ変数を継承して利用するときで、確認したいです とあるとき Loop関数で g_mvTask[0] で SetValueを使って CSystem::m_iValue の値を変更したとき g_mvTask[1].m_iValue g_mvTask[2].m_iValue g_mvTask[3].m_iValue g_mvTask[4].m_iValue の値も全部変更になるんですが、これでよかったでしょうか? 確認はしたのですが、偶然だったら怖いのでこれで合っているかどうかを聞きたいです 使い方としては タスク1、タスク2、タスク3、タスク4、タスク5 で同じ変数を...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: lengthの使い方(初心者です)
返信数: 7
閲覧数: 4446

Re: lengthの使い方(初心者です)

ジョぱん さんが書きました:ありがとうございます。
配列の要素数、長さ、を表現できるプロパティはないのでしょうか?あったら教えてください。
うーん、「lengthなんていう名前のプロパティは有りません。」でプロパティというものが有ると勘違いさせてしまいましたかね。

コンパイル時に決定している配列の長さを求めるにはsizeof演算子を使って全体のバイト長とその配列の要素のバイト長を求めて計算します。
size_t length = sizeof(k)/sizeof(k[0]);
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: C言語について
返信数: 4
閲覧数: 1745

Re: C言語について

今、先週のテストの復習をしています。 1if文、for文はわかるんですが、do while文はいまいちわかりません。 2構造体は全く分りませんので、今復習しながらしていますが・・・ 3ビット演算の話だとは、理解できていますが、&=がよくわかりません。ビット演算は2進法以外でも使えるのですか? do while文の構造は do statement while (expression); まず、statement を実行し、その後 expression を評価し、その評価結果が真である場合、 do に戻る(つまり statemet を実行して、expressionを評価して、,,,の繰り返し)。...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: lengthの使い方(初心者です)
返信数: 7
閲覧数: 4446

Re: lengthの使い方(初心者です)

int k[12]にはlengthなんていう名前のプロパティは有りません。
というか、基本型に".xxxx"という表現でアクセスできるようなプログラム言語要素は存在しません。

他言語の知識でプログラムしようとしているようですが、c/c++言語の基本的なところから学習する必要がありそうです。
(普通の初心者はいきなり k.length なんて入力しないと思いますが。)
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 放物線
返信数: 5
閲覧数: 3242

Re: 放物線

時間と移動量との関係式を見つけてみましょう。 # 放物線にはならないと思うけど。 確かに放物線にはなりませんねぇ。 移動量|  0 5 4  3  2  1  -1  -2  -3 -4  -5 まず、移動量は次の座標との差だから、先頭の0は無視します(と言うか、移動量は間に書くべき) そうするとこの移動量はその間の平均速度ということになります。 そして、その平均速度の差を求めると加速度が求まります。 で、加速度を求めると -1 -1 -1 -1 -2 -1 -1 -1 -1 となって、一定になっていないことが分かります。 これは「一定の加速度(普通は重力)」の元で運動する物体の動きである放...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 野球の対戦表について
返信数: 5
閲覧数: 2603

Re: 野球の対戦表について

data .win+data .loseが0になり0割が発生してしまうということは分かったのですが、 どのように書けば良いのか分かりません。 以下の指摘をよく考えて見ましょう。 2 勝率の計算を求める場所が違う。 勝率は各チームの勝敗の合計数から求めます。 今の位置では各チームの勝敗の合計を求める途中結果を使用しています。 で、その途中結果が0勝0負から始めるのでゼロ割が発生してしまうのです。 勝率の計算を勝敗の合計数を求め終わった後に移動しましょう。 具体的には for(i=0;i<6;i++){ fscanf(fp,"%s",&data[i].team); for(j=0;j<6;j++...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: 「キャラを4方向に動かす」プログラムについて
返信数: 2
閲覧数: 1928

Re: 「キャラを4方向に動かす」プログラムについて

上記コードの26行目からのif文についてなんですが、 if(ch.x%32==0 && ch.y%32==0) の条件を満たしていて、何も入力がない場合はwalkking_flagには0が入りますよね? それは37行目の処理ですね。 何故上ボタンを押した時点で warking_flagに1が代入されるんでしょうか。 ch.mukiに0が代入されるのはわかりますが、なぜ27行目のwarking_flag = 1が適用されるのかがわかりません。 ボタンを押した時点でwarking_flagに1が代入されるのではありません。 ボタンが押されたかどうかを判定する前(27行目)に1を代入しているのです...
by maru
13年前
フォーラム: C言語何でも質問掲示板
トピック: printf関数の表示が
返信数: 3
閲覧数: 1883

Re: printf関数の表示が

// time_tは、long型なので%ldとなることに注意! これが間違いですね。 VC++2008なら time_t にマウスカーソルをもっていって右クリック、「定義へ移動」で time_t の typedef に飛びます。 多分 typedef __time64_t time_t; /* time value */ の文にジャンプします。 さらに、__time64_t は typedef __int64 __time64_t; /* 64-bit time value */ time_t を long で使いたい場合は #define _USE_32BIT_TIME_T とすればよさそ...

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