検索結果 150 件

by maru
1年前
フォーラム: C言語何でも質問掲示板
トピック: 配列をスキップする方法
返信数: 9
閲覧数: 3005

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

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

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

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

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

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

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

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

コード:

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

コード:

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

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

Re: nullptrチェックについて

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

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

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

Re: nullptrチェックについて

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

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

Re: vector const_iterator

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

Re: vector const_iterator

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

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

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

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

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

Re: vector const_iterator

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

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

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

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

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

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

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

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

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

Re: C++ if文にマクロ

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

Re: 逆行列

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

Re: C++ if文にマクロ

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

Re: 逆行列

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

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

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

Re: C++が分からない

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

Re: tmr0について

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

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

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

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

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

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

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

Re: 教えてください

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

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

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

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

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

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

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

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

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

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

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

構造体のメンバがすべて文字列ですけど、クラス人数は int にしたほうがよくないですか?
あと、性別も bool もしくは enum にしたほうが後の処理が楽になります。

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