επιστημη(@episteme) の回答履歴
![](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_100_6.gif)
- c++のvirtual関数および継承について
以下のプログラムで間違っている部分が分かる方、ご指摘お願い致します。 私の稚拙な腕では、どこが間違っているのかさっぱり分かりません。 以下のプログラムは、クラスticketを継承して、airplaneTicket、cinemaTicketを作成し、チケットの情報を入力し、最後に出力するものです。コンパイルエラーの箇所はコメントアウトしておきました。メイン関数の中に計5箇所あります。 よろしくお願い致します。 #include<string> #include<iostream> #include<vector> using namespace std; class ticket{ public: string ID; string seat; int price; ticket(){ cout << "ticket default constructor" << endl; ID="not Known"; seat="not Known"; } ticket(string i, string t){ cout << "ticket parameter-constructor" << endl; ID=i; seat=t; } virtual void setPrice(int p)=0; void printInfo(){ cout << ID << " " << seat << endl; } }; class airplaneTicket: public ticket{ public: string flight; airplaneTicket(){ cout << "airplane default constructor" << endl; flight="not known yet"; } airplaneTicket(string i, string t, string f):ticket(i, t){ cout << "airplane parameter-constructor" << endl; flight=f; } virtual void setPrice(int p){ string type; cout << "enter class type: "; cin >> type; if(type=="business") price=p*2; else price=p; } void priceInfo(){ cout << ID << " " << seat << " " << price << " " << flight << endl; } }; class cinemaTicket: public ticket{ public: cinemaTicket(){ cout << "cinema default constructor" << endl; } cinemaTicket(string i, string t):ticket(i, t){ cout << "cinema parameter-constructor" << endl; } }; int main(){ ticket tList[100]; //error: invalid abstract type 'ticket' for 'tList' tList[0]=new airplaneTicket("239", "d34", "f345"); //error: no match for 'operator=' in 'tList[0] tList[1]=new airplaneTicket(); // error: no match for 'operator=' in 'tList[1] tList[2]=new cinemaTicket("245", "a23"); //error: cannot allocate an object of abstract type 'cinemaTicket' tList[3]=new cinemaTicket(); // error: cannot allocate an object of abstract type 'cinemaTicket for(int i=0;i<4; i++){ tList[i].printInfo(); } return 1; }
- 逆ポーランド記法について
学校で A=(B-C)/D+E*Fを逆ポーランド記法で書くのを講師が ABC-DE+F*/= と書いたのですが/の位置は ABC-D/E+F*= こう書くのだと思ったのですが何が違うのでしょうか?
- 締切済み
- C・C++・C#
- endless324
- 回答数4
- 配列の要素数に変数を入れたいときには
よろしくお願いします。 配列の要素数には定数しか入れられないのですが,どうしても変数を入れたいときは,それを引数として関数を呼び出すしか方法はないでしょうか。 具体的には,scanfで手に入れたint型の変数を要素数とする配列を宣言したいのですが,どうすれば良いでしょうか。 ご教授ください。
- 簡易grepコマンドの作成を自作プログラムで作りたいのですが……
簡易grepコマンドの作成を自作プログラムで作りたいのですが…… C言語でです。 C++ではなぃです。 できれば初心者が考えるよぉなプログラムで。 またコメントみたぃにプログラムの意味も詳しくわかりやすくあると助かります。 コンパイルは ./mygrep 検索するもの ディレクトリ/ファイル名 だった気がします。 mygrepはプログラム名です。 おねがぃします。
- VC++でのプログラム実行中に変数の数値を確認する方法
VC++でのプログラム実行中に変数の数値を確認する方法 VC++でプログラムを実行している間に、変数の中の数値がどのように変化するかを表示させるためにはどのような機能があるのでしょうか? 思いつくのは次の2つなのですが、具体的な方法が分かりません。 ご存知方がいたら教えてください。 ?ソースの中に特定の表示名令文を書いておく ?VC++の機能を使って変数の中身を表示させる
- ベストアンサー
- C・C++・C#
- okwave_q_a
- 回答数4
- c言語のメモリリークについての質問
c言語のメモリリークについての質問 c言語初心者のため、メモリリークについて質問させていただければと存じます。 下記のコードで、 char* char_p = "char1"; char_p = "char2"; // ←メモリリーク? 2行目の部分は、 "char1"のメモリ領域が確保されたままで、解放できなくなってしまうので、 メモリリークを起こして問題な気がするのですが、実際はどうなのでしょうか? よろしくお願いいたします。
- 配列を書き換える関数を作成してみたいのですが、
配列を書き換える関数を作成してみたいのですが、 int a[10]={3,5,7,6,7,8,10,2,3,11}; 上記のような配列があるとして、 0~9のうち特定の添字を指定して、a[]の中身を書き換える関数を作る場合は、 どのような方法があるのでしょうか?
- ベストアンサー
- C・C++・C#
- okwave_q_a
- 回答数6
- 初心者なんですが、モジュールが良くわからなくて,,,
c言語で文字列のハッシュモジュールを作ることになったんですが、そもそもモジュールの知識がほぼないのでどう書けばいいか、よくわかりません。 例えば、文字列の配列が渡されてハッシュを作るのですが、そもそもそこらへんの渡し方をどのように書けばいいのかもわかりません。誰かわかりやすく教えてください。
- 初心者なんですが、モジュールが良くわからなくて,,,
c言語で文字列のハッシュモジュールを作ることになったんですが、そもそもモジュールの知識がほぼないのでどう書けばいいか、よくわかりません。 例えば、文字列の配列が渡されてハッシュを作るのですが、そもそもそこらへんの渡し方をどのように書けばいいのかもわかりません。誰かわかりやすく教えてください。
- Studio2008でのスレッドの挿入方法
Studio2008でのスレッドの挿入方法 VisualC++2008を使っている初心者です。 フォームプログラム上にRS232Cの通信を入れたいと考えていて、 スレッドを使ってプログラムを作ろうと考えているのですが、 スレッドクラスなどは、ボタンやテキストボックスみたいにツールから簡単に作成できるのものではないのでしょうか? (ひょっとしたら簡単に基本的なスレッドを挿入する方法があるかと思いました。) もしなければ、Studioのtoolメニューからどのように作成していくものなのでしょうか? それとも全て自分でソースにコードを挿入する必要があるのでしょうか? 基本的なことから始めますので、簡単な挿入方法があるのなら教えてください。 (サイトで見かけるスレッドのサンプルコードはなかなかイメージがわいてきません)
- Studio2008でのスレッドの挿入方法
Studio2008でのスレッドの挿入方法 VisualC++2008を使っている初心者です。 フォームプログラム上にRS232Cの通信を入れたいと考えていて、 スレッドを使ってプログラムを作ろうと考えているのですが、 スレッドクラスなどは、ボタンやテキストボックスみたいにツールから簡単に作成できるのものではないのでしょうか? (ひょっとしたら簡単に基本的なスレッドを挿入する方法があるかと思いました。) もしなければ、Studioのtoolメニューからどのように作成していくものなのでしょうか? それとも全て自分でソースにコードを挿入する必要があるのでしょうか? 基本的なことから始めますので、簡単な挿入方法があるのなら教えてください。 (サイトで見かけるスレッドのサンプルコードはなかなかイメージがわいてきません)
- vc++2008の進行状況ダイアログ表示に関して
現在VC++2008にて開発を行っております、C++初心者の者です。 モーダルダイアログを表示し、 そのダイアログの値を利用・表示した進行状況ダイアログを表示したいと考えています。 ・進行状況ダイアログに表示する値 現在作成ファイル数 / 総制作ファイル数 (プログレスバーの表示は考えていません。) ・現在、進行状況ダイアログはモーダレスダイアログを表示し、表示している値をforループ内で変更するような処理にしていますが、ダイアログには何も表示していません。 どのような処理にすればよろしいでしょうか。 宜しくお願いします。
- Studio2008でのスレッドの挿入方法
Studio2008でのスレッドの挿入方法 VisualC++2008を使っている初心者です。 フォームプログラム上にRS232Cの通信を入れたいと考えていて、 スレッドを使ってプログラムを作ろうと考えているのですが、 スレッドクラスなどは、ボタンやテキストボックスみたいにツールから簡単に作成できるのものではないのでしょうか? (ひょっとしたら簡単に基本的なスレッドを挿入する方法があるかと思いました。) もしなければ、Studioのtoolメニューからどのように作成していくものなのでしょうか? それとも全て自分でソースにコードを挿入する必要があるのでしょうか? 基本的なことから始めますので、簡単な挿入方法があるのなら教えてください。 (サイトで見かけるスレッドのサンプルコードはなかなかイメージがわいてきません)
- 初心者なんですが、モジュールが良くわからなくて,,,
c言語で文字列のハッシュモジュールを作ることになったんですが、そもそもモジュールの知識がほぼないのでどう書けばいいか、よくわかりません。 例えば、文字列の配列が渡されてハッシュを作るのですが、そもそもそこらへんの渡し方をどのように書けばいいのかもわかりません。誰かわかりやすく教えてください。
- C++プログラミングをする上で、少々気になった点があるので質問させてく
C++プログラミングをする上で、少々気になった点があるので質問させてください。 class CSuper { int _a,_b; public: CSuper(int a,int b); SetA(int a){ _a = a; } SetB(int b){ _b = b; } }; このようなクラスがある時 CSuper :: CSuper(int a, int b) : _a(a),_b(b) { } とするのと CSuper :: CSuper(int a, int b) { _a = a; _b = b; } とするのとでは、何か違いやメリット等はあるのでしょうか? また、 サブクラスのコンストラクタで CSub::CSub(int a, int b) : CSuper(a,b) { } とするのと、 CSub::CSub(int a, int b) { SetA(a); SetB(b); } とするのとでは、なにか違いはあるのでしょうか? よろしくお願いします
- 100000未満素数の総数を求めるのに困っているので教えてください。
100000未満素数の総数を求めるのに困っているので教えてください。 #include<stdio.h> #include<math.h> #define NUM 100000 int main(void){ int prime[NUM+1],i,j,Limit; for(i=2;i<=NUM;i++){ prime[i]=1; } Limit=(int)sqrt(NUM); for(i=2;i<=Limit;i++){ if(prime[i]==1){ for(j=2*i;j<=NUM;j+=i){ prime[j]=0; } } } for ( i=2;i<=NUM;i++) { if (prime[i]) { printf("%d\n",i); } } } これなんですが、実行したらエラーが出てしまうんですがなぜでしょうか?
- エラーがどこかわからない
#include<stdio.h> #include<math.h> #define NUM 100000 int main(void){ int prime[NUM+1],i,j,Limit; for(i=2;i<=NUM;i++){ prime[i]=1; } Limit=(int)sqrt(NUM); for(i=2;i<=Limit;i++){ if(prime[i]==1){ for(j=2*i;j<=NUM;j+=i){ prime[j]=0; } } } for ( i=2;i<=NUM;i++) { if (prime[i]){ printf("%d\n",i); } } } これは100000未満の素数の総数を求めるプログラムなんですが、実行したらエラーが出てくるんです。何度も確認しても正しいはずなんですがエラー出てきて困っています。どこが間違っているでしょうか?
- 100000未満素数の総数を求めるのに困っているので教えてください。
100000未満素数の総数を求めるのに困っているので教えてください。 #include<stdio.h> #include<math.h> #define NUM 100000 int main(void){ int prime[NUM+1],i,j,Limit; for(i=2;i<=NUM;i++){ prime[i]=1; } Limit=(int)sqrt(NUM); for(i=2;i<=Limit;i++){ if(prime[i]==1){ for(j=2*i;j<=NUM;j+=i){ prime[j]=0; } } } for ( i=2;i<=NUM;i++) { if (prime[i]) { printf("%d\n",i); } } } これなんですが、実行したらエラーが出てしまうんですがなぜでしょうか?
- プログラムが正しく動きません。
http://plaza.rakuten.co.jp/kakuekiteisha5/diary/200912260000/のページの素数判定プログラムで、 コンパイルは問題なく通るのですが、 実行すると、同じ入力でも結果が変わったり、 デバッグ時に同じ入力で Program terminated with signal SIGABRT, Aborted. というエラーが出たり出なかったりします。 原因がどうしてもわかりません。 どなたかよろしくお願いします。 ちなみに、コンパイラはgcc、デバッガはgdbを使っています。
- 宿題で100000未満の素数の総数を求めるプログラミングの課題が出たの
宿題で100000未満の素数の総数を求めるプログラミングの課題が出たのですが、途中までは分かったのですが、先生が言うには最後のほうに、i=2からNUMまで配列要素prime[i]が1である素数iを出力するプログラムを書かないといけないんですが、それがわかりませんので教えてください。