επιστημη(@episteme) の回答履歴
- C++でSTLのVectorを使った構造体について
Vectorで作った構造体配列a内でさらにVectorで宣言された配列bを作った場合、bに数値を代入するにはどうすれば良いのでしょうか? struct A { std::vector<int> b; }; std::vector<A> a;
- ベストアンサー
- C・C++・C#
- noname#142253
- 回答数2
- C++でSTLのVectorを使った構造体について
Vectorで作った構造体配列a内でさらにVectorで宣言された配列bを作った場合、bに数値を代入するにはどうすれば良いのでしょうか? struct A { std::vector<int> b; }; std::vector<A> a;
- ベストアンサー
- C・C++・C#
- noname#142253
- 回答数2
- C言語のプログラムを作成して下さい。
C言語で以下のような機能を持つプログラムを作成してください。 3つの文章X.txt,Y.txt,Z.txtでY,ZのうちどちらがXに近いか判定するプログラム。X.txtを読み込んでXに出現する単語からなる単語の木を作成する。次にY,Zを読み込み単語の木と単語の出現頻度をもとにXとY、XとZの類似度を測るための統計的データを計算する。そしてY,ZのどちらがXに近いか、とその根拠となる統計データを出力する。
- ベストアンサー
- C・C++・C#
- noname#136979
- 回答数1
- error C3867 関数呼び出しには引数リスト
VS2008 VC++ 環境にて、コンパイルで、「error C3867: 'CFrrjiftestDlg::MyDataHandler': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&CFrrjiftestDlg::MyDataHandler' を使用してください」 が発生しました。ネットで類似のエラーを見ましたが、エラーは回避できませんでした。どうすれば、エラーが直るのか教えてください。 【エラー箇所のソース】 void CFrrjiftestDlg::OnBnClickedButton1() ← このソースは、frrjiftestDlg.cpp で記述 #include "frrjiftestDlg.h" この間にいろいろな処理を記述 Cortex_SetDataHandlerFunc(MyDataHandler); ← この行でエラー発生 【frrjiftestDlg.h のヘッダ】 void MyDataHandler(sFrameOfData* FrameOfData); ← これを記述 【MyDataHandler の記述】 void CFrrjiftestDlg::MyDataHandler(sFrameOfData* FrameOfData) ← これは、frrjiftestDlg.cpp で記述 この後に処理を記述 ざっと、こんな感じで書いています。 エラーの説明をみると、「メンバへのポインタを作成するために '&CFrrjiftestDlg::MyDataHandler' を使用してください」となっていますが、いろいろ書いてみましたが、だめでした。
- error C3867 関数呼び出しには引数リスト
VS2008 VC++ 環境にて、コンパイルで、「error C3867: 'CFrrjiftestDlg::MyDataHandler': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&CFrrjiftestDlg::MyDataHandler' を使用してください」 が発生しました。ネットで類似のエラーを見ましたが、エラーは回避できませんでした。どうすれば、エラーが直るのか教えてください。 【エラー箇所のソース】 void CFrrjiftestDlg::OnBnClickedButton1() ← このソースは、frrjiftestDlg.cpp で記述 #include "frrjiftestDlg.h" この間にいろいろな処理を記述 Cortex_SetDataHandlerFunc(MyDataHandler); ← この行でエラー発生 【frrjiftestDlg.h のヘッダ】 void MyDataHandler(sFrameOfData* FrameOfData); ← これを記述 【MyDataHandler の記述】 void CFrrjiftestDlg::MyDataHandler(sFrameOfData* FrameOfData) ← これは、frrjiftestDlg.cpp で記述 この後に処理を記述 ざっと、こんな感じで書いています。 エラーの説明をみると、「メンバへのポインタを作成するために '&CFrrjiftestDlg::MyDataHandler' を使用してください」となっていますが、いろいろ書いてみましたが、だめでした。
- C++で文字をカウントするプログラムを・・・
C++で簡易的な文字をカウントするプログラムを作成しようとしています。 あるtxtファイルがあって、その中に ----------------- nannchara8 1234 #kokokara a92kv838 402853 #s82ffr kka0345 #kokomade ----------------- と記述してあります。 #kokokara~#kokomadeに書いてある特定の文字(0やaなど)の数をカウント、ただし、行頭に#のついているものはカウントしない(上に示したtxtファイル内の文字「8」のカウント結果は3・・・みたいな」)。 そんなプログラムを作りたいのですが どのようにすればいいでしょうか? ご教授願います。
- ベストアンサー
- C・C++・C#
- steph-2009
- 回答数1
- C++のクラスポインタの初期化?
C言語しか経験がないものです。最近Irrlichtでゲームをつくりはじめました。いきなりチュートリアルがわからないので質問させていただきます。 IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d<u32>(640, 480), 16, false, false, false, 0); if (!device) return 1; という部分で、 (1) *devide = createDevice( ...); なぜクラスポインタが関数で初期化できるのですか。 アドレスを入れないのはなぜなのでしょうか。 (2) if(!device) これだとアドレス値の式を判別しているように思いますが、どういうことですか。 初歩的な質問で申し訳ございません。
- ベストアンサー
- C・C++・C#
- noname#143092
- 回答数4
- C++のクラスポインタの初期化?
C言語しか経験がないものです。最近Irrlichtでゲームをつくりはじめました。いきなりチュートリアルがわからないので質問させていただきます。 IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d<u32>(640, 480), 16, false, false, false, 0); if (!device) return 1; という部分で、 (1) *devide = createDevice( ...); なぜクラスポインタが関数で初期化できるのですか。 アドレスを入れないのはなぜなのでしょうか。 (2) if(!device) これだとアドレス値の式を判別しているように思いますが、どういうことですか。 初歩的な質問で申し訳ございません。
- ベストアンサー
- C・C++・C#
- noname#143092
- 回答数4
- C言語
課題を解いて欲しいです。。。 パーティでビンゴ大会を行おうとしている。 そのビンゴでは1~n の数字をコンピュータを用いてひとつずつ取り出すのだが、そのプロ グラムがまだ完成していない。 1. n=200 としたとき、あなたが考えた実行方法をコーディングしなさい。 2. インターネットを用いて最適と思われる方法を探しだし、同様に n=200 としてコーデ ィングしなさい。 3. 1 と2 の方法について実行時間を計測しなさい。 4. 1 と2 の方法をそれぞれ考察しなさい。 ただし、1、2、共にそれぞれどのような考え方で行ったか、説明を付随する。 全くわからないのでお願いします。
- ベストアンサー
- C・C++・C#
- rioooooooooo
- 回答数16
- プログラミングCについて質問します。
演習B3-03で y=x[1]; x[1]=x[8]; x[8]=y; y=x[2]; x[2]=x[7]; x[7]=y; y=x[3]; x[3]=x[6]; x[6]=y; y=x[4]; x[4]=x[5]; x[5]=y; これをforループで表すにはどうすればいいか教えてください。
- C言語のプログラムを書いたのですが上手く動きません
C言語の練習問題をプログラミングしたのですが、上手く動きません。 コンパイルはできるのですが、実行すると「Segmentation fault(core dumped)」となります。 問題は、コマンドライン引数としてファイル名を指定したテキストファイルから読み込んだデータを,双方向リストに格納し,順番に表示するというものです。 テキストファイルは 10T5001 C 10T5002 A 10T5003 B 10T5004 C 10T5005 D 10T5006 B 10T5007 A 10T5008 D このように、IDとランクをランクABCDをスペースで区切ったもので、これをランクAから順番に表示させます。 上手く動けば ID: 10T5002, grade: A, ID: 10T5007, grade: A ID: 10T5003, grade: B ID: 10T5006, grade: B ID: 10T5001, grade: C ID: 10T5004, grade: C ID: 10T5005, grade: D ID: 10T5008, grade: D と表示されるはずなんですが・・・ これが僕の書いたプログラムです(長いです。ごめんなさい) #include <stdio.h> #include <stdlib.h> #include <string.h> #define ID_LENGTH 8 /* IDの長さ+ナル文字 */ #define EFOPEN -1 #define ENOMEM -2 #define EINVAL -3 /* 双方向リストのノード */ typedef struct sList /* タグ */ { char id[ID_LENGTH]; /* ID */ char grade; /* ランク*/ struct sList *prev; /* 前のノードのアドレス */ struct sList *next; /* 次のノードのアドレス */ } sNode; /* 双方向リストのノードを作成する関数 makeNewNode() 作成したノードのprevとnextはNULLにする 引数 ・ノードに格納するID ・ノードに格納するランク(A/B/C/D) 戻値 作成したノードの先頭アドレス.メモリの確保に失敗した場合はNULL */ sNode *makeNewNode(char *id, char grade) { sNode *pNewNode; pNewNode = (sNode*)malloc(sizeof(sNode)); if(pNewNode != NULL) { strncpy(pNewNode->id, id, ID_LENGTH-1); pNewNode->grade = grade; pNewNode->prev = NULL; pNewNode->next = NULL; } return pNewNode; } /* 引数で渡された任意のノードの後ろに新しいノードを追加する関数 insertNext() 引数 ・後ろにノードを追加したいノードの先頭アドレス ・追加するノードの先頭アドレス 戻値 なし */ void insertNext(sNode *node, sNode *newNode) { if(node->next == NULL) //一番後ろに追加する場合 { node->next = newNode; newNode->prev = node; } else //まん中に挿入する場合 { newNode->prev = node; newNode->next = node->next; node->next->prev = newNode; node->next = newNode; } } /* main() 引数 int argc コマンドライン引数の数 char *argv[] 与えられたコマンドライン引数の文字列の先頭アドレスの配列 戻値 int 正常終了の時 0 以下の場合は異常終了し,括弧内の値を返す データファイルが開けなかった場合(EFOPEN) makeNewNode()でメモリが確保できなかった場合(ENOMEM) 引数の数が正しくない場合(EINVAL) */ int main(int argc, char *argv[]) { sNode *top; /* リストの先頭ノードのアドレスを保持する変数*/ sNode *new; /* 新しく作成したノードのアドレスを保持する変数 */ sNode *now; /* 現在見ているノードのアドレスを保持する変数 */ FILE *fp; /* データファイルのファイルポインタ */ char id[ID_LENGTH]; /* ファイルから読み込んだIDを一時的に保持する変数 */ char grade; /* ファイルから読み込んだランクを一時的に保持する変数 */ /* コマンドライン引数の数をチェックする 数に過不足があれば,使い方を表示し,異常終了する */ if(argc != 2){ printf("Usage: %s datafilename.\n", argv[0]); return EINVAL; } /* データファイルを読み込み用に開く ファイルが開けなかった場合,エラーメッセージを表示し異常終了する */ fp = fopen(argv[1], "r"); if(NULL == fp){ printf("No such file %s.\n", argv[1]); return EFOPEN; } /* リストの先頭に番兵を立てる */ new = makeNewNode("Banpei", 'A'-1); if (new == NULL){ printf("Error: cannot allocate memory\n"); return ENOMEM; } top = new; /* データファイルから1行ずつデータを読み込み,ランク順にリストに追加していく 既にリストの先頭には番兵ノードがある点に注意 */ while(EOF != fscanf(fp, "%s %c", id, &grade)){ new = makeNewNode(id, grade); if(new == NULL){ printf("Cannot allocate memory.\n"); return EFOPEN; } if(top->next == NULL){ //リストが空の場合 insertNext(top, new); } else{ now = top; while(new->grade > now->grade){ now = now->next; } insertNext(now, new); } } /* できあがったリストの内容を先頭から順に表示する ただし,番兵ノードは表示しない */ now = top; while(now != NULL){ printf("ID: %s, grade: %c\n",now->id, now->grade,); now = now->next; } /* リストのノードを全て(番兵ノードも含む)解放し,リストを空にする */ now = top; while(now->next != NULL){ free(now->prev); now = now->next; } free(now); fclose(fp); return (0); } まだまだ練習中なもので、かなり拙いものだと思いますが、とりあえずまずはプログラム動くようにしたいです。 よろしくお願いします。
- define文のパラメータを実行時に変化させたい
Cで、define文で値を指定することがあると思います。 シェルスクリプトあたりを使って、define文で指定される定数のパラメータを変化させて、自動でパラメータを変化させてデータを取りたいです。 そのようなときにはどのように記述すればよいのでしょうか? たとえば、下のような場合です。 環境はlinuxです。 よろしくお願いします。 //////////////////////////////////////// #define LOOP 400 <---- ここを実行時に変化させたい。 #define FILESIZE LOOP*16 int main(int argc, char** argv){ printf("FILESIZE = %d\n", FILESIZE); }
- C言語
課題を解いて欲しいです。。。 パーティでビンゴ大会を行おうとしている。 そのビンゴでは1~n の数字をコンピュータを用いてひとつずつ取り出すのだが、そのプロ グラムがまだ完成していない。 1. n=200 としたとき、あなたが考えた実行方法をコーディングしなさい。 2. インターネットを用いて最適と思われる方法を探しだし、同様に n=200 としてコーデ ィングしなさい。 3. 1 と2 の方法について実行時間を計測しなさい。 4. 1 と2 の方法をそれぞれ考察しなさい。 ただし、1、2、共にそれぞれどのような考え方で行ったか、説明を付随する。 全くわからないのでお願いします。
- ベストアンサー
- C・C++・C#
- rioooooooooo
- 回答数16
- DirectoryInfo型配列ソート(C#)
Visual C# でちょっとしたプログラムを作成中です。 その中で、フォルダの一覧をTreeViewに取得させています(下記ページを参考にしてます)。 http://uchukamen.com/Programming1/TreeViewByDk/index.htm ここで、フォルダの一覧を取得していますが、名前順ではなく不定順になってしまいます。 Stringであれば、Sortで良いのでしょうが、DirectoryInfo型の配列をソートする簡単な方法がありますでしょうか?
- Builder XE W.7でのXP用exe
EmbarcaderoのBuilderXEではW.7のOS下でコンパイルして、W.7用の.exeファイルとXP用の.exeが作れるとカタログには書かれていました。 これは具体的にはどの様な操作をすれば出来るのでしょうか。 ダウンロード版を購入してしまい、説明書が無く困って居ります。 Builder 5を使用していましたので、ある程度の操作は分かりますので、W7用の.exeは出来ています。 お分かりに成る方が居られましたら宜しくお教え下さい。
- C++のクラスについて
/*以下のコメントがある行では何故、コンストラクタ(class2::class2)を指定出来ないのですか? デストラクタ(class2::~class2)の場合も問題なくコンパイルが通り、実行できます (http://codepad.org/1oJkxjyZ の23行目) 開発環境 Windows XP SP3 コンパイラ:GCC 実行結果 class1のコンストラクタ class2のコンストラクタ aiueoの実行 class2のデストラクタ class1のデストラクタ */ #include<iostream> class class1; class class2; class class1{ public: class1(); ~class1(); private: class2*pointer; }; class class2{ public: class2(); ~class2(); void aiueo(); }; class1::class1(){ std::cout<<"class1のコンストラクタ"<<std::endl; pointer=new class2(); pointer->aiueo(); //aiueoを~class2に置き換えてもコンパイル出来るが、class2だとエラーが出る } class1::~class1(){ delete pointer; std::cout<<"class1のデストラクタ"<<std::endl; } class2::class2(){ std::cout<<"class2のコンストラクタ"<<std::endl; } class2::~class2(){ std::cout<<"class2のデストラクタ"<<std::endl; } void class2::aiueo(){ std::cout<<"aiueoの実行"<<std::endl; } int main(){ class1 test1; return 0; }
- C++のクラスについて
/*以下のコメントがある行では何故、コンストラクタ(class2::class2)を指定出来ないのですか? デストラクタ(class2::~class2)の場合も問題なくコンパイルが通り、実行できます (http://codepad.org/1oJkxjyZ の23行目) 開発環境 Windows XP SP3 コンパイラ:GCC 実行結果 class1のコンストラクタ class2のコンストラクタ aiueoの実行 class2のデストラクタ class1のデストラクタ */ #include<iostream> class class1; class class2; class class1{ public: class1(); ~class1(); private: class2*pointer; }; class class2{ public: class2(); ~class2(); void aiueo(); }; class1::class1(){ std::cout<<"class1のコンストラクタ"<<std::endl; pointer=new class2(); pointer->aiueo(); //aiueoを~class2に置き換えてもコンパイル出来るが、class2だとエラーが出る } class1::~class1(){ delete pointer; std::cout<<"class1のデストラクタ"<<std::endl; } class2::class2(){ std::cout<<"class2のコンストラクタ"<<std::endl; } class2::~class2(){ std::cout<<"class2のデストラクタ"<<std::endl; } void class2::aiueo(){ std::cout<<"aiueoの実行"<<std::endl; } int main(){ class1 test1; return 0; }
- Treeviewのnodeについて
お世話になります。 C#2005で開発をしております。 Treeviewに関してのご質問をさせていただきます。 Treeviewのnodeの一つを、enable=falseにしたいと考えております。 しかしながら、Treeviewにプロパティがありません。 enabel=falseに相当するプロパティがあれば、ご教示いただければ幸いに存じます。 現状は、Treeviewのnodeの一つの文字色を変更する方法で考えておりますが、 何かよい方法があればと思いご質問させていただきました。 恐れ入りますが、ご回答いただければ幸いに存じます。
- ベストアンサー
- C・C++・C#
- noname#164045
- 回答数1
- C++のクラスについて
/*以下のコメントがある行では何故、コンストラクタ(class2::class2)を指定出来ないのですか? デストラクタ(class2::~class2)の場合も問題なくコンパイルが通り、実行できます (http://codepad.org/1oJkxjyZ の23行目) 開発環境 Windows XP SP3 コンパイラ:GCC 実行結果 class1のコンストラクタ class2のコンストラクタ aiueoの実行 class2のデストラクタ class1のデストラクタ */ #include<iostream> class class1; class class2; class class1{ public: class1(); ~class1(); private: class2*pointer; }; class class2{ public: class2(); ~class2(); void aiueo(); }; class1::class1(){ std::cout<<"class1のコンストラクタ"<<std::endl; pointer=new class2(); pointer->aiueo(); //aiueoを~class2に置き換えてもコンパイル出来るが、class2だとエラーが出る } class1::~class1(){ delete pointer; std::cout<<"class1のデストラクタ"<<std::endl; } class2::class2(){ std::cout<<"class2のコンストラクタ"<<std::endl; } class2::~class2(){ std::cout<<"class2のデストラクタ"<<std::endl; } void class2::aiueo(){ std::cout<<"aiueoの実行"<<std::endl; } int main(){ class1 test1; return 0; }