検索結果 6632 件

by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 平均点の結果が0になりおかしいです。
返信数: 2
閲覧数: 3258

Re: C言語 平均点の結果が0になりおかしいです。

出力指定子%fに対してint型のデータを渡しているのが間違っていますね。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 関数が機能していない
返信数: 2
閲覧数: 3604

Re: 関数が機能していない

beki関数から返した結果をmain関数側で全く使わず、投げ捨てているのが間違っています。 また、beki関数の引数numおよびansの値を使わずにローカル変数のように使っていること、 およびせっかくdoubleで計算した結果をintで返しているのは不自然に思えます。 #include <stdio.h> /* 計算結果をdoubleにし、引数numとansを削除する */ double beki ( double input, int jou ); int main(void) { double real; double result; int power; int i; printf( "...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 参照を、このときどうつかっていいのかわかりません。
返信数: 3
閲覧数: 3374

Re: 参照を、このときどうつかっていいのかわかりません。

とりあえず、元のプログラムをできるだけ残して、修正。 コンパイルエラー になりました。 prog.cc: In constructor 'samp::samp()': prog.cc:12:31: error: invalid conversion from 'char' to 'char*' [-fpermissive] 12 | samp() { cout << "a"; s = '\0'; } | ^~~~ | | | char どのようにすれば、このプログラムはきちんと動くのでしょうか。 samp::sはポインタなので、文字'\0'ではなくポインタを代入するようにする sampのコピ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 複数ある同じ条件のwhileをまとめる方法を教えてください
返信数: 1
閲覧数: 2858

Re: 複数ある同じ条件のwhileをまとめる方法を教えてください

同じ条件のwhile文を3回も使うのでまとめたいのですが、 以下のように、ループを使ってまとめることができそうですね。 //***入力された文字列を文字列、1文字ずつ、10進数、16進数それぞれに変換して表示***// #include <stdio.h> #define MAX 10 //格納上限 int main(void) { const char* headers[] = {"文字", "10進数", "10進数"}; const char* formats[] = {"%c", "%d", "%x"}; char moji[MAX] ; //文字入力 printf("文字列を入力し...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 多次元配列に一次元配列を代入する
返信数: 6
閲覧数: 6493

Re: 多次元配列に一次元配列を代入する

判断、というのはif文を使えば良いのでしょうか? 効率は落ちますが、if文を使ってもいいです。 int main(void) { int b[5][5]; int a[25] = {0}; int i, j, m; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { for (m = 0; m < 25; m++) { /* i,j,mの値からして、a[m]をb[i][j]に格納するべきか? (仮で全て偽) */ if (0) { /* もし格納するべきなら、格納する */ b[i][j] = a[m]; } } } } return 0;...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 多次元配列に一次元配列を代入する
返信数: 6
閲覧数: 6493

Re: 多次元配列に一次元配列を代入する

「aの要素」を代入したい場合は int main(void) { int b[5][5]; int a[25] = {0}; int i, j; /* #2 の (1) */ for (i = 0; i < 25; i++) { /* iに基づき、a[i]をbのどこに格納するかを求める (仮で(0, 0)) */ int y = 0; int x = 0; /* そこに格納する */ b[y][x] = a[i]; } /* #2 の (2) */ for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { /* (i, j)に基づき、b[i][j]...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 多次元配列に一次元配列を代入する
返信数: 6
閲覧数: 6493

Re: 多次元配列に一次元配列を代入する

5×5の多次元配列bの各要素に、要素数25の1次元配列aを代入するにはどうしたらよいですか? 「aの要素」ではなく「a」を代入するんですよね? #include <string.h> int main(void) { int b[5][5][25]; /* 5x5の多次元配列 (各要素はint[25]) */ int a[25] = {0}; /* 要素数25の1次元配列 */ int i, j; /* bの各要素にaを代入(コピー) */ for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { memcpy(b[i][j], a, sizeo...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 変数の宣言および初期化を行う文について
返信数: 3
閲覧数: 3539

Re: 変数の宣言および初期化を行う文について

IntやDoubleは独自に定義した型の可能性があり、誤りだとは限りません。
明示的に初期化されていないグローバル変数は「ゼロ」に初期化されるので、=がないからといって誤りとは限りません。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 電卓作成
返信数: 5
閲覧数: 4243

Re: 電卓作成

C言語のソースコードを教えてしまうとtxkrさんが作成する余地が無くなってしまいそうなので、 とりあえずPythonで書いてみました。 import sys def add(a, b): return a + b def mul(a, b): return a * b def add_num(n): return lambda s: s.append(n) def calc(f): def do_calc(s): s[-2] = f(s[-2], s[-1]) s.pop() return do_calc q = sys.stdin.readline().rstrip() converted_...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 開発環境を一般画面に表示する方法
返信数: 8
閲覧数: 5217

Re: 開発環境を一般画面に表示する方法

画像はユーザー登録してログインしていただければ、添付ファイルの所から貼れるはずですよ。
新しいスレッドを立てても画像が貼れるかは変わらず、続きの話なのにスレッドが分割される方が有害でしょう。
tesuto-20201019.png
てすと
tesuto-20201019.png (4.14 KiB) 閲覧数: 4982 回
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 列挙体およびバブルソートに関する質問
返信数: 4
閲覧数: 4475

Re: 列挙体およびバブルソートに関する質問

JJJuto さんが書きました:
3年前
ただ、ソース後、dayの方が数字で表示されます。できれば、SUN,MON・・・といったように文字で表示したいのですが、どうすれば良いでしょうか・・・?
ソート前の表示と同様に、値で分岐して対応する文字を表示すれば良いと思います。
同じ長い処理を複数回書くのはあまり良くないので、関数化するのも良いでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: プログラミングCでエラーが出てしまいます。
返信数: 1
閲覧数: 2961

Re: プログラミングCでエラーが出てしまいます。

未定義のsizeが使われているというメッセージですね。
sizeのかわりにkosuを使うべきであうように思えます。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 列挙体およびバブルソートに関する質問
返信数: 4
閲覧数: 4475

Re: 列挙体およびバブルソートに関する質問

まず、コードタグのスペルが違います。 JJJutoさんはco rd と書いていますが、正しくはco de です。 次に、必要なヘッダのインクルードや、構造体、定数の定義が無いのが間違っています。 再現可能な短いサンプルコード を提示していただくと、答えやすくなります。 最後に、配列の要素数の取得方法が違います。 配列の要素数は配列全体のサイズを配列の1要素のサイズで割ることで得られますが、 JJJutoさんのコード int i, j, tmp, changeday, a = sizeof(week[7].day) / sizeof(week[0].day); int n,m,temp, cha...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 再投稿 エラー C4700 が出てしまいます
返信数: 4
閲覧数: 4126

Re: 再投稿 エラー C4700 が出てしまいます

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
Hyoka さんが書きました:
3年前
どのようにすれば、エラーがでずにこのよう形で実行できるのでしょうか?
ThreadFunc関数だけを見た時にgameの初期値がわからないため、
初期値によってはplayerが初期化されずに使用されることがある、というメッセージですね。
ループの前にplayerを適当な値で初期化するようにするといいでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 do~while文とwhile文
返信数: 2
閲覧数: 3727

Re: C言語 do~while文とwhile文

scanf関数に渡す書式指定文字列中の空白は、
「次の空白文字でない文字の直前まで読み飛ばす」という意味になります。
そのため、空白文字でない文字が入力されるまで入力を要求し続けることになります。
この空白を削除することで、動作を改善できるでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: C 大学の課題です。助けてください!
返信数: 8
閲覧数: 6199

Re: C 大学の課題です。助けてください!

あたっしゅ さんが書きました:
3年前
> 1 行の長さに上限を勝手に設けてはいけなく,メモリ を動的に確保してはいけないとする.

この条件では、作成不可能じゃ...コンピュータ通訳で、意味が逆になったんでしょうか ?
先頭のK文字と最後のK文字だけを保持しておけばいいので、作成不可能ではないと思います。
再帰だと末尾再帰最適化がされる保証が無く、スタックオーバーフローが怖いので、
仕方がないからsetjmp/longjmpを使うのが吉…ですかねえ…?
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: C 大学の課題です。助けてください!
返信数: 8
閲覧数: 6199

Re: C 大学の課題です。助けてください!

課題の丸投げは禁止です。 フォーラムルール を読み、従ってください。 質問は具体的にする 詳しくは「回答者が困る質問例」をご覧下さい 「うまくいきません」という質問は大抵回答に困ります。 自分は今何がしたくて どう取り組んで(作ったプログラムはどれで どのようなエラーやトラブルで困っていて 自分は何が解らないのか、知りたいのか 今のCの知識はどの程度なのか この5点をしっかりと明記して下さい。 環境に依存する場合やライブラリを使っているときは 使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。 コンパイルエラーの質問時は必ず最低限のエラーメッセージも書きましょう。 宿題の質問は O...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: クラスを使ったメニュー処理
返信数: 3
閲覧数: 4049

Re: クラスを使ったメニュー処理

-842150451は2の補数として16進数にすると0xCDCDCDCDとなります。 これはVisual C++のデバッグモードでは「newなどで確保されたが、まだ初期化されていない領域」を表します。 実際、コードを見ると、Data::outputではnewで確保した配列のデータを明示的に初期化せずに出力していますね。 この配列の要素であるクラスMonsterのメンバはint型であり、コンストラクタやメンバの宣言に初期化はありません。 今回のnewでは、初期化用のデータが指定されていないので、確保された領域はdefault-initializeされます。 (N3337 5.3.4 Newの15...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: クラスを使ったメニュー処理
返信数: 3
閲覧数: 4049

Re: クラスを使ったメニュー処理

C++のenumの値は明示的に指定しないと0から始まるので、 mode = 0のときwhile文の条件の mode < MODE_FINISH || mode >= MODE_MAX すなわち mode < 0 || mode >= 5 は偽になり、入力を受け付けずにそのままswitch文へ行き、 case MODE_FINISH:を実行して終了することになります。 modeを0ではなく-1やMODE_MAXなどwhile文の条件を真にする値で初期化すると改善するでしょう。 もしくは、while文のかわりにdo-while文を使うようにしてもいいでしょう。 ちなみに、このコードではData::...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: OpenGL ポリゴンにテクスチャを貼り付けたいが上手く行かない
返信数: 1
閲覧数: 3394

Re: OpenGL ポリゴンにテクスチャを貼り付けたいが上手く行かない

OpenGLは詳しくないですが、ざっと見た感じだと これから使うはずのテクスチャをいきなりglDeleteTexturesで消してしまっている テクスチャを参照せずに固定の色を返すフラグメントシェーダを使用している というのがまずそうだと思います。 【参考】 glDeleteTextures は、紐付けを解除するらしいです。 If a texture that is currently bound is deleted, the binding reverts to 0 (the default texture). 一方、 glDeleteShader は、紐付けを解除しないらしいです。 If...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: パソコン甲子園について
返信数: 5
閲覧数: 5181

Re: パソコン甲子園について

この問題の場合は、2次元配列の方がいいだろ。 この問題で入力される座標の範囲はx, yともに-10**6~10**6なので、 この範囲のタイルを全て2次元配列で用意すると、 1個のタイルを1バイトで表現すれば約4TBになってしまいます。 1個のタイルを2ビットで表現しても、約1TBです。 これは現在一般的なコンピュータの主記憶で扱うには大きすぎるでしょう。 また、この巨大な配列の要素を埋めるのにも、現在一般的なコンピュータでは長時間かかることになるでしょう。 従って、わざわざ指定の場所に到達するまでの全タイルの情報を持つのではなく、 塗った範囲の四隅の座標だけを管理する方がいいでしょう。 (...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: パソコン甲子園について
返信数: 5
閲覧数: 5181

Re: パソコン甲子園について

四隅の座標はxとyに分け、タイル1個分を1とした値で複数のint型の変数で保持するといいでしょう。

指定の位置が次に色を塗る領域に入っているかは、次に色を塗る領域を求めた後、
「次に色を塗る領域の東の端のx座標 ≦ 指定の位置のx座標」かつ
「指定の位置のx座標 ≦ 次に色を塗る領域の西の端のx座標」かつ
「次に色を塗る領域の南の端のy座標 ≦ 指定の位置のy座標」かつ
「指定の位置のy座標 ≦ 次に色を塗る領域の北の端のy座標」
かで判定するといいでしょう。 (条件を全て満たす ⇔ 入っている)
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: パソコン甲子園について
返信数: 5
閲覧数: 5181

Re: パソコン甲子園について

過去問|パソコン甲子園2019
に載っている予選の問題ですか?
そうだとしたら、色が塗られている領域は常に長方形になるので四隅の座標を保持するだけで管理でき、
次に色を塗る領域もそこから簡単にわかるので、
指定の位置が次に色を塗る領域に入っているかを判定し、入っていればその色を出力するようにすればよさそうですね。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: URLがUTF8でどうしたらいいのかわからない
返信数: 4
閲覧数: 4973

Re: URLがUTF8でどうしたらいいのかわからない

自作関数とのことなので、通信のログを取るなどしてデバッグをするのがいいと思います。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: エラーの原因がわからない
返信数: 10
閲覧数: 7504

Re: エラーの原因がわからない

エラーの原因は、プログラムの実行をmain関数から始めることになっているのに、そのmain関数が無いことですね。 あと、ファイルの先頭に GameMsg002()など、まだ定義されていない 関数のプロトタイプ宣言があるようですが、 コンパイラから見たら、 「は?あるって書いてあったのに GameMsg002関数ねぇじゃん❗」って なるので、 コンパイラから見たら、宣言がある時点でその関数は「ある」ということになります。 すなわち、関数を呼び出すコードがあるとき、引数や戻り値をどう扱うかがわかります。 コンパイルの段階ではそれで処理に十分であり、関数の定義は必要ありません。 (このため、関数の宣...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ 画面に敵を1体しか表示できない
返信数: 11
閲覧数: 21469

Re: DXライブラリ 画面に敵を1体しか表示できない

弾の移動処理においてEbulletCounter[j] = 0;を実行しているが、
ここでのjは敵ではなく敵の弾の位置なので、関係ない敵のデータを書き換えてしまうことに繋がり、不適切です。
EbulletCounter[j] = 0;は弾を出す処理の方で行うべきでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ 画面に敵を1体しか表示できない
返信数: 11
閲覧数: 21469

Re: DXライブラリ 画面に敵を1体しか表示できない

くろのま さんが書きました:
3年前
これはどうですか!直しました!
ブロックと最初と最後でインデントの深さが違う以外は、問題なさそうだと思います。
くろのま さんが書きました:
3年前
敵の弾はこれであっていますか?自分が動かしたいようには動いています。
ここには敵本体の処理しか書かれていないようなので、「敵の弾」としては論外ですね。
書かれている処理については、
敵を出現させる時のループの上限がENEMYではなくマジックナンバーの3になっているのが気になりますが、
今のところ出現させる敵は3体のみで、かつENEMYは3以上なので、異常動作の原因にはならないでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ 画面に敵を1体しか表示できない
返信数: 11
閲覧数: 21469

Re: DXライブラリ 画面に敵を1体しか表示できない

敵が画面上に現れてから60フレームごとに1発弾を撃つようにしたいです。弾を出したらカウンターを0にすればいけるかなと思ったのですが、全然できませんね… カウンターを敵ごとに用意するといいかもしれません。 コードを下のように変更してみたら、とりあえず出てきた敵は倒せるようになったのですが、これであっているでしょうか? 間違っています。 外側のループの継続条件が i < SHOT+j となっており、 jは内側のループを抜けるときにはSHOTになっているので、iは SHOT+SHOT-1 までループしてしまいます。 一方、bulletFlagなど弾に関する配列の要素数はSHOTしか無いため、範囲外...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ 画面に敵を1体しか表示できない
返信数: 11
閲覧数: 21469

Re: DXライブラリ 画面に敵を1体しか表示できない

配列上で同じ位置にある敵と弾しか見ていないというのがよく分かりません。詳しく教えていただけないでしょうか? 複数あるもの同士の通常の当たり判定では、二重のループを用い、 存在しているものの組み合わせ全てについて判定を行います。 mixcpp-20965-1-20200821.png 一方、くろのまさんのコードでは、ループを一重しか用いておらず、限られた組み合わせしか判定をしていません。 mixcpp-20965-2-20200821.png このため、判定しない組み合わせでは判定が行われず、「当たらない」ということになります。 それと、今まで更新処理はシーン変更のみと思い込んでいたのですが、...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ 画面に敵を1体しか表示できない
返信数: 11
閲覧数: 21469

Re: DXライブラリ 画面に敵を1体しか表示できない

・敵を出現させる処理において、フラグを確認していないため、常に最初の敵を上書きしてしまう
・敵や敵の弾を動かす処理において、余計なbreak;があるため、最初の有効な敵しか処理されない
・自機の弾と敵の当たり判定において、敵のフラグを確認していない上、
 配列上で同じ位置にある敵と弾しか見ていないため、不適切な動作になる

といった問題がありそうです。
また、Game_Update関数があるのに、Game_Draw関数で大量の更新処理をしているのも、よくないと思います。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題
返信数: 2
閲覧数: 3891

Re: 大学の課題

詳しくみてはいませんが、とりあえずざっと見たところ、以下の怪しい点がありました。 ●13行目に不正な文字列 */ があり、コンパイルエラーになる ●learn_w関数の for (p = 1; p < PatternNo; p++) { w[i][j] = pattern[p][i] * pattern[p][j]; } という部分は、代入は前の値を上書きするため実質 w[i][j] = pattern[PatternNo - 1][i] * pattern[PatternNo - 1][j]; と同じ意味であり、ループの意味がない (和を求めるなどの計算をしたかったのではないか?) ●inp...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 2DRPGゲームにおける、巡回中に視線内の主人公を追う敵キャラの作成
返信数: 3
閲覧数: 4086

Re: 2DRPGゲームにおける、巡回中に視線内の主人公を追う敵キャラの作成

オフトピック
あたっしゅ さんが書きました:
3年前
インデントがなくなってしまったソースコードを[ code ][ /code ]で囲っても、しょうがないだろう。
最初の投稿の引用画面でもインデントが無いため、
「なくなってしまった」ではなくて最初からインデントが無い可能性も考えられます。
また、今回は対象が無いようですが、codeタグには[​i]などがBBCodeのタグとして処理されるのを
防ぐ効果もあるため、しょうがないとは限らないでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: fscanfの挙動
返信数: 3
閲覧数: 3741

Re: fscanfの挙動

これはfscanfが問題なのではなく、 その次のbubbleSort関数の処理にかなり長時間(実験はしていないが、1時間くらい~?)かかるだけだと思います。 topコマンドなどでCPU使用率をチェックし、CPU使用率が下がるのを待ってから入力をしてみましょう。 なお、普通の バブルソート はO(n^2)であり、10000件であれば数秒~数十秒程度でできるはずですが、 ここで使われているbubbleSort関数はO(n^3)なので、 nが大きくなっていくに従いバブルソートよりさらにどんどん処理時間が伸びます。 また、このコードには他にも ・binary_search関数の引数imaxに与える値が...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 課題
返信数: 4
閲覧数: 3354

Re: 課題

似た質問がありました。
同じ人のマルチポストだとは断定はできませんが…

C言語 プログラミングy = sin(x)のグラフを 0≦x≦2π の範囲について π/10... - Yahoo!知恵袋
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 複数個の英単語を順次読みこんで、頭文字の出現回数が多い順にデータを出力するプログラムを作成したいです
返信数: 2
閲覧数: 3758

Re: 複数個の英単語を順次読みこんで、頭文字の出現回数が多い順にデータを出力するプログラムを作成したいです

作成したいのであれば、作成すればいいでしょう。
希望だけで質問が書かれていないようですが、何をお願いするのですか?
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: シフト演算のプログラムについての質問
返信数: 4
閲覧数: 4655

Re: シフト演算のプログラムについての質問

オフトピック
usao さんが書きました:
3年前
> C言語2級レベル程度の...

C言語って級とか段とか(?)あるんすか?
これですか、わかりません。
試験内容 - 検定試験について - C言語プログラミング能力認定試験│資格検定のサーティファイ│あなたのスキルアップを応援します|
※現在Firefoxでは閲覧できないようです。Google Chromeなら警告は出るものの閲覧できました。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: シフト演算のプログラムについての質問
返信数: 4
閲覧数: 4655

Re: シフト演算のプログラムについての質問

・一周したら変わらないので、一周以内のシフト幅に補正する
・シフト幅が0なら、そのまま出力する
・そうでないなら、左に行った分を右に入れる

コード:

unsigned short int LeftRotate(unsigned short int data, int bit)
{
	int size = sizeof(unsigned short) * 8;
	bit %= size;
	if (bit < 0) bit += size;
	if (bit == 0) return data;
	return (data << bit) | (data >> (size - bit));
}
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 動的に構造体配列をとりたい C言語
返信数: 3
閲覧数: 3807

Re: 動的に構造体配列をとりたい C言語

pDataには1要素分しか確保されていないバッファへのポインタ
(またはmallocが失敗した場合NULL)が代入されているのに、
存在しない2~10要素目へのアクセスがあるため、未定義動作になります。
範囲外へのアクセスが具体的にどうして落ちるのに繋がるかは環境によりますが、
・ヒープの管理情報を破壊し、malloc()やfree()で不都合が出た
・OSの管理レベルで確保されていない場所にアクセスした
などが考えられます。
freeのやり方は、ループ内で10回mallocさせているのに対し、
最後の1回で確保したバッファしかfreeしていないので、正しくないです。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 途中で落ちる理由が知りたいです。
返信数: 2
閲覧数: 3592

Re: 途中で落ちる理由が知りたいです。

pDataには1要素分しか確保されていないバッファへのポインタ
(またはmallocが失敗した場合NULL)が代入されているのに、
存在しない2~10要素目へのアクセスがあるため、未定義動作になります。
範囲外へのアクセスが具体的にどうして落ちるのに繋がるかは環境によりますが、
・ヒープの管理情報を破壊し、malloc()やfree()で不都合が出た
・OSの管理レベルで確保されていない場所にアクセスした
・AddressSanitizerなどの範囲外へのアクセスを検出する仕組みに引っかかった
などが考えられます。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: c++ マウスを使ったゲーム
返信数: 7
閲覧数: 5970

Re: c++ マウスを使ったゲーム

試しにブロック崩しを作ろうとしたのですが、バーを動かすところで行き詰まってしまいました… 何がわからないのかわからないので、とりあえず作ってみました。 DXライブラリ使用版 #include <DxLib.h> const int WINDOW_WIDTH = 640; const int WINDOW_HEIGHT = 480; int WINAPI WinMain(HINSTANCE /* hInstance */, HINSTANCE /* hPrevInstance */, LPSTR /* lpCmdLine */, int /* nCmdShow */) { // DXライブラリ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: キャラクタ移動制御とキー入力
返信数: 2
閲覧数: 3651

Re: キャラクタ移動制御とキー入力

キーボードの仕様の可能性があります。
もしそうであれば、「Nキーロールオーバー」のキーボードにすると改善するでしょう。
まずは移動処理を切り離して、キー入力がうまく取れているかだけをチェックしましょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: Mac Xcordでの画面のクリア
返信数: 3
閲覧数: 3893

Re: Mac Xcordでの画面のクリア

system()はstdlib.hにある関数なので、コードの先頭に

コード:

#include <stdlib.h>
を追加してください。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: c++ 玉の反射について
返信数: 10
閲覧数: 7237

Re: c++ 玉の反射について

calbee さんが書きました:
3年前
r=半径
((x-x1)^2 + (y-y1)^2 <= (r+r1)^2)
という判定法を見つけたのですが、判定範囲が広くなってしまい、何故かできないです…
そのコードは見せていただけないですか?
ちなみに、C++のプリミティブ型では「^」は累乗ではなくxorの演算子です。
calbee さんが書きました:
3年前
問題ないはずですよね…?
これで問題ないかはわかりません。
・calbeeさんの考えている世界で「1」がどの程度の大きさなのかわからないので、
 当たり判定の範囲が適切かわかりません。
・各識別子の宣言が書かれていないので、型が適切かわかりません。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: ニュートン法(Newton’s Method)
返信数: 2
閲覧数: 3675

Re: ニュートン法(Newton’s Method)

・標準では使えない全角スペースがコードに含まれている
・入力を受けるのはnumなのに、式中ではAを使おうとしている
・Xを普通の変数として使うのか配列として使うのかが統一されていない
という問題があります。
全角スペースを半角スペースに置換し、変数の名前や使い方を統一しましょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: c++ ドット グラデーション
返信数: 5
閲覧数: 5110

Re: c++ ドット グラデーション

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 何故これで色が薄まるのか分からないです… 間違っているかはともかく、今のコードを見ると、 rについては最初から255なので次の値も255なので変わらず、 g, bについては最初は255より小さい値なので255になるまで1ずつ増えていくので、 赤だけが目立っている状態(R,G,B)=(255,0,0)から白(R,G,B)=(255,255,255)に近づいていくので、 これが「色が薄くなる」というように見...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: C++での迷路生成プログラムについて
返信数: 4
閲覧数: 4781

Re: C++での迷路生成プログラムについて

オフトピック
やはり[​/i]がなくても[​i]が斜体タグと認識される仕様は実害が発生する悪い仕様だ。
早く撤廃されてほしいなあ。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: C++での迷路生成プログラムについて
返信数: 4
閲覧数: 4781

Re: C++での迷路生成プログラムについて

1. MazeMap::MazeMap(int w, int h) { width = 2 * w + 1; height = 2 * h + 1; data = new char* [width]; for (int i = 0; i < width; ++i) { data = new char[height]; } } MazeMap::~MazeMap() { for (int i = 0; i < width; ++i) { delete[] data; } delete[] data; } は MazeMap::MazeMap(int w, int h) { width = 2 ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: sinの振幅によってLED点灯
返信数: 4
閲覧数: 4426

Re: sinの振幅によってLED点灯

オフトピック
こーたろー さんが書きました:
3年前
SINのハイレクの件名で教えていただいた
sinの配列のことでしょうか?
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: sinの振幅によってLED点灯
返信数: 4
閲覧数: 4426

Re: sinの振幅によってLED点灯

コード:

0.8<=c[i]<1.0
という条件式は、範囲の判定ではなく、

コード:

0.8<=c[i]
の値(真なら1、偽なら0)が

コード:

1.0
より小さいか、という判定になります。
範囲の判定をしたければ、

コード:

0.8<=c[i] && c[i]<1.0
のようにするべきでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: sinの振幅によってLED点灯
返信数: 4
閲覧数: 4426

Re: sinの振幅によってLED点灯

まず、

コード:

#define N(99)
は名前と値の間に空白を入れて

コード:

#define N (99)
としたほうがよさそうな気がします。

また、2個目のループでは、iの値がNを超えたら0に戻す処理を入れないと、範囲外に行ってしまって危なそうです。

ちなみに、LED_D*_Onには()をつけて関数を呼んでいるようなのに、
LED_D*_Offには()をつけていないのはなぜでしょうか?
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: sinの配列
返信数: 3
閲覧数: 3720

Re: sinの配列

まず致命的な点として、現状では配列a, b, cはN要素(添字は0~N-1)しか無いので、 a[N], b[N], c[N]にアクセスしてはいけません。 さらに、浮動小数点演算は誤差を含むので、 ループは整数で回し、最大値と現在の値の比を用いて計算する方がいいでしょう。 #include<stdio.h> #include<math.h> #define N (99) void main(void) { int i = 0; double a[N + 1], b[N + 1], c[N + 1], pi, t; pi = 4 * atan(1.0); printf(" 時間     ωt   ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 変数を使ってy座標を指定しその座標を習得する方法について
返信数: 1
閲覧数: 3185

Re: 変数を使ってy座標を指定しその座標を習得する方法について

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 貼られているコードは、「...」をコメントアウトし、先頭に typedef struct task { int pos[1024]; } TASK; int SOZ_Mouse_Button(int a) { return a; } TASK* TASK_start_GRP() { static TASK a; return &a; } int X, Y, num, save_id, mouse_x, ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: コンパイルエラーの対処法
返信数: 4
閲覧数: 6083

Re: コンパイルエラーの対処法

警告を無視するか、scanfの戻り値を投げ捨てずチェックするようにするといいでしょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: コンパイルエラーの対処法
返信数: 4
閲覧数: 6083

Re: コンパイルエラーの対処法

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 このプログラムをコンパイルすると次のエラーがでて対処法がわかりません ここには警告しか書かれていないようですが、どのようなエラーが出るのですか? ./Main.c:9:13: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[(sizetype)(a)]’ [-Wformat...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 1万人分の身長データを小さい順に並べ替える方法
返信数: 3
閲覧数: 3882

Re: 1万人分の身長データを小さい順に並べ替える方法

一万人分の身長データを小さい順に並べ替える方法がわかりません。 並べ替え自体は、今のコードの処理対象の数を変えるだけでできると思います。 結果の出力の位置も変えたほうがいいかもしれません。 1万人なのでファイル処理を使います。 「ファイル処理」って、具体的にどのような処理ですか? 入力だけですか?出力もですか? ファイルのフォーマットはどのような感じですか?テキストですか?バイナリですか? ファイルは自前で開きますか?それとも(リダイレクトで)シェルに任せますか? それに合わせてscanf、fscanf、fread、printf、fprintf、fwriteなど、 適切な関数を使って読み(書...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: calc関数の構造について、どなたかご教授お願いします。
返信数: 4
閲覧数: 4016

Re: calc関数の構造について、どなたかご教授お願いします。

文字の数値への変換にatoi関数を使っているのが間違っています。
atoi関数の引数に渡すのは、文字列(の先頭へのポインタ)でなければなりません。
'0'~'9'の文字コードは連続していることが保証されているので、
1文字を数値に変換するには、文字コードから'0'を引くといいです。

また、演算子を比較する場所で=演算子を用いた代入をしている、という間違いもあります。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: calc関数の構造について、どなたかご教授お願いします。
返信数: 4
閲覧数: 4016

Re: calc関数の構造について、どなたかご教授お願いします。

1. 今の演算子、今の項の暫定値、計算結果を覚える変数をそれぞれ用意する 2. 今の演算子を+、今の項の暫定値を0、計算結果を0で初期化する 3. 次の処理を左の文字から順に行う 3-1. 今の文字が数字だったら、今の項の暫定値を(今の項の暫定値×10+今の数字が表す値)に更新する 3-2. 今の文字が演算子だったら、  計算結果を「計算結果 今の(覚えている)演算子 今の項の暫定値」に更新した後、  今の演算子を今の文字に更新し、今の項の暫定値を0に更新する 4. 全ての文字の処理を終えたら、計算結果を「計算結果 今の(覚えている)演算子 今の項の暫定値」に更新する 5. 計算結果を返す と...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の分割について、どなたかご教授お願いします。
返信数: 2
閲覧数: 3631

Re: 文字列の分割について、どなたかご教授お願いします。

カンマがあったら今の要素に終端を加えてコピー先を次の要素にする、とするといいでしょう。 void split(const char *in_dat, struct str_split *out_dat) { int i, pos = 0; out_dat->index = 0; for(i = 0; in_dat[i] != '\0'; i++){ if(in_dat[i] == ','){ /* カンマがあったら */ out_dat->str[out_dat->index].c[pos] = '\0'; /* 今の要素に終端を加えて */ out_dat->index++; /* コピー先...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 6414

Re: 課題が全く分かりません...教えてください

grp.vset[​i].linkにしたらいいです。 #include<stdio.h> #include<stdlib.h> #define VMAX 10 struct edge { char label; struct edge *next; }; struct vertex { char label; struct edge *link; }; struct graph { int v,e; struct vertex vset[VMAX]; }; //点対(枝)をグラフに追加する関数 void add(struct vertex* g, char e) { struct edge* ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 6414

Re: 課題が全く分かりません...教えてください

「読み込みは終わった」と言っていたにもかかわらず点ラベル対の読み込みが書かれていないようですが、 詰んだという意味での「終わった」でしょうか? まずはここまで読み込んだ情報をメモリに保存しましょう。 //点数読み込み grp.v=scanf("%d%*c",&n); // 追加:バッファオーバーラン防止 if (n > VMAX){ fputs("too much vertice!\n", stderr); return 1; } grp.v=n; // 追加:読み込んだ点数を保存する //点ラベルを読み込み for(i=0;i<n;i++){ scanf("%c%*c",&c); grp.v...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 6414

Re: 課題が全く分かりません...教えてください

MEAさんのプログラムをベースにしたいので、読み込みまでのプログラムを貼っていただけますか?
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: ヒープの探索
返信数: 1
閲覧数: 3190

Re: ヒープの探索

ヒープは木構造なので「本来配列であるヒープ」というのは意味がよくわかりませんが、
postorderの所を「insert関数において子や親への辺をどう表現しているかを考え、適切に実装してコンパイルする」
と探索できるようになると思います。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 二分木insertについて
返信数: 1
閲覧数: 3083

Re: 二分木insertについて

この質問で書かれているコードが参考になりそうです。
挿入した木の深さを返す関数 - プログラマ専用SNS ミクプラ
リンク先のinsert関数において、levは節点pの深さになっているので、
追加した節点ptの深さを返すようにするにはlevのかわりにlev+1をreturnするようにするとよさそうです。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 6414

Re: 課題が全く分かりません...教えてください

まずはリンクリストのことはおいといて、点ラベルと点ラベル対の読み込みだけをするプログラムを書いてみましょう。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 挿入した木の深さを返す関数
返信数: 1
閲覧数: 3187

Re: 挿入した木の深さを返す関数

insert関数の最初にlevに0を代入しているのをやめるといいと思います。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 助けてほしいです
返信数: 2
閲覧数: 3658

Re: 助けてほしいです

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
papaiya さんが書きました:
3年前
この問題が全然わかりません。ヒントが欲しいです
「メッセージ~」の出力と入力の読み込みは、ループの中でやるべきです。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: scanf関数・forとif文の組み合わせ
返信数: 2
閲覧数: 3841

Re: scanf関数・forとif文の組み合わせ

コード:

#include <stdio.h>
int main(void) {
    for (3人分) {
        キーボードからの西暦年の入力を受け取る

        昭和あるいは平成何年か表示する
    }
}
のような感じで処理するといいでしょう。

また、ループを書いているのでループされます。
せっかくseirekiに入力を読み込んでいるのに、for文のループ変数にしてぶち壊してはいけません。
今あるfor文は両方とも消しましょう。

さらに、昭和のはずの時も「平成」と出力してしまっているので、そこも修正するべきですね。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 6414

Re: 課題が全く分かりません...教えてください

ヒントを出すので、これで書けるところまで書いてみてください。 ●入力の読み込み方 scanf()関数を用いることで、入力を読み込むことができます。 書式%dを用いると整数を、%(最大バイト数)sを用いると空白を含まない文字列を読み込むことができます。 scanf()は成功すると読み込んだデータ数、失敗すると-1を返すので、 これを用いて読み込みが成功したかをチェックすることができます。 例 #include <stdio.h> int main(void) { int ivalue; char cvalue1[4], cvalue2[4], cvalue3[4]; // 整数を読み込む if ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: ヒストグラムの工夫
返信数: 2
閲覧数: 3487

Re: ヒストグラムの工夫

一番多く出た目の数を*何個で表示すると決め、
それぞれの目について表示する*の数を
「(一番多く出た目を*何個で表示するか)×(その目が出た回数)÷(一番多く出た目が出た回数)」
で決める、などの表示の仕方ができます。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: くじアプリケーション
返信数: 2
閲覧数: 3775

Re: くじアプリケーション

何を教えてほしいのでしょうか?
フォーラムルールを読み、具体的な質問をお願いします。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: ローレル指数
返信数: 3
閲覧数: 4128

Re: ローレル指数

まず、&が全角になっているのでコンパイルエラーになる環境が多そうです。 次に、割り算が整数で行われるため、小さい数を大きい数で割ると0になってしまい、これが0になる原因です。 さらに、weight/height*height*heightは「weightをheightの3乗で割ったもの」ではなく、 「weightをheightで割り、heightを2回掛けたもの」になってしまいます。 最後に、&を半角にし、 Rohrer= weight/height*height*height*10*10*10*10*10*10*10; を Rohrer= (double)weight/height/heig...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: fgetsを使った文字読み出し
返信数: 2
閲覧数: 3351

Re: fgetsを使った文字読み出し

読み込んだ行を全てメモリ上に保持するバージョンを作ってみました。 エラー時のメモリ開放は省略しています。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, const char * argv[]) { char** array = NULL; size_t current_line = 0; char* line = NULL; size_t line_length = 0; char buffer[256]; while(fgets(buffer,sizeof(buffer),stdin...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: fgetsを使った文字読み出し
返信数: 2
閲覧数: 3351

Re: fgetsを使った文字読み出し

条件としてはテキストの文字数は236文字以内行数は500行です。下の通りのプログラミングを書いたのですが一行しか読みこまれずこまっています。。 全行読めるように添削して頂けませんか? あなたのコードの問題点は、以下のとおりです。 まず、arrayの要素数が足りません。 ここで扱う「文字」が1バイトで表せる文字のみであると仮定しても、 236要素しか無いので236文字の行を入れるには改行文字と終端文字分の2要素が足りません。 また、例えば UTF-8 では1文字を最大4バイトで表すので、これを扱うのであれば要素が4倍必要です。 さらに、複数の文字を合成してできる絵文字などを1文字としてカウント...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: C駆け出しです。アドバイスお願いします。
返信数: 2
閲覧数: 3443

Re: C駆け出しです。アドバイスお願いします。

全てのscanfの処理に成功したとしても、num2は初期化されていないので値は不定となり、
それを使用した計算は未定義動作になります。
s1やp1のかわりにnum2に対し整数を読み込むようにするか、
num2のかわりにs1やp1を使用して計算をするようにする (いずれか1つ) といいでしょう。

ちなみに、
・printfで出力するメッセージの中に不自然な「11」や「3」が混ざっている
・printfの引数に無駄なs1やp1が入っている (変換指定が無いのにデータが渡されている)
のは不自然ですが、C言語としては無害です。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: じゃんけん
返信数: 4
閲覧数: 2499

Re: じゃんけん

オフトピック
内容からhhdhさんのn人でじゃんけんの続きと考えられますが、投稿者の名前が異なります。
いい加減な名前を使う行為、および名前を複数利用して質問する行為はフォーラムルール違反です。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 「セキュリティ証明書の期限が 2 日前に切れています。」と言われます。
返信数: 4
閲覧数: 5286

Re: 「セキュリティ証明書の期限が 2 日前に切れています。」と言われます。

証明書が更新されたようです。
mixcpp-syoumeisyo-20200606.png
証明書
mixcpp-syoumeisyo-20200606.png (16.06 KiB) 閲覧数: 4528 回
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: NNによるsin波の学習について
返信数: 5
閲覧数: 11672

Re: NNによるsin波の学習について

リョースK さんが書きました:
3年前

コード:

    for(count = 0;count<10;count++){
        w_11 +=  w1[count];
        w_22 +=  w2[count];
        printf("%lf と %lf\n",w1[count],w2[count]);
    }
この部分でも、範囲外であるw1[9]へのアクセスが発生してしまい、危険です。
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: NNによるsin波の学習について
返信数: 5
閲覧数: 11672

Re: NNによるsin波の学習について

double w1[9]; //入力層→隠れ層の重み double w2[10];//隠れ層→出力層の重み(w_2[0]はバイアス) for(count = 0;count<=9;count++){ if(count == 10){ w2[count] = default_value(); } else{ w1[count] = default_value(); w2[count] = default_value(); } } この部分では、範囲外であるw1[9]へのアクセスが発生してしまい、危険です。 また、このループ条件ではcount == 10が真になることは無いはずなので、 意図とコ...
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: 「セキュリティ証明書の期限が 2 日前に切れています。」と言われます。
返信数: 4
閲覧数: 5286

Re: 「セキュリティ証明書の期限が 2 日前に切れています。」と言われます。

前回の証明書期限切れは3日程度で回復したようですが、今回は3週間経ってもまだ回復しないですね…

はたして回復する日は来るのでしょうか…?
by みけCAT
3年前
フォーラム: C言語何でも質問掲示板
トピック: ウィンドウのクライアント領域をjpegで保存したいです
返信数: 1
閲覧数: 3633

Re: ウィンドウのクライアント領域をjpegで保存したいです

まず、 GetWindowDC関数 はタイトルバーなども含めたウィンドウ領域のデバイスコンテキストを返すので、 クライアント領域のデバイスコンテキストを得るためにかわりに GetDC関数 を用います。 なお、GetDC関数(やGetWindowDC関数)で取得したデバイスコンテキストは ReleaseDC関数 で解放するべきです。 画像をjpeg保存するには、ライセンスを承諾できるのであればライブラリを使うのが簡単です。 以下に、 libjpeg を使ったコードの例を示します。 libjpegの使用条件は、大まかにいえば「the Independent JPEG Groupの成果物を使っている...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: 嘘つき族と正直族の問題
返信数: 2
閲覧数: 5846

Re: 嘘つき族と正直族の問題

オフトピック
あや さんが書きました:
4年前
受付中
回答 2
投稿 2020/02/05 19:29
評価 -5
クリップ 2
VIEW 151

aya.mon
score 7
不自然な記述、マルチポストですって言っているようなものじゃないですか…
相互リンクしなくちゃダメですよ…

C++ - 嘘つき族と正直族の問題|teratail
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: コントローラを使いマス単位で動かす
返信数: 5
閲覧数: 9266

Re: コントローラを使いマス単位で動かす

わからなければググるなどして考えるのがいいと思います。

ゲーム 前のフレーム 押されていない 判定 - Google 検索

↓ヒットしたサイトの例
【ゲーム】入力の基本
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: 無限ループさせる方法教えてください
返信数: 2
閲覧数: 7067

Re: 無限ループさせる方法教えてください

breakを消してみたんですができなくてどうしてもやり方がわかりません 何がしたいのですか? 「無限ループさせる」だけなら、今あるコードを全部消して int main(void) { for(;;); } だけで良いでしょう。 } while ((choice1 < 1) || (choice1 > 4)); return 0; } が } while ((choice1 >= 1) || (choice1 <= 4)); return 0; } にすればいいんじゃねーの ? 全ての整数は1以上または4以下なので、こうすると常に成り立つ条件式になる、ということですね。 もっとシンプルに } ...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: コントローラを使いマス単位で動かす
返信数: 5
閲覧数: 9266

Re: コントローラを使いマス単位で動かす

Key[KEY_INPUT_RIGHT]のようなコントローラの各ボタンが連続で
押されているフレーム数が入る配列を作って使うか、
コントローラの各ボタンが前のフレームで押されていたかを記録しておき、
今のフレームで押されていて、かつ前のフレームで押されていない時のみ動くようにすることで、
一回だけ押すと一マスだけ動くようにできると考えられます。
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルから構造体の配列に代入
返信数: 4
閲覧数: 8046

Re: テキストファイルから構造体の配列に代入

humen[0].flag = 1; for (int i = 1; i < HUMEN_MAX; i++) { if (humen[i - 1].flag == 1)humen[i].flag = 0; if (humen[i - 1].flag == 0)humen[i].flag = 0; if (humen[i - 10].flag == 0)humen[i].flag = 2; if (humen[i - 1].flag == 2)humen[i].flag = 0; if (humen[i - 20].flag == 2)humen[i].flag = 1; if (i == H...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルから構造体の配列に代入
返信数: 4
閲覧数: 8046

Re: テキストファイルから構造体の配列に代入

DxLib.hとして以下のコードを用意し、humen/君の名は.txtとして添付のテキストファイルを置いて実行したところ、 0バイトの出力が得られました。 #include <windows.h> #include <stdio.h> int chr; struct { char flag; int cnt; int knd; int place; bool lock = false; } humen[100000]; const int HUMEN_MAX = 100000; void WaitKey() {} void freopen_s(FILE** a, const char*, co...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルから構造体の配列に代入
返信数: 4
閲覧数: 8046

Re: テキストファイルから構造体の配列に代入

もし何か足りなかたら言ってください。 変数?chrおよびhumen、定数?HUMEN_MAXの定義が書かれていないようです。 また、humenがhumen_t*型であると仮定すると、 printf("%s", &humen[i].flag); や printf("%s", &humen[k].flag); は、範囲外へのアクセスで未定義動作になりますね。 printf("%c", humen[i].flag); や printf("%c", humen[k].flag); のようにしたほうがいいでしょう。 上の引用部分、「足りなか」と「たら」の間に「っ」が足りないようですね。 また、 何か不...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: menuを自動生成するプログラム
返信数: 4
閲覧数: 7646

Re: menuを自動生成するプログラム

mvprintw(3) manページ
mvprintw
mvprintw - man pages section 3: Curses Library Functions

mvprintfw関数の第一引数と第二引数はy, xの順番であるのに、
誤ってx, yの順番で座標を渡してしまっているのが原因であると考えられます。
オフトピック
x, yと書いているサイトもあるので、引っかかってしまったのかな…?
ncursesの使い方
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: menuを自動生成するプログラム
返信数: 4
閲覧数: 7646

Re: menuを自動生成するプログラム

menu関数を呼び出す場所の前に、以下の例のようなmenu関数の宣言

コード:

int menu(int x, int y, int koumoku, char menu[][255]);
または定義が必要です。

また、提示されているgame_hedder.hは、インクルードが無限に再帰してしまうなどの問題があるため、
適切な内容に書き換えるか、本体からのインクルードを外す必要があります。
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: VMAとLMAについて
返信数: 2
閲覧数: 7502

Re: VMAとLMAについて

「VMA LMA」でググった結果、 組み込みシステムにおけるアドレスの考え方 (VMA, LMAについて) - FPGA開発日記 などいろいろ出てきました。 このサイトの情報と照らし合わせて考えると、 ここでの「ローダがプログラムを読み込む」というのは、 CPUによるプログラムの 実行開始前 に用いる、 ローダ用のアドレス空間 を用いて読み込むことであり、 プログラムから取得できるアドレスはCPUによるプログラムの 実行中 に用いるアドレス空間、 すなわちVMAのアドレス空間が用いられると考えられます。 また、これは予想ですが、 リンカスクリプトはLMAの指定が必要な組み込みプログラムの開発で...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: 例外がスローされるとはどういうことなのか
返信数: 8
閲覧数: 15239

Re: 例外がスローされるとはどういうことなのか

tanu_kichi さんが書きました:
4年前
1)>> if (origin_word == h_word)
のような文字列(char配列)の比較は、
size_t len_o = strlen(origin_word);
size_t len_h = strlen(h_word);
if ((len_o == len_h) && (strncmp(origin_word, h_word, len_o) == 0))
のようにするべきだと思います。
strcmp一発ではいけないと思う理由はありますか?
バッファの内容がNUL終端されていない場合にバッファオーバーランするというのは、strlenでも同じでしょう。
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: vector配列に格納した単語に、二分探索を適用して、指定された単語を検索するプログラム
返信数: 7
閲覧数: 9986

Re: vector配列に格納した単語に、二分探索を適用して、指定された単語を検索するプログラム

自覚しているbinary_searchの所を除くと、
  • 戻り値の型がintでないmain関数をグローバルで宣言しているので、C++として不正
  • 「探索単語」の入力に1文字しか格納できないchar型を使用している
  • 複数文字の文字定数'$$' (値は処理系定義) を使用している
  • if文の条件式がtrueになっており、分岐にならない
の4箇所でしょうか?
ループ内でaが更新されず無限ループになるという問題もあるので、
if文の条件式とどっちがツッコミどころか怪しいですね。
また、ループの条件の比較演算子も、逆の方が良さそうです。
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: 木構造編集プログラムのノードの削除機能について
返信数: 6
閲覧数: 9974

Re: 木構造編集プログラムのノードの削除機能について

2点の修正を加えて手元のVisual C++ 2008でコンパイルし、実行したところ、 以下の実行結果が得られ、削除対象ノードの子が削除ノードのあった位置に接続されること、 そして削除対象ノードに子が2個ある場合は削除されないことを確認できました。 YUKI.N>cl test.cpp Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. test.cpp C:\Program...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: 木構造編集プログラムのノードの削除機能について
返信数: 6
閲覧数: 9974

Re: 木構造編集プログラムのノードの削除機能について

「削除する関数」とは、deleteNode関数のことでしょうか? だとすると、 //方向指示に対応する左右ポインタから、削除対象ノードへのポインタを得る。 Node* pDeleteNode=new Node; if (direction == RIGHT) pDeleteNode = pNode->pRight; if (direction == LEFT) pDeleteNode = pNode->pLeft; のnew NodeをNULLに変えるといいでしょう。 なぜならば、ここで余計なノードを確保してしまうと、 その後の代入でメモリリークを起こす可能性がある上、 代入が行われない場合は...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の標準入力について
返信数: 2
閲覧数: 7819

Re: 文字列の標準入力について

まず仕様をきちんと決めましょう。
・入力や出力はどのようなフォーマットですか?
・入力はどのくらいの長さまで対応しますか?
・入力から出力はどのように求めますか?
などなど…
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を呼び出したが関数の中身がうまく機能しない
返信数: 4
閲覧数: 8992

Re: 関数を呼び出したが関数の中身がうまく機能しない

メインプログラムのif (talk == 0) { talkdrow(); }の部分でtalk.hの中に書いてある関数 talkdrow()の中の変数talkの値が変わらないため画面が展開しません。 これは本当ですか? 「メイン関数の中の変数talkの値が変わらないため画面が展開しません。」の間違いではないですか? talk == 1とtalk == 2の時の文字が描画されません。どうしたら描画されるでしょうか。 色の取得をグローバル変数の初期化時(→DxLib_Init()を呼ぶ前)ではなく DxLib_Init()を呼んだ後にすることで、正しく色を取得できるようにすると、 描画される可能...
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: キーを使えるようにする。
返信数: 7
閲覧数: 10705

Re: キーを使えるようにする。

C++ではこのように式文を関数定義の外に書くことはできないからです。

コード:

init_stage(); // stage, pos の初期化
を関数定義の本体の中に入れるなどの修正方法が考えられます。
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: キーを使えるようにする。
返信数: 7
閲覧数: 10705

Re: キーを使えるようにする。

コード:

extern int Key[256];
と書くと良さそうな気がします。
by みけCAT
4年前
フォーラム: C言語何でも質問掲示板
トピック: キーを使えるようにする。
返信数: 7
閲覧数: 10705

Re: キーを使えるようにする。

roji さんが書きました:
4年前
そして、メインプログラム以外のプログラムにvoid Player_Update()という関数を作り
そこに

コード:

int Key[256];

int gpUpdateKey()
{
	char tmpKey[256];
	GetHitKeyStateAll(tmpKey);
	for (int i = 0; i < 256; i++)
		(tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++;
	return 0;
}
と書きたいですが
The XY Problemの疑いがあります。
なぜそのように書きたいのですか?

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