検索結果 6185 件

by みけCAT
10時間前
フォーラム: C言語何でも質問掲示板
トピック: sinの振幅によってLED点灯
返信数: 4
閲覧数: 37

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

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

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
10時間前
フォーラム: C言語何でも質問掲示板
トピック: sinの振幅によってLED点灯
返信数: 4
閲覧数: 37

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

まず、

コード:

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

コード:

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

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

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

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
1日前
フォーラム: C言語何でも質問掲示板
トピック: 変数を使ってy座標を指定しその座標を習得する方法について
返信数: 1
閲覧数: 71

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
2日前
フォーラム: C言語何でも質問掲示板
トピック: コンパイルエラーの対処法
返信数: 3
閲覧数: 138

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

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

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
4日前
フォーラム: C言語何でも質問掲示板
トピック: 1万人分の身長データを小さい順に並べ替える方法
返信数: 3
閲覧数: 135

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

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

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

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

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

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

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

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
2週間前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 598

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
2週間前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 598

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
2週間前
フォーラム: C言語何でも質問掲示板
トピック: 課題が全く分かりません...教えてください
返信数: 9
閲覧数: 598

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

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

Re: ヒープの探索

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

Re: 二分木insertについて

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

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

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

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

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

Re: 助けてほしいです

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

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

コード:

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

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

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

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

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
閲覧数: 264

Re: ヒストグラムの工夫

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

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

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

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
4週間前
フォーラム: C言語何でも質問掲示板
トピック: fgetsを使った文字読み出し
返信数: 2
閲覧数: 296

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
4週間前
フォーラム: C言語何でも質問掲示板
トピック: fgetsを使った文字読み出し
返信数: 2
閲覧数: 296

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

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

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

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

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

Re: じゃんけん

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

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

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

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

リョースK さんが書きました:
1ヶ月前

コード:

    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
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: NNによるsin波の学習について
返信数: 5
閲覧数: 675

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
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 「セキュリティ証明書の期限が 2 日前に切れています。」と言われます。
返信数: 4
閲覧数: 1215

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルから構造体の配列に代入
返信数: 4
閲覧数: 2437

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
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルから構造体の配列に代入
返信数: 4
閲覧数: 2437

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
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: menuを自動生成するプログラム
返信数: 4
閲覧数: 2549

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

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

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

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

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

コード:

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

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

Re: VMAとLMAについて

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

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

tanu_kichi さんが書きました:
7ヶ月前
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
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: vector配列に格納した単語に、二分探索を適用して、指定された単語を検索するプログラム
返信数: 7
閲覧数: 2752

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

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

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
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 木構造編集プログラムのノードの削除機能について
返信数: 6
閲覧数: 3028

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

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

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

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

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

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

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

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

コード:

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

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

コード:

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

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

roji さんが書きました:
8ヶ月前
そして、メインプログラム以外のプログラムに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の疑いがあります。
なぜそのように書きたいのですか?
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ポインタを使って昇順に並び替える問題について
返信数: 2
閲覧数: 3127

Re: ポインタを使って昇順に並び替える問題について

普通の環境では、全角の&は演算子として使えません。
2個とも半角の&にするといいでしょう。

また、関数sort2の宣言を、それを呼び出している場所の前に追加する必要もありそうです。
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: f=X^(-(t1)) + X^(-(t2)) + ... + X^(-(tn))の定義の仕方
返信数: 5
閲覧数: 3523

Re: f=X^(-(t1)) + X^(-(t2)) + ... + X^(-(tn))の定義の仕方

プログラムはやりたいことに合わせて書くのがいいと思います。
「X^(-(t1)) + X^(-(t2)) + ... + X^(-(tn))をfという変数で定義」
「f = X^(1.5) + X^(2.0) + X^(1.0) のように」
とはどういうことか、もう少し詳しく教えていただけますか?
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: f=X^(-(t1)) + X^(-(t2)) + ... + X^(-(tn))の定義の仕方
返信数: 5
閲覧数: 3523

Re: f=X^(-(t1)) + X^(-(t2)) + ... + X^(-(tn))の定義の仕方

プログラミング言語が指定されていないようですが、例えばC++であればこのような感じでしょうか? #include <iostream> #include <iomanip> #include <vector> #include <string> #include <sstream> #include <cmath> class siki { // t1からtnを格納する std::vector<double> t; public: siki() {} // t1からtnの配列に基づき式を初期化する siki(const double* array, size_t n) : t(array, a...
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 文字数、単語数、行数の計数について
返信数: 8
閲覧数: 3785

Re: 文字数、単語数、行数の計数について

#6のupdateWord関数は、このような処理になっていますね。
20806-updateWord-matigai-20191015.png
現状のフローチャート
20806-updateWord-matigai-20191015.png (10.21 KiB) 閲覧数: 3571 回
例えばこのような処理にすると改善するかもしれません。
20806-updateWord-kaizen-20191015.png
改善案のフローチャート
20806-updateWord-kaizen-20191015.png (9.78 KiB) 閲覧数: 3571 回
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: [C言語練習]配列を使用した文字のカウント
返信数: 2
閲覧数: 3084

Re: [C言語練習]配列を使用した文字のカウント

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l | Microsoft Docs によれば、scanf_s関数の%c指定子を使う際は、読み込み先の次の引数としてバッファサイズを指定しなければいけません。 また、文字列を読み込むには、%cではなく%sを使うのがいいでしょう。 %s指定子を使う際も、読み込み先の次の引数としてバッファサイズを指定しなければいけません 更に、式中...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ポインタを用いて文字列を逆順にして表示する
返信数: 3
閲覧数: 3251

Re: ポインタを用いて文字列を逆順にして表示する

main関数内の変数sが未初期化のまま使用されているので、強制終了の原因になります。 sに(mallocで確保した領域などの)有効なバッファへのポインタを代入してから scanf以降を実行するようにしないといけません。 さらに、 for(i=0; i<n; i++){ s[i]=s[n-i]; } の部分も間違っていますね。 n文字の文字列の最後の文字はn-1番目 (0-origin) 交換する際は、一旦データを退避させる (不要な方法もあるが、わかりにくいと考えられる) 各要素を高々1回交換する というポイントを踏まえ、 for(i=0; i<n-i-1; i++){ /* 交換する要素がか...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 末尾行表示について
返信数: 2
閲覧数: 3305

Re: 末尾行表示について

このコードには、 16行目:C++の規格ではグローバルなmain関数の戻り値の型はintでなければいけないのに、そうなっていない 30行目・33行目:読み込めたかを判定する前に次の処理に行ってしまうため、1回多くループが回ってしまうことにつながる 36行目・42行目:配列の範囲外の要素を読み込んでいる上、string型を要素とする配列(の先頭要素へのポインタ)を渡すべき場所にstring型のデータを渡している 42行目:1行処理するたびに出力しているので、余計な途中経過が出力される 45行目:最初の1行を読み込んだだけでファイルを閉じてしまうため、最初の1行しか読み込めない 49~87行目:イ...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ディップスイッチの状態をLCDに表示したい
返信数: 2
閲覧数: 3268

Re: ディップスイッチの状態をLCDに表示したい

質問をよく理解できていない気がしますが、 ディップスイッチの状態が変わったときのみLCDを更新する、というのはどうでしょうか? int prev = 0x100; //ありえない値で初期化 while(1){ int status = PORTD; if (status != prev){ switch(status){ case DIPSW1: //DIPスイッチ lcd_cls(); // LCD画面のクリア lcd_locate(0,0); // LCDに文字入力 lcd_puts("MODE1"); break; case DIPSW2: lcd_cls(); lcd_locate(0...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 苗字と名前を入力して表示したいです
返信数: 2
閲覧数: 3400

Re: 苗字と名前を入力して表示したいです

使い方がわからないなら、わかろうとしましょう。 「strcat_s」でググってみましたか? 手元でググってみると、2番目に以下のページが出てきました。 strcat_s、wcscat_s、_mbscat_s、_mbscat_s_l | Microsoft Docs このページによると、strcat_s関数は、 第1引数に書き換え対象のバッファへのポインタ、 第2引数に書き換え対象のバッファのサイズ、 第3引数に追加する文字列へのポインタを渡す仕様になっています。 kentyさんのコードでは、strcat_s関数の第2引数と第3引数を逆にしてしまっているため、 無効な場所から追加する文字列を読み...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 画面の切り替えうまくできない
返信数: 3
閲覧数: 3587

Re: 画面の切り替えうまくできない

基本的な考え方としては、 「今のフレームの状態と入力に基づき、描画を行い、次のフレームの状態を作る」です。 どの画面を表示するのかというのも「状態」ですし、 どのメニューが選択されているかというも「状態」です。 以下のコードのように、変数で状態を管理し、状態に応じて処理を分けると良いでしょう。 他のポイントとしては、(通常行われるように)毎フレーム画面を初期化する場合、 printfDxの出力はフレームをまたいで残るので状態が変わる直前に行い、 DrawFormatStringやDrawGraphの出力はそのフレームだけに反映されるので毎フレーム行います。 なお、画像は毎フレーム読み込むのでは...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 画面の切り替えうまくできない
返信数: 3
閲覧数: 3587

Re: 画面の切り替えうまくできない

まだ詳しく見ていないですが、DXライブラリ3大処理があちこちにあってよくないコードですね。
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: addattacktimeの値が-1のままの原因がわかりません。
返信数: 5
閲覧数: 3591

Re: addattacktimeの値が-1のままの原因がわかりません。

addattacktimeを500より大きくするコードは無いようなので、 348行目(および184行目)の--addattacktimeによりaddattacktimeの値は減っていきます。 そして、addattacktimeが負になると、202行目のaddattacktime < 0が真になり、 205行目でaddattacktimeが0になります。 その後前述の通り348行目でaddattacktimeを減らすため、画面には-1と出るようです。 なお、「addattacktimeの値が-1のまま」と主張しているようですが、 手元での検証では左のキャラクターと右のキャラクターが同じ行にいると...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 入力した文字の中から任意の文字の個数を数え、その個数を表示する方法
返信数: 3
閲覧数: 3777

Re: 入力した文字の中から任意の文字の個数を数え、その個数を表示する方法

修正してみました。 #include <stdio.h> int main(void) { char str[20 + 2] = ""; printf("Input a string:"); fgets(str, sizeof(str) ,stdin); int i; int er=0; for(i=2;str[i]!='\0';i++){ if( (str[i - 2] == 'e' || str[i - 2] == 'E') && (str[i] == 'r' || str[i] == 'R') ){ er += 1; } } printf("The total number of e*r...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 入力した文字の中から任意の文字の個数を数え、その個数を表示する方法
返信数: 3
閲覧数: 3777

Re: 入力した文字の中から任意の文字の個数を数え、その個数を表示する方法

if文の中で比較せずに非0の数を代入しているので、常に真になる eやrの位置関係を考慮せずに判定している 20文字以下の文字列を入力するのに、バッファが20バイトしかなく、改行文字や終端文字が入らない 入力バッファを初期化していない上に、文字列が読み込まれていない可能性がある部分も判定の対象にしている 出力例ではInput a string:の後に空白が入っていないのに、コードでは空白が入ってしまっている 「大文字と小文字を区別する」は普通「読みが同じ文字であっても、大文字なのか小文字なのかが違えば違う文字とみなす」という意味であると考えられるが、出力例では大文字のEが使われているEarもe...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: PICマイコン
返信数: 2
閲覧数: 3624

Re: PICマイコン

システムの初期化をした後、
「A/D変換器の結果を読み取り、その結果に応じて出力を設定する」処理を約1msごとに繰り返しているようですね。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ロックオンマークをロック中のみに描画したいがうまくいかない
返信数: 3
閲覧数: 3739

Re: ロックオンマークをロック中のみに描画したいがうまくいかない

修正方法は、例えば

1.
リンク先を適切なURLにしたリンクを投稿する。
もしくは、著作権などの問題が無ければ、ロックオンマークの画像を添付ファイルとして投稿する。

2.
lockImgeをこの時点で初期化するのはやめ、
lockonHandleに画像のハンドルを入れた後、
lockImgeをlockonHandle[0]、lockonHandle[1]、lockonHandle[2]のどれかで初期化するようにする。

3.
DrawFormatStringと同様に、lockが真のときのみlockImgeを描画するようにする。

とよさそうだと思います。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ロックオンマークをロック中のみに描画したいがうまくいかない
返信数: 3
閲覧数: 3739

Re: ロックオンマークをロック中のみに描画したいがうまくいかない

とりあえずすぐにわかる間違いとしては、

1.
質問文中の「ロックオンマークの画像」がロックオンマークの画像ではなくGoogle フォトへのリンクになっている。

2.

コード:

	int lockonHandle[3];
	int lockImge = lockonHandle[3];
という部分において、配列の範囲外の読み込みをしている。

3.
lockImgeがロックオンの状態にかかわらず描画されるようになっている。
lockImgeが前述の範囲外の値のまま描画する可能性がある。

ですね。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 二つのプログラムの違いに関して。
返信数: 6
閲覧数: 4458

Re: 二つのプログラムの違いに関して。

上のプログラムはループで+1されるのに、下のプログラムは一回+1されるだけと言われたのですがなぜでしょうか。 提示されたプログラムにループは含まれていないようですが、 「上のプログラム」ではif (lockonMove > 0)以降が最初のif文のブロックの 外にある ので Key[KEY_INPUT_R] == 1 && playerY == enemyYが 真かどうかにかかわらず 実行され、 「下のプログラム」ではif (lockonMove > 0)以降が最初のif文のブロックの 中にある ので Key[KEY_INPUT_R] == 1 && playerY == enemyYが 真...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 二つのプログラムの違いに関して。
返信数: 6
閲覧数: 4458

Re: 二つのプログラムの違いに関して。

あたっしゅ さんが書きました:
10ヶ月前
 「上のプログラム」も「下のプログラム」も { と } の数が、あっていません。
「上のプログラム」も「下のプログラム」も、提示された範囲において { と } の対応は正常に見えます。
あたっしゅさんが「あっていません」とする根拠はなんですか?
最初に表示される範囲だけでなく、提示されたプログラム全体を見て判断しましたか?
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ドットVRゲームを作りたいです。
返信数: 2
閲覧数: 3670

Re: ドットVRゲームを作りたいです。

Ouxiyさんの気持ちまたは考えは書かれているようですが、質問は書かれていないようですね。
雑談であれば、フォーラムルールに基づきタイトルの最後に「[雑談]」とつけてください。
Ouxiyさんは登録してログインしているようなので、日記機能の利用もおすすめします。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: R(ロックオン)キーを押した後、A(攻撃)キーを押して攻撃する
返信数: 13
閲覧数: 4318

Re: R(ロックオン)キーを押した後、A(攻撃)キーを押して攻撃する

質問8. (8) では、変数player2 が消えてなくなるのを知っていますか? A,知りませんでした。なぜ無くなるのでしょうか。 質問9. (9) では、変数prokey が消えてなくなるのを知っていますか? A,知りませんでした。なぜ無くなるのでしょうか。 { ~ } (ブロック)の中でstaticなどの指定をせずに宣言された変数の有効期限は、 そのブロックの終わりまでです。 ブロックを抜けるときにこれらの変数はなくなり、 次にまたブロックの変数宣言のところに来るとまた新しく変数が作られます。 したがって、(8)ではplayer2が宣言されたブロックを抜けているのでplayer2はなくな...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: do~while文の無限ループがうまく動きません。
返信数: 2
閲覧数: 3476

Re: do~while文の無限ループがうまく動きません。

_kbhit関数を呼び出さずにそのアドレスを0と比較しているため、
キー入力があるかどうかにかかわらず_getch()でキーを読みに行ってしまっていますね。
ちゃんと_kbhit関数を呼び出し、戻り値をチェックするようにするといいでしょう。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: int box[4][7][2]の役割。
返信数: 28
閲覧数: 6032

Re: int box[4][7][2]の役割。

if (Key[KEY_INPUT_R] == 1 && playerY==enemyY) {}の中にif文でif (Key[KEY_INPUT_A] == 1)を書いたのになぜ反映されないのでしょうか。 if (Key[KEY_INPUT_R] == 1 && playerY==enemyY) { enemyImage = enemyGHandle[6]; if (Key[KEY_INPUT_A] == 1) { // アタック playerX = enemyX - 1; playerX = playerX; playerMove = 1; playerImage = playerGHan...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 文字をモールス信号のwavにするプログラムでうまく出力できない
返信数: 3
閲覧数: 3303

Re: 文字をモールス信号のwavにするプログラムでうまく出力できない

とりあえずすぐに気付くこととしては、
4バイトしかない領域にstrcpyで終端のナル文字を含めて5バイトの文字列をぶち込んでいるので、
範囲外へのアクセスが発生し、未定義動作になります。
strcpyではなく、memcpyでサイズを指定してコピーするようにするといいでしょう。

また、せっかく2周目のループでデータを格納しても、
またdataに新しいバッファの領域を入れ、データを格納したバッファを投げ捨ててしまうのもよくないですね。
2周目はdataへの代入をしないようにするべきでしょう。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: これが何を意味しているのか教えてください
返信数: 1
閲覧数: 3129

Re: これが何を意味しているのか教えてください

オブジェクト?vのx座標またはz座標が60超かつ300未満かどうかで分岐する、という意味であると推測できます。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: int box[4][7][2]の役割。
返信数: 28
閲覧数: 6032

Re: int box[4][7][2]の役割。

かずまさんの解説についての確認への回答はかずまさんに任せます。 もう一つ疑問なのは、移動可能かどうかを確認するさいにidou配列が必要なのかなと思ってしまったことがあります。というもの、以下のように実際の座標を書いた際に // 描画する座標の配列 int teki[5][5][2] = { {{0}}, // どうせここには来ない {{0, 0}, {60, 60}, {100, 60}, {140, 60}, {0, 0}}, {{0, 0}, {50, 100}, {100, 100}, {150, 100}, {0, 0}}, {{0, 0}, {40, 160}, {100, 160}...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。
返信数: 16
閲覧数: 4831

Re: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。

どうもありがとうございました。そのような感じになります。 ただ、もう少し行いたいことがあります。 移動した瞬間に向きが切り替わり瞬間移動したようなエフェクトを付けたいです。 そこで私は以下のようにしました。 ClearDrawScreen(); // 裏画面をクリア if (move > 0 && ++move == 20) { move = 0; int playerphoto = gh[8]; // 移動終了 } をコード全体に付け足して、移動した後の状態はplayerphoto = gh[8]より真正面を向いたのままですが、 再び移動してから新しい座標でほんの一瞬だけ横を向くようにした...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。
返信数: 16
閲覧数: 4831

Re: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。

ランダム関数と時間の関数を使い、9マス上を毎秒1s事に敵キャラを9マス上のいずれかのパネルに移動させ、たまに数秒間その場に止まるようなプログラム こんな感じでしょうか? #include <stdio.h> #include <stdlib.h> #include <time.h> #include "DxLib.h" int Key[256]; int gpUpdateKey() { char tmpKey[256]; GetHitKeyStateAll(tmpKey); for (int i = 0; i < 256; i++) (tmpKey[i] == 0) ? (Key[i] = ...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。
返信数: 16
閲覧数: 4831

Re: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。

きちんと変数の意味を意識しましょう。 キャラの座標はnxとny。 これらの値を変える処理が無いので、キャラは動きません。 moveは移動の状態(時間)の管理用。 idouの各要素は5しかないのに、最大30になるmove(の±1程度の値)を添字に使ってしまうと、 範囲外へのアクセスが発生して危険です。 move = 1; move = move + 1; //移動 というのも意味がよくわかりません。これはどういう「移動」を表しているのでしょうか? さらに、move = 1; move = move - 1;だと、実質move = 0;であり、条件move > 0を満たせずに移動できなそうです。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。
返信数: 16
閲覧数: 4831

Re: 9マス上のマスを動く敵キャラを作るために時間の関数がほしいです。

DXライブラリ置き場 リファレンスページ には「時間関係の関数」という見出しがあり、 GetNowCount  ミリ秒単位の精度を持つカウンタの現在値を得る GetNowHiPerformanceCount  GetNowCountの高精度バージョン GetDateTime  現在時刻を取得する の3関数が挙げられています。 また、C言語の標準ライブラリにも 時間を取り扱う関数群 があり、 Ouxiyさんも使われているtime関数をはじめとして様々な関数があります。 さらに、Windows APIにも、 GetLocalTime関数 や GetTickCount関数 などの時間や時刻を扱う関...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい
返信数: 14
閲覧数: 5487

Re: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい

迅速な解答感謝いたします。 こちらの方で見れますでしょうか。お手数をお掛けします https://onslaughta.imgur.com/all/?third_party=1 見れません。imgur: the simple 404 pageが出ます。 Imgurの現行仕様では、投稿した画像の画面の投稿した画像にマウスカーソルを当てると 点が3個描かれたボタンが出て、そこを押すと表示されるGet share linksを押すと BBCodeが表示されるので、それをコピーして使うといいでしょう。 例 投稿した画像の画面: https://imgur.com/a/168L9DD https://...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい
返信数: 14
閲覧数: 5487

Re: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい

例えば、DXライブラリの機能で実際に3Dで描画し、そこから座標の情報を得る方法があります。 たとえばこのような実装ができます。 #include <DxLib.h> #include <cmath> #include <sstream> // 自分の環境で3D描画が壊れたようなので、その対策モードの切り替え #if 1 #define SET_NO_3D #endif // 各キーが何フレーム押されているかをまとめて取得する int getKeyStatus(int keyStatus[256]) { char keyBuffer[256]; if (GetHitKeyStateAll(key...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい
返信数: 14
閲覧数: 5487

Re: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい

座標Eに関しては真ん中をEとして表せていると思います。 あとの残りは斜線っぽい感じの座標で、座標を指定して、そこにキャラが移動する形になると考えています。 [img​]https://mail.google.com/mail/u/0?ui=2&ik=65460f62c3&attid=0.1&permmsgid=msg-f:1642577236477548528&th=16cb9b4b386317f0&view=att&disp=safe[/img] イメージとして以下のようにドットキャラを置きます。 [img​]https://mail.google.com/mail/u/0?ui=2&ik...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい
返信数: 14
閲覧数: 5487

Re: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい

3D っぽくなるように座標を前もって指定して 指定した座標を配列に入れておきます。 (例として適当な値を入れてあるが、きちんと計算した方がいいかも?) int drawCoords[5][5][2] = { {{0}}, // どうせここには来ない {{0, 0}, {60, 60}, {100, 60}, {140, 60}, {0, 0}}, {{0, 0}, {50, 100}, {100, 100}, {150, 100}, {0, 0}}, {{0, 0}, {40, 160}, {100, 160}, {160, 160}, {0, 0}}, {{0}} // どうせここには来な...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

ありがとうございます。あの、ちなみに、私の載せたプログラムは後なにを付け足せば、右に一マス動くでしょうか。 以下のコードが元のコードです。 if ( nx == 3 && idou[nx + 1][ny + 0] == idou[3][2]) {// 移動可能にして、その座標に移動する //nx == 3は移動するxの座標として書きました。 idou[nx + 1][ny + 0] == idou[3][2]; playerphoto = gh[7]; } else if (nx == 1 && idou[nx + 1] == idou[2]) { // 移動不可能 playerphoto ...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 最初に描画された画像から一瞬横に向くようにしたいです。
返信数: 3
閲覧数: 3326

Re: 最初に描画された画像から一瞬横に向くようにしたいです。

usao さんが書きました:
10ヶ月前
とりあえずplayerphotoの値をwhileループ内の先頭で毎回初期化している時点で
視認できるほど長い期間だけ値を保持できているとは思えないので,
「視認できるほど」どころか、書き換えたplayerphotoで描画した後、
それを画面の表示に反映する前に初期化したplayerphotoで上から描画してしまうので、
全く表示されないと予想できます。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

idou[nx + 1][ny + 0] となりidou[2 + 1][2 + 0] =idou[3][2] となるように書いてみたのですが、 idou[nx + 1][ny + 0] == idou[3][2]; は「idou[nx + 1][ny + 0]の値とidou[3][2]の値が等しいかを比較し、その結果にかかわらず何もしない」 というコードです。 Ouxiyさんは、このコードによって何をしてもらうことを期待したのでしょうか? 実行フィルのキャラは右に動かず静止したままでした。なぜでしょうか。 キャラを右に動かす(キャラのX座標を大きくする)コードが無いからですね。 また、ディス...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

ちなみに、 if (ny != 0) { // キャラが移動しようとしている場合 // 移動先に障害物が無いかをチェックする if (idou[my][mx] != 0) { // 障害物があるので、移動不可能 nx = 1; } else { // 障害物が無いので、移動可能 nx = 0; } はキャラのyに関しての移動できるかどうかの判断するプログラムの部分ですが、 x,y両方に関しての判断を行っています。 nyという変数名は、元のコードとの差分を少なくするために使っているだけで、y座標という意味ではありません。。 以下のようにny == 0 && idou[ny + 1] などのよう...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

どうか今の自分のコードに何が足りなくて何がダメだったのか知るため、動画のような動きをさせるためにどうすればいいのか勉強するために、 私のコードを修正した物を頂けないでしょうか。 まず第一に、「キャラがマップのどのマスにいるか」から「キャラを画面のどの位置に描画するか」に 変換するための処理が無いのがダメですね。 こんな感じでどうでしょうか? #include "DxLib.h" int Key[256]; // キーが押されているフレーム数を格納する // キーの入力状態を更新する int gpUpdateKey() { char tmpKey[256]; // 現在のキーの入力状態を格納す...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

どのような動作を「移動」と呼んでいるのかわかりませんが、 #11のコードで右キーにキャラが反応することを確認できました。 まず、charall.pngとして以下の画像を用意しました。 charall.png これを読み込める状態で#11のコードを実行すると、以下の画像のようになりました。 (4倍に拡大し、左上を切り抜いています) sukusyo1-trim-large.png DrawGraph(dx, dy, gh[5], FALSE);により、(dx, dy)すなわち(2, 2)の位置に gh[5]の画像が描画されていることが確認できます。 この状態で右キーを押すと、以下の画像のようになり...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

あの、int dx, dy = (2, 2);という書き方ではなぜdx = 2, dy = 2のように1個ずつ初期化されずに実質2になってしまうのですか?また実質2とは何の2でしょうか?座標ではないと思いますが、、、。 C++の規格書(のドラフト)である N3337 から引用します。 まず、8 Declaratorsの1より、変数宣言のうち型(と修飾子)を除いたdx, dy = (2, 2)にあたる部分の文法は init-declarator-list:   init-declarator   init-declarator-list , init-declarator init-decla...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

オフトピック
ちなみに、Pythonなら

コード:

dx, dy = (2, 2)
でdxにもdyにも2を代入できます。
どうしてもこのような書き方をしたいのであれば、Pythonを使うのもいいかもしれません。
DXライブラリも使えるようです。
例:PythonでDXライブラリを利用してみた - 気まぐれ雑記(仮)
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

ポインタを使ってidou[ny + 1]の出力をint型(整数)と出来るということでしょうか? 「idou[ny + 1]の出力」の意味がよくわかりませんが、 idou[ny + 1]はint*型(ポインタ)になります。 (sizeof演算子に渡す場合などの例外は除く) 間接演算子*を用いてデリファレンスすることで、idou[ny + 1]からint型(整数)の値を得ることができます。 出力がidou[1]だった場合は進めると判断され、 idou[2]の場合は進めないと判断されるということでしょうか? 「出力」がidou[ny + 1]の値のことだと仮定すると、 &&演算子の左辺の条件により...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

nx==0でidou[nx + 1]がidou[1]の時移動可能にして、その座標に移動する、nx==1でidou[nx + 1]がidou[2]の時移動不可能 は、 if (nx == 0 && idou[nx + 1]==idou[1]) { // 移動可能にして、その座標に移動する } else if (nx == 1 && idou[nx + 1] == idou[2]) { // 移動不可能 } else { // 不明 } と書けます。 ただし、(nxがint型のとき)nx==0のとき常にnx+1は1、nx==1のとき常にnx+1は2なので、 各条件文の後半は常に成り立ち、実質nx...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。
返信数: 24
閲覧数: 5903

Re: idou[ny + 1][nx + 1]を利用してif文でキャラを縦、横に動かしたいです。

そのまんまidou[ny + 1]と書けばいいと思います。 まず、idouは「int型の要素5個の配列」型の要素5個の配列です。 idou[ny + 1]はidouの要素である「int型の要素5個の配列」であり、 式中では一部の例外を除いてその配列の先頭要素(int型)へのポインタに変換されます。 したがって、idou[ny + 1]は例えばint*型の変数に代入できます。 あとは、どう使うかですね。 提示されたコードには、 文法エラーがある 未初期化の自動変数の値(不定)が計算に使われている if文のカッコの後に余計なセミコロンがあり、条件分岐が効かない int playerX,player...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 配列の1の位置をplayerX、playerYとしたい、
返信数: 7
閲覧数: 3753

Re: 配列の1の位置をplayerX、playerYとしたい、

idou[3][3]を int idou[5][5] = { {1,1,1,1,1 }, {1,0,0,0,1 }, {1,0,1,0,1 }, {1,0,0,0,1 }, {1,1,1,1,1 }, }; と書かなくても、 int idou[3][3] = { {0, 0, 0 }, {0, 1, 0 }, {0, 0, 0 } }; で9マス内での移動としてキャラを動かせるのでしょうか? はい。 移動先が範囲内かのチェックをして、範囲内の場合のみ動かすようにすればいいでしょう。 int idou[5][5]のように1で空0囲まないと9マス内の移動と出来ないのでしょうか。 いいえ。 ただし...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 配列を座標として障害物かどうかなぜ判断できないのかについて
返信数: 4
閲覧数: 3419

Re: 配列を座標として障害物かどうかなぜ判断できないのかについて

申し訳ありません。 #3でidouの定義を int idou[5+1][5] としていますが、この+1はテストした時の消し忘れです。 int idou[5][5] としてください。 一応修正後のコード全体を貼ります。 #include "DxLib.h" #include <set> int Key[256]; // キーが押されているフレーム数を格納する // キーの入力状態を更新する int gpUpdateKey() { char tmpKey[256]; // 現在のキーの入力状態を格納する GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る for...

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