ページ 11

緊急!! 質問があります

Posted: 2012年8月09日(木) 22:26
by もも
c++言語のプログラミングで困っています。
A,Bを入力したらCを出力し
D,Eを入力したらFを出力する
といった具合に入力した文字に対応する出力をする
プログラムを作りたいのですがうまくデバッグができません。
どのようにプログラムを書けばよいのでしょうか。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 22:51
by box
もも さんが書きました: プログラムを作りたいのですがうまくデバッグができません。
どのようにプログラムを書けばよいのでしょうか。
状況がよくわからないので教えてください。

デバッグができない、ということは、コードを書いてコンパイルした結果、
実行ファイルは正しくできたけれど、思ったとおりに動いてくれない状態である。
この状態から、コードに潜んでいるバグ(問題点)をどのように取り除けばいいかがわからない、
ということでいいのでしょうか。

それとも、「デバッグ」という単語の意味を取り違えられているのでしょうか。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 22:52
by nil
丸投げは禁止です
フォーラムルールを御覧ください。

また、プログラムの仕様が曖昧です。もっと詳しくお願いします。

あと、boxさんのおっしゃった通りデバッグとはバグを取り除くことです。コードを書くこととは異なります。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:01
by もも
>>boxさん

子供二人の血液型を入力し
両親の血液型の候補を出力するという
プログラムを作りたいのです。

if文を使ってプログラムを書いて
ビルドは成功したのですが
デバッグをすると
子供二人分の血液型の入力はできるが
両親の血液型の候補の表示がされないという状況です。

わかりづらくてすみません。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:04
by beatle
緊急と言われても、フォーラムルールを読んでいない(ように見える)質問には答えられないというのが皆さんの心だと思います。
少なくともソースコードを見せていただけないことには回答しようにも難しいです。
僕らはエスパーではありませんから。

それから緊急なら緊急で、いつまでが期限だとか、なんで緊急なのかとか書いたほうがいいでしょう。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:06
by もも
>>涼雅さん

プログラムの仕様というのは
上に書いたようなことで大丈夫なのでしょうか?

質問するのが初めてで
どのように書けばよいかいまいち分かりませんでした。
すみません。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:13
by もも
>>beatleさん

これは学校の課題で
できれば明日中に完成させたかったので
緊急で質問しました。

作ったプログラムは以下のような感じです。
void main(){

string A,B,O,AB;
string x,y; //こどもの血液型
//2人の子供の血液型を入力する
cout<<"2人の子供の血液型を入力してください"<<endl;
cout<<"子供1:";
cin>>x;
cout<<"子供2:";
cin>>y;

//親2名の血液型を判定する
if ((x==A && y==B) || (x==B && y==A)){
cout<<"親2名の血液型の候補は"<<endl;
cout<<"(O*AB)(A*B)(AB*B)(AB*AB)"<<endl;
}

if (x==A && y==A){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(O*A)(O*AB)(A*B)(AB*A)(AB*B)(AB*AB)"<<endl;
}

if ((x==A && y==O)||(x==O && y==A)){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(O*A)(A*B)"<<endl;
}

if((x==A && y==AB) || (x==AB && y==A)){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(A*B)(AB*A)(AB*B)(AB*AB)"<<endl;
}

if (x==B && y==B){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(O*B)(O*A)(B*B)(A*B)(AB*A)(AB*B)(AB*AB)"<<endl;
}

if ((x==B && y==AB)||(x==AB && y==B)){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(A*B)(AB*A)(AB*B)(AB*AB)"<<endl;
}

if ((x==B && y==O) || (x==O && y==B)){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(O*B)(O*A)(O*B)(A*A)(B*B)(A*B)"<<endl;
}

if (x==O && y==O){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(O*O)(O*A)(O*B)(A*A)(B*B)(A*B)"<<endl;
}


if((x==AB && y==O) || (x==O && y==AB)){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(A*B)"<<endl;
}

if (x==AB && y==AB){
cout <<"親2名の血液型の候補は"<<endl;
cout <<"(A*B)(AB*A)(AB*B)(AB*AB)"<<endl;
}
}

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:16
by h2so5
string A,B,O,AB; をそれぞれ "A", "B", "O", "AB" で初期化する必要があります。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:32
by もも
>>h2so5 さん

ありがとうございます。

""をA,B,O,ABにつけてみましたが
識別子が必要というメッセージがでました。
教科書を見ながらやってみたのですが
わかりません。

どうすればよいのでしょうか?

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:41
by h2so5
何か勘違いされているようですが、変数名と実際に変数に入ってる文字列は別のものです。
変数名がAだからといって、その変数の指している文字列が自動的に"A"を表しているわけではありません。

コード:

string A("A"), B("B"), O("O"), AB("AB");
または

コード:

string A = "A", B = "B", O = "O", AB = "AB";
のように初期化することができます。

Re: 緊急!! 質問があります

Posted: 2012年8月09日(木) 23:53
by もも
>>h2so5 さん

初期化がよくわかってませんでした。
h2so5さんが教えてくださったように初期化してみたら
プログラムが動きました。
本当にありがとうございました。