検索結果 150 件

by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C言語による制御系、組込み系のお仕事について
返信数: 39
閲覧数: 5755

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

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

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

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

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

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

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

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

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

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

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

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

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

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: VisualStudio2010でのDLL作成について
返信数: 4
閲覧数: 6416

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: c言語のポインタについて質問です。
返信数: 16
閲覧数: 1554

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル読み込みの関しての質問
返信数: 5
閲覧数: 462

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

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

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

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

Re: 要素数0の配列

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

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

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

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

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: 最大値を求めるのに・・・
返信数: 10
閲覧数: 1286

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

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

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

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

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: 別スレッドを監視する処理
返信数: 2
閲覧数: 365

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

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

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

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

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

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

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

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

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

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

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

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: staticメンバ変数を継承して利用する
返信数: 2
閲覧数: 1159

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: lengthの使い方(初心者です)
返信数: 7
閲覧数: 1949

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

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

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

Re: C言語について

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

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

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

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

Re: 放物線

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

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: 「キャラを4方向に動かす」プログラムについて
返信数: 2
閲覧数: 528

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
8年前
フォーラム: C言語何でも質問掲示板
トピック: printf関数の表示が
返信数: 3
閲覧数: 707

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 とすればよさそ...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C++ 累乗の計算です
返信数: 6
閲覧数: 4039

Re: C++ 累乗の計算です

このエラーをよく読めば分かります。 > c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(535): または 'float pow(float,int)' > c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(497): または 'double pow(double,int)' > 引数リスト '(int, int)' を一致させようとしているとき この文を翻訳するすると、 「power関数の引数は float 型と...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C++ 累乗の計算です
返信数: 6
閲覧数: 4039

Re: C++ 累乗の計算です

コメントにある mega*2^20/960/3600 の 2^20 の部分は 2 の 20乗と言う意味ですが、
c/c++の ^ は別の意味になります。 2^20 の部分を正しい値に直せばエラーはなくなります。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列を戻り値にしたい
返信数: 14
閲覧数: 6281

Re: 二次元配列を戻り値にしたい

実際に二次元配列を戻り値にせず、要素を標準出力に出力する方法を書いてみました。 #include <iostream> using namespace std; class CSample { static const size_t array_size_1 = 3; static const size_t array_size_2 = 5; private: int array_[array_size_1][array_size_2]; public: CSample() { for (size_t i = 0; i < array_size_1; ++i) for (size_t j = ...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C++ if文の質問です。 
返信数: 4
閲覧数: 1026

Re: C++ if文の質問です。 

ありがとうございます。解決いたしました。 フォーラムも拝見させていただきましたので以後はそれに従い、投稿いたします。 それならば、「解決した方法を明記して下さい。」とあったはずですが。 ついでに解決したら「解決」チェックボックスをチェックしておいていただけるとよろしいかと。 さて、本題。 私の趣味からすると if( (0<=seitou)&&(seitou<60) ) とすると条件範囲が分かりやすくて好きですね(強要する気はありません)。 も範囲が分かりやすく、読みやすいのですが、それぞれの範囲が連続しているので、こんな書き方もあります。 #include <iostream> char l...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列を戻り値にしたい
返信数: 14
閲覧数: 6281

Re: 二次元配列を戻り値にしたい

ほぼ解決しているようですが、 クラスのメンバ変数のint型二次元配列を戻り値にして外部からもたまに見れるようにしたいです。 なら、「外部から」「たまに見」る機能(関数)を friend にするのが一般的ではないでしょうか? そうでないとせっかくカプセル化した内部情報を外部にさらすことになります。私なら、このような関数はつくろうとは思いません。 逆にメンバー変数を外部にさらす必要があるということは、そのクラスでやりたいことが明確に定義できていないということではないでしょうか? もう一度設計に立ち戻ることをお勧めいたします。 たとえば今回の例では、PrintArray をメンバー関数にしてしまえば...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C言語、行列の積と行列式を求めるプログラムについての質問です。
返信数: 8
閲覧数: 6272

Re: C言語、行列の積と行列式を求めるプログラムについての質問です。

行列式も関数detaminantで表したいのですが、どのようにすればいいでしょうか? int det=0.0; det=mc[0][0]*mc[1][1]*mc[2][2]; det+=mc[1][0]*mc[2][1]*mc[0][2]; det+=mc[2][0]*mc[0][1]*mc[1][2]; det-=mc[2][0]*mc[1][1]*mc[0][2]; det-=mc[1][0]*mc[0][1]*mc[2][2]; det-=mc[0][0]*mc[2][1]*mc[1][2]; ここまで出来ているのですから、これを関数化すればよいだけではないのですか?何かそれでは不満が...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 文字入力と配列についてです。(C++)
返信数: 36
閲覧数: 2292

Re: 文字入力と配列についてです。(C++)

kaka さんが書きました:上記のプログラムにおいて、文字でなく文字列にして実行した場合、文字列を入力し改行を押しても何も起こらなくなるのはなぜなのでしょうか?(?ω?)
申し訳有りません。なにを言っているのかさっぱり分かりません。
まず、上記のプログラムとはどれのことでしょうか?
「文字でなく文字列にして実行」とはどういうことでしょうか?
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 条件分岐を使用しない数値の大小比較
返信数: 6
閲覧数: 3236

Re: 条件分岐を使用しない数値の大小比較

条件分岐を使わないという制約条件がよく分からないのですが、大きいほうを返す関数っては、普通は

コード:

int max(int a, int b)
{
    return a > b ? a : b;
}
とします(というか、このようにマクロで定義されていたりテンプレート関数で定義されている)。
3項演算子は条件分岐なのかなぁ?
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 巨大な数の計算
返信数: 6
閲覧数: 772

Re: 巨大な数の計算

long intは32ビットです。
long long や __int64 を使ってみてください。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C(++)言語のマクロにスコアを付けたい
返信数: 6
閲覧数: 363

Re: C(++)言語のマクロにスコアを付けたい

#define はプリプロセッサで処理して文字列の置き換えを行うものなのでスコープは 限定されないでしょう。単に出現順に処理されるだけです。 C++ではマクロはあまり推奨されていません。 マクロは単に文字列の置き換えなので型に対する情報が欠如しているからです。 定数の宣言は const type_name variable_name = value; // 定数の宣言 とし、max(),min()のような関数の形になるマクロは関数でインラインで記述するほうがよいでしょう。 実際にmix(), min()はc++では template <class T> inline const T& max(...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 文字入力と配列についてです。(C++)
返信数: 36
閲覧数: 2292

Re: 文字入力と配列についてです。(C++)

kaka さんが書きました:では、どのようにしたら、配列と文字を比較(array == '文字')できるのでしょうか?(><;)

正確には配列の要素と文字の比較ですね。

この配列の要素は文字列ですが、なぜ、文字列と文字を比較しようとしているのでしょうか?
概念の違うものなので比較しようが有りません。(例えとしては少しおかしいかも知れませんが、身長と体重と比べているようなものです。)
"A"と'A'は同じように見えるかも知れませんが異なるものです。
kakaさんは、まず、この違いを認識することが必要でしょう。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 画像の表示がおかしくなる
返信数: 10
閲覧数: 524

Re: 画像の表示がおかしくなる

でもということは最初の初期化部分の235行目~のところが間違っているということになるんでしょうか? さっき間違っていたところは削除したので他に間違っていそうな初期化部分はないのですが・・・・ いや、だから、初期化云々は関係無くて、 483行目のiはprintfで調べたところ10になっていました に対して、 tama[10]と宣言したなら、tama[0]からtama[9]までしかないよね。 と回答されているでしょ。 つまり483行目でi=10でアクセスしているのは明らかにおかしいんです。 色々いじっていたら解決しました。 これは 非常に危険 です。この類の問題(無効な領域への書き込み)はいろい...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 画像の表示がおかしくなる
返信数: 10
閲覧数: 524

Re: 画像の表示がおかしくなる

後デバックモードでEscキーで終了すると Run-Time Check Failure #2 - Stack around the variable 'tama' was corrupted. というエラーが出るのですが翻訳もしてみたのですがよくわからない状態です このエラーメッセージをそのまま翻訳すれば 「変数'tama'の周りでスタックが壊れています。」 原因としてはポインタの計算間違いや配列の添え字を間違えた結果、配列の範囲外のデータ(そこには別のデータがある)を書き換えてしまうことがあげられます。 そして tama[10]と宣言したなら、tama[0]からtama[9]までしかないよ...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 成績処理のプログラムで質問です
返信数: 14
閲覧数: 3453

Re: 成績処理のプログラムで質問です

あと、「各科目と総得点に関する平均と標準偏差を出力」とあるので、少なくとも
英語の平均、数学の平均、国語の平均、(総得点の平均は前3つの平均を合計で可能)
英語の標準偏差、数学の標準偏差、国語の標準偏差、総得点の標準偏差
の7つの変数が必要ですが、それはどの変数に対応していますか?
見たところ、Ave や Dev という変数しかないようですが。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 成績処理のプログラムで質問です
返信数: 14
閲覧数: 3453

Re: 成績処理のプログラムで質問です

紫苑 さんが書きました:

コード:

 Ave = 0.0;
  for(k=0; k<num; ++k){
   Ave += (student[k].Eng + student[k].Math + student[k].Jap)/k;
  }
  Ave /= num;
1. k で割ることの意味は何でしょうか?
2. k は 0~numまで変化しますが、最初で 0 割りが発生すると思いますが、発生していませんか?
[hr][追記]
2.はエラーメッセージがでてましたね。Windowsだと例外でプログラムが停止するので、発生していないのかと思ってしまいました。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: クラスにスレッドを含める
返信数: 7
閲覧数: 1649

Re: クラスにスレッドを含める

私の書いた内容がちゃんと理解できていなかったんですね。 さらに、 >スレッドの部分を静的関数にして、ClientSockへは引数をキャストして アクセスしようとしましたが、以下のようなエラーが出てきました。 ===以下エラー======================================================================== エラー E2451 serv.cpp 10: 未定義のシンボル TcpListener01(関数 __stdcall RecvThread(void *) ) エラー E2451 serv.cpp 10: 未定義のシンボル p(関...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: クラスにスレッドを含める
返信数: 7
閲覧数: 1649

Re: クラスにスレッドを含める

メンバ関数がスレッドのエントリポイントとして使えないことが原因 だと考えています。この問題を、解決する方法はありますでしようか? 原因はそのとおりでしょうね。クラスメンバー関数は元々インスタンスオブジェクトへのポインタが隠れ引数として渡されています。 (そのポインタが this です。) したがって CreateThread 関数の第三引数である LPTHREAD_START_ROUTINE 型ではないのでエラーになります。 これを回避するには対象を静的関数にしてしまいます。 static DWORD WINAPI RecvThread(LPVOID lpvoid) { // 内部処理 } ...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの結果がnanになってしまいます。
返信数: 31
閲覧数: 8630

Re: プログラムの結果がnanになってしまいます。

asd さんが書きました:蛇足ついでに代入と比較の間違いを減らす方法を。

固定値との比較をしたい場合、固定値を左辺に書くと、誤って代入の書式にした場合に
コンパイル時エラーになります。

コード:

if(1 == x)//1 = xと誤った場合、1に代入はできないのでコンパイラでエラーにしてくれる
こんな古いテクニックを使わなくても最近のコンパイラはちゃんと警告を出してくれるので、わざわざ読みにくいコードを書く必要はありませんね。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 成績処理のプログラムで質問です
返信数: 14
閲覧数: 3453

Re: 成績処理のプログラムで質問です

toto さんが書きました:maruさん20行目でbreakしているので100人固定ではないと思ういますが、
Ave /= 100.0;
Dev /=100.0;
を見て100以下の処理をやっていないと短絡的に見てしまいました。

今日は見落としばっかりで残念な私。orz
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの結果がnanになってしまいます。
返信数: 31
閲覧数: 8630

Re: プログラムの結果がnanになってしまいます。

asd さんが書きました:
maru さんが書きました:いいかげんに誰か指摘してもいいように思うんですが...
横槍ですが指摘自体はNo.2でboxさんが指摘、No.4で質問者様が直した報告をしていますよ。
まぁその後の皆さんのコードでは=のままなのでそれを指摘しているということであればその通りだと思います。
失礼しました。完全に見逃していました。
でもNo.4で直しても結果が変わらないって報告があって、その後も = のままなのはいただけないですよね。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 成績処理のプログラムで質問です
返信数: 14
閲覧数: 3453

Re: 成績処理のプログラムで質問です

プログラムの細かな点は他の方々が指摘されているので、別の問題点を指摘させていただきます。 問題文には 「100人以下の不特定の人数」 と有りますが、提示されているプログラムでは100人固定で処理を実行するようになっています。 生徒数は最大で100人なので、その成績を入れる構造体の数は100でかまいませんが、その全てに 有効なデータが入るとは限らないと考える必要があります。 そう考えるとデータの入力を無条件に100回繰り返すのではなく、入力の終了を判定することが 必要になります。また入力が終了したら、その後のデータ(構造体配列)にはデータが無効であ ることを示すようになっている必要があります。 ...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの結果がnanになってしまいます。
返信数: 31
閲覧数: 8630

Re: プログラムの結果がnanになってしまいます。

いいかげんに誰か指摘してもいいように思うんですが... "="は代入ですので     if(k = 1)         r = x;     else if(k = 2)         r = y;     else         r = z; 上記コードは K=1 を判定し、その結果、真であるので常に r = x を実行します。 やりたいことは k の値を判定し、1, 2, その他で r に代入する変数を変えたいのだと思いますが、 それなら k = 1, k = 2 ではなく k == 1, k == 2 としなければなりません。     if(k == 1)         r = ...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 指数を含むファイルの読み込み
返信数: 7
閲覧数: 1827

Re: 指数を含むファイルの読み込み

median さんが書きました:以下のプログラムでは指数部分の値が-0.000028として扱われてしまい、正しい値が出力されませんでした。

手元の関数電卓で計算した値は
-0.1423583082
となります。(計算ミスがなければですが(汗))
わたくしの手計算では -0.12385567455 でプログラムでは

コード:

-0.012965
-0.0169599
-0.0388837
-0.0139194
-0.0131285
-0.0270204
0
0
-2.75706e-005
-0.000951184
test = -0.123856
と表示されましたよ。特にプログラムが間違っているようには思えません。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C++ クラス(というか関数)の初歩なのですが・・・
返信数: 33
閲覧数: 2343

Re: C++ クラス(というか関数)の初歩なのですが・・・

あと、 関数名や変数名などの識別子は _ で開始しないようにしましょう。
int _a; /* 推奨されない */
こんな癖があるようなら、早く治しましょう。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルの読み込み
返信数: 5
閲覧数: 414

Re: ファイルの読み込み

これが課題だとすると、自分の力でやっていないことががすぐにばれると思いますので、お気をつけください。 というか、もろに課題って書いてありましたね。失礼しました。 入出力ストリームは理解しているようですので、データの入れものを準備しておいて、それにストリームを使って順次データを入れてあげればいいだけです。ファイルは2行で1単位となっていることも理解していますね。この2行分のデータを1単位のデータの塊と考えて、その塊(例ではクラスにしていますが、構造体でもいいです。)単位で処理を繰り返せば完成です。次は2行単位でファイルからデータをその塊に入れる処理を作成します。 考え方は以上です。例ではこの処...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C++ クラス(というか関数)の初歩なのですが・・・
返信数: 33
閲覧数: 2343

Re: C++ クラス(というか関数)の初歩なのですが・・・

int a; int SetA(100); printf(%d,SetA); とあんまり変わらないじゃん と思ってしまいます(これは私がクラスという概念をよくわかってないのが悪いのですが・・・) それ、むちゃくちゃ文法的に出鱈目ですよ。 混乱させるようで申し訳ありませんが、このソースは文法的にも正しく、問題なく実行でき、さらに(間違った解釈でしょうが、多分ベルさんが意図しているように)正しく100が出力されます。 C++では 型 変数名(初期値); の書式でオブジェクトの初期化宣言が可能です。初期値の型は変数の型と一致している必要はなく、その型に変換できるものであれば何でも構いません。 つま...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルの読み込み
返信数: 5
閲覧数: 414

Re: ファイルの読み込み

#include <cstdio> #include <iostream> #include <fstream> #include <vector> #include <algorithm> using namespace std; const size_t MaxNumberOfCity = 17; class CCityInfo { private: string m_name; // 空港の3レターコード? double m_data1; double m_data2; char m_data3; void input(istream& is) { char szBuffer[128]...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: グローバル変数
返信数: 7
閲覧数: 596

Re: グローバル変数

重要なことを忘れていました。 このような場合、何も考えずにできる手法として、 1.グローバル変数をmain関数内に移動する。 2.コンパイルする(グローバル変数を使っている関数でエラーが発生) 3.エラーが発生した関数定義の仮引数にグローバル変数と同じ型、名前を追加。 4.コンパイルする(変更した関数の呼び出しでエラー発生) 5.エラーが発生した関数呼び出しに実引数を追加(元のグローバル変数名) 6.コンパイル(エラーが発生したら、3へ、発生しなければ終了) という手が使えることがありますが、あまり推奨はいたしません。 ちゃんと設計すべきです(でも設計しても結果は同じような気が...)。 上記...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: クラスを分割コンパイルするには
返信数: 3
閲覧数: 9950

Re: クラスを分割コンパイルするには

関数の定義をヘッダファイルに書いてはいけないことはC言語でも同じです。 どうしてもヘッダファイルに書きたい場合はinline をつけるか、クラスの定義に宣言と同時に定義してしまうことです。 普通は関数はcppファイルに書きます。 // test.h class Test { private: int a, b; public: //コンストラクタ Test() : a(10), b(20) {};// クラス定義内で関数を定義 Test(int a_, int b_) ; // 引数付コンストラクタの宣言 int show(); }; // 引数付コンストラクタをヘッダファイルで関数を定義 i...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルの同じ行どおしの足し算
返信数: 5
閲覧数: 1396

Re: テキストファイルの同じ行どおしの足し算

plus.cpp:2:19: tchar.h: そのようなファイルやディレクトリはありません Windows用のヘッダファイルを指定してしまいました。 <ctype>か<ctype.h>に変えてみてください。 plus.cpp: function 内の `int main()': アナログーさんの環境ではmain()で通るのでしたら、intを取ってきてください。 plus.cpp:47: error: no matching function for call to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifst...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: グローバル変数
返信数: 7
閲覧数: 596

Re: グローバル変数

このような場合、何も考えずにできる手法として、 1.グローバル変数をmain関数内に移動する。 2.コンパイルする(グローバル変数を使っている関数でエラーが発生) 3.エラーが発生した関数定義の仮引数にグローバル変数と同じ型、名前を追加。 4.コンパイルする(変更した関数の呼び出しでエラー発生) 5.エラーが発生した関数呼び出しに実引数を追加(元のグローバル変数名) 6.コンパイル(エラーが発生したら、3へ、発生しなければ終了) という手が使えることがありますが、あまり推奨はいたしません。 ちゃんと設計すべきです(でも設計しても結果は同じような気が...)。 上記の内容を確認しながらやらないと...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルの同じ行どおしの足し算
返信数: 5
閲覧数: 1396

Re: テキストファイルの同じ行どおしの足し算

複数のファイルの同じ行を演算したいのですよね。 以下のプログラムではどうでしょうか。 C++ですがgccでコンパイルできますよね。 入力ファイルのフォーマット(ファイルの名前、位置は実際に存在するものにしてください。) data1.txt data2.txt data3.txt ...以下、対象のファイルをいくつでも 上記の形式で全てのファイルをテキスト化しておき、file.lstと言う名称で保存し、プログラムを実行すればoutput.txtが作成されると思います。 windows環境で確認していますが、多分Linuxでも問題はないと思います。 コードを適切にいじれば、入出力ファイル名やファイ...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 逆順に並び替える
返信数: 11
閲覧数: 1685

Re: 逆順に並び替える

流れからすると動的確保の問題なので動的確保を使ったものを作りました。また、beginnerさんが書かれたコードを元にしています。 「配列を使わない」=「動的確保」と考えるのは少し短絡的かと。 動的確保はむしろ別トピックのほうの問題で、main側で処理すべき問題かと思います。 どちらかと言うと、ここでは上位から渡されたポインタを使ってその要素を操作することを考えるべきでしょう。 bitter_foxさんのコードも配列を使わないという目的にはあっているでしょうが、本来の目的とはちょっと違っていると思われます。 つまり、ここでのポイントはポインタを使ってメモリの操作をするってことではないでしょうか。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 逆順に並び替える
返信数: 11
閲覧数: 1685

Re: 逆順に並び替える

ポインタと配列とに、そんな初期化の違いがあるとは知りませんでした、ご指摘ありがとうございます。 ポインタ(領域サイズは固定)を初期化するのと、配列(領域サイズは宣言ごとに異なる)を初期化するのでは違いがあって当然です。 ・ポインタは必要な型を持つ変数やリテラルへのポインタで初期化される。 ・配列、構造体、共用体などの集成体はその要素を{}で括ることで初期化される。ただし文字列(文字配列)の場合は文字列リテラルで初期化できる。 文字列の場合、 char *p = "Pointer to char type"; char str[] = "Array of char type"; とすることで、...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 逆順に並び替える
返信数: 11
閲覧数: 1685

Re: 逆順に並び替える

>>maruさん 分かりやすいコードで説明していただきありがとうございます。 コードを書くにあたってポイントとなる部分はどこでしょうか? ポイントと言っても、このコードは特にポイントとなるような部分も無いかと思いますが初心者向けに解説してみます。 このような問題は、メモリの配置を図(絵)にして、その中の値をどのように操作するかを書いてみることが重要です。 例えば今回の場合、操作すべき文字列 a は以下のように表わすことができます。 a a a a a [0][1][2]....[n-2][n-1] これを逆順にするのだから、a[0]とa[n-1]を交換、a[1]とa[n-2]を交換、これを順...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 逆順に並び替える
返信数: 11
閲覧数: 1685

Re: 逆順に並び替える

になるので、「bは"\0"という文字列リテラルの先頭アドレスを指す」としたのですが、間違ってますでしょうか・・・? はい。間違っています。 集成体の初期化は{}で括ることが可能であり char str[] ={NULL}; となっている場合は、char配列を0で初期化していることになりますが、 char *b = {NULL}; の場合、bはポインタであり、集成体ではないので、{}の意味が無くなり char *b = NULL; と等価です。 bitter_foxさんの間違いは char *b = {'\0'} が char *b = "\0" と等価であると考えたことです。ポインタの初期化...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: ポインタと文字列
返信数: 23
閲覧数: 1016

Re: ポインタと文字列

beginner さんが書きました:>>bitter_foxさん
大変丁寧に説明していただき分かりやすかったのですが、
malloc関数はあまり使わない方がよいと書いてあるサイトもあったのですが大丈夫なのでしょうか?
bitter_foxさんが説明されている通りmalloc関数を使用すること自体には問題がほとんどありません。
多用することによってメモリの断片化が発生する可能性がありますが、初心者が気にするような問題ではありません。
参考のため、そのサイトのURLを教えていただけますか?
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 逆順に並び替える
返信数: 11
閲覧数: 1685

Re: 逆順に並び替える

また、bは"\0"という文字列リテラルの先頭アドレスを指していて、そこに値を代入することは不正です。 ちょっと違いますね。 b はどこも指していません。ポインタの値がNULLであるのと"\0"という文字列リテラルの先頭アドレスを指すことは異なります。 "\0"という文字列リテラルを参照する(読み出しを行う)ことは可能ですが、NULLポインタは参照することさえ不正です。 そこに値を代入することが正しくないということは同じですけどね。 所望の関数をCで書けばこんな感じです。 void reverse ( char *a, /* 逆順にする文字列へのポインタ */ int n /* 文字列長 */...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: クラスの二次元配列の解放について
返信数: 4
閲覧数: 615

Re: クラスの二次元配列の解放について

ほげ さんが書きました:もし静的確保の方法をご存知でしたら教えてください。
普通、静的確保って

コード:

Cell cell[MAP_HEIGHT][MAP_WIDTH];
だと思います。
なぜわざわざ難しいことをやっているのか理解に苦しむ所です。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: よろしくお願いします。
返信数: 4
閲覧数: 336

Re: よろしくお願いします。

・43で割った余りを取る(精度的にはおすすめできません)。 ・(dobule)乱数/RAND_MAX * 42 と言った方法があります。 43の剰余では多分0,1だけほんの少し(1/762)頻度が高くなりますが、無視できるかどうかは使用者側で判断すればよいことです。 ・(dobule)乱数/RAND_MAX * 42だと、42が現れる確率は1/RAND_MAXですね。 * 43の間違いではないですか? 追記 一応検証したプログラムです。RAND_MAX個の乱数で42は0個でした。 #include <stdlib.h> #include <assert.h> #include <iostre...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題について困っています><
返信数: 13
閲覧数: 828

Re: 大学の課題について困っています><

ついでに言っておきますが char hinmei[256][256]; には256が二つありますが、意味が異なっているので #define MAX 256 で両方を置き換えてはいけません。 それぞれ別々のマクロを与えなければなりません。 さらに言えばC++ではマクロは余り推奨されていません。 マクロが様々な副作用を引き起こすからです(その副作用は省略)。 C++では定数は const int max_number = 256; //データの最大数 const int max_length_of_name = 255; //文字列最大長 char hinmei[max_number][max_l...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 【雑談】効率を上げるには?
返信数: 5
閲覧数: 591

Re: 【雑談】効率を上げるには?

一番効率が良いのは自分で作らないことです。 極端な言い方ですが、既に出来上がっているものを再利用すれば効率は上がります。 出来上がっているといっても製品ではなく、ライブラリ等の形になっていてフリーに使用できるものもたくさん有ります。 # DXライブラリのその一つではないでしょうか? それらを使用すれば自分で作成しなくても、いろいろな機能を簡単に使用して自分独自の部分のみを作ればよいことになります。 さて、それらの再利用できる部品を探し出すためのスキルとは、、、 経験でしょうかね。自分のやりたいことを適切な用語で検索すれば世の中の検索エンジンがいろいろな部品を見つけてくれます。 その部品が自分の...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体内の配列
返信数: 14
閲覧数: 1576

Re: 構造体内の配列

ストレージクラスが正しくありませんと言われました。 はて? VC2010 でコンパイルしてみましたがC/C++どちらでも問題なくコンパイル/リンク出来ましたが... /* a.h */ typedef struct { char field[15][10]; } FIELDSTATE; extern FIELDSTATE f_state; /* a.c */ include "A.h" FIELDSTATE f_state = { 0 }; int main() { return 0; } a.cをa.cppにしてもコンパイルは通ります。 実際のコードとエラーメッセージを見せてください。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題について困っています><
返信数: 13
閲覧数: 828

Re: 大学の課題について困っています><

ありがとうございます。 だいぶすっきりしてきました。 あと、ここにきて初歩的な質問で申し訳ないんですが、 int n, gokei; char hinmei[256][256]; int tanka[256], suryo[256], kingaku[256]; int i; の部分、"[256]"を打ち込むことはどのような役割を持っているのでしょうか? 256という数字を使う意味が分かりません。 他の数では駄目なのか、使わない方法はあるのか、説明していただけると幸いです。 256という数値の意味は bitter_fox さんが説明しておられる通りです。 他の数値では駄目か?という問いはあな...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体内の配列
返信数: 14
閲覧数: 1576

Re: 構造体内の配列

ヘッダーファイル(*.h)には

コード:

typedef struct {
char field[15][10];
} FIELDSTATE;
extern FIELDSTATE f_state;
ソースファイル(*.c)には

コード:

FIELDSTATE f_state = { 0 };
でいいはずです。
コンパイルしていないのでエラーが出たらごめんなさい。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C言語での河渡りの問題
返信数: 11
閲覧数: 2998

Re: C言語での河渡りの問題

特に指定はされていないのでb[4]でも大丈夫です。 構造体はまだ習っていないので難しいです。 構造体といってもint型の要素が4つなので配列と考えても大差ありません。 struct NODE { // 状態を表す構造体(配列は経路を表す) int T, W, G, C; // T, W, G, C はそれぞれ LEFT, RIGHT のいずれか } node[NODES]; を int Status[16][4]; と読み換えれば、構造体を触っている部分は node[step].T => Status[step][0]; node[step].W => Status[step][1]; no...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C言語での河渡りの問題
返信数: 11
閲覧数: 2998

Re: C言語での河渡りの問題

提出期限が今日の夜までで、 今日の夜までで、C言語を始めたばかりだとちょっと厳しいですね。 教えてくださったページは見ていますが わからなかったので。。。 もう一度見直してみます。 ではヒントを。 と思いましたが、まず質問があります。 あなたのプログラムでは、状態を int b[4][2]; で表していますが、これは指示されているのですか? 単純に考えると、川のこちらにいる場合は反対側にはいないので、b[x][0] = 1 のときは必ず b[x][1] = 0 になり、 b[x][0] = 0 のときは必ず b[x][1] = 1 になるので、2次元配列にする必要はありません。 int b[...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: C言語での河渡りの問題
返信数: 11
閲覧数: 2998

Re: C言語での河渡りの問題

「C言語 川渡り」で検索したら、ほとんど同じ問題とそのプログラムが出てきました。
http://www.slis.tsukuba.ac.jp/~hiraga/AI/src/#S_boat1
状態を表わす変数が違いますが、考え方が書いてありますので、移植すればできるでしょう。
ただし、探索経路を記録する変数を用意しておく必要があると思われます。
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: c++初歩的な質問ですが教えて頂けると助かります
返信数: 18
閲覧数: 929

Re: c++初歩的な質問ですが教えて頂けると助かります

どうもありがとうございます。 関数の型の宣言を重複してするようで少し違和感がありますが、そういう仕様なのですね。 これですっきり解決しました。 既に納得しておられるようですが、 bool binary_search(int); これは関数のプロトタイプ宣言(Declarations)です。 bool binary_search(int x){ ・・・ } これは関数の定義(Definitions)で、宣言ではありません。従って重複しているわけではありません。 関数が使用時に既に定義されていれば(main関数が後ろにある場合)宣言なしにそのまま使用できますが、 定義されていない場合(main関...
by maru
8年前
フォーラム: C言語何でも質問掲示板
トピック: 与えられた複数の文字列からオートマトンを自動生成したい
返信数: 9
閲覧数: 1524

Re: 与えられた複数の文字列からオートマトンを自動生成したい

複数の文字列を一度で検索するっていうのをどこかでみたような気がすると思ったら、「C言語で書くアルゴリズム」
(ISBN4-7973-0004-3)という本で実装例が出てました。P102 「4-4 複数文字列の検索」です。
Alfred AhoとM.J.Corasick が1975年に発表したテクニックだそうで、有限ステートマシンを利用してキーワードを
見つける方法だそうです。プログラムはC言語で9ページ半(54行/ページ、従って500行位)あり結構な量です。

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