これは私が書いた初めての C++ プログラムであり、オペランドを入れる順序を理解するのに苦労しています。これはクラス用ですが、宿題タグを使用することになっていないようです。私がこれを間違っている場合は申し訳ありません。
これは私の入力です
// Get DNA string
string st;
cout << "Enter the DNA sequence to be analysed: ";
cin >> st;
これはうまくいくようですが、これが間違っている場合に備えて含めると思いました。
これは、入力がC、T、A、またはGのみであることを確認するためにこれまでに行ったことです。プログラムを実行し、「有効なシーケンス1を入力してください、有効なシーケンス2を入力してください... ect。I私は何か非常にばかげたことをしていると確信しています。
// Check that the sequence is all C, T, A, G
while (i <= st.size()){
if (st[i] != 'c' && st[i] != 'C' && st[i] != 'g' && st[i] != 'G' && st[i] != 't' && st[i] != 'T' && st[i] != 'a' && st[i] != 'A');
cout << "Please enter a valid sequence" <<
i++;
else if (st[i] == c,C,G,t,T,a,A)
i++;
私のプログラムの後半は、シーケンス内の C と G の数を数えることです。
for (i < st.size() ; i++ ;);
for (loop <= st.size() ; loop++;)
if (st[loop] == 'c')
{
count_c++;
}
else if (st[loop] == C)
{
count_c++;
}
else if (st[loop] == g)
{
count_g++;
}
else if (st[loop] == G);
{
count_g++;
}
cout << "Number of instances of C = " << count_c;
cout << "Number of instances of G = " << count_g;
ループしていないようです。文字の1つをカウントします。ループさせるにはどうすればよいですか?endl を入れられないようです。どこかで必要になることはわかっていますが、エラーが返されることなくどこでも。
正しい方向に向けるための助けやヒントをいただければ幸いです。私はこのコードに 2 日間取り組んできました (認めるのは恥ずかしいことです)。
編集 :
私のシーケンスチェッカーは次のようになります。
while (i < st.size() ) {
if (st[i] != c && st[i] != C && st[i] != g && st[i] !=G && st[i] !=t && st[i] !=T && st[i] !=a && st[i] != A)
cout << "Please enter a valid sequence" << "\n" << "\n";
i++;
}
私のカウンターは次のようになります。
// Count the number of Cs and Gs
count_c = 0;
count_g = 0;
for (i = 0; i < st.size() ; i++) {
if ((st[i] == 'c') || (st[i] == 'C'))
count_c++;
else if ((st[i] == 'g')|| (st[i] == 'G'));
count_g++;
}
cout << "Number of instances of C = " << count_c;
cout << "Number of instances of G = " << count_g;