0

たとえば、"TJ"inの発生をどのようにカウントしOAEKOTJEOTJますか?

if (s[i] == 'TJ') and (s[i] == 'T'+'J')
    x += 1;

最初のものは私にエラーを与え、2番目のものはカウントされません。私はこれに対する初心者の解決策が必要です、私はまだc++コマンドについてあまり学びませんでした。ありがとう

int x = 0
string s;
cin >> s;
for (int i = 0; i < 100; i++)
if (s[i] == T || s[i] == t) && (s[i+1] == J || s[i+1] == j)
x += 1
cout << x << endl;

これは私のコードからの抜粋です。tj、tJ、Tj、TJはカウントされません。

4

3 に答える 3

2

使用してみてください:

if(s[i] == 'T' && s[i+1] == 'J') // and make sure you do not run out of bounds of string with index i.
x += 1;

編集:あなたのコードに基づいて:

int x = 0
string s;
cin >> s;
for (int i = 0; i < 100; i++)
if (s[i] == T || s[i] == t) && (s[i+1] == J || s[i+1] == j)
x += 1
cout << x << endl;

次のように行う必要があります。

int x = 0
string s;
cin >> s;
for (int i = 0; i < s.length()-1; i++) // use size of string s.length()-1 to iterate the string instead of 100
     if (s[i] == 'T' || s[i] == 't') && (s[i+1] == 'J' || s[i+1] == 'j') // compare the ascii values of characters like - 'T' 'J' etc.
         x += 1
cout << x << endl;
于 2012-11-29T01:48:08.340 に答える
1

std::stringfind複数文字の部分文字列を含む部分文字列を文字列で検索する関数を提供します(以下では、C ++ 11構文を使用しています)。

#include <iostream>
#include <string>

int main()
{
  using namespace std;
  string text { "OAEKOTJEOTJ" };
  unsigned int occ { 0 };
  size_t       pos { 0 };
  for (;;) {
    pos = text.find("TJ",pos);      // Search for the substring, start at pos
    if (pos == string::npos)        // Quit if nothing found
      break;
    ++pos;                          // Continue from next position
    ++occ;                          // Count the occurrence
  }
  std::cout << "Found " << occ << " occurrences." << std::endl;
}

上記の方法では、各試合の後に1文字ずつ進みます。重複する一致を処理するかどうか/どのように処理するかによってposは、検索パターンの長さだけ進めたい場合があります。(クリスのコメントも参照してください。)

于 2012-11-29T01:58:03.613 に答える
0

これを試して:

#include <locale> // for tolower() function

string tolower(string s) {
  tolower(s[0]);
  tolower(s[1]);
  return s;
}
...
int main() {
  string s;
  cin >> s;
  int n = s.size(),cont = 0;
  for(int i = 0; i < n ; ++i) {
    if(tolower(s.substr(i,2)) == "tj") {
      ++cont;
    }
  }
  cout << cont << endl;
  return 0;
}
于 2012-11-29T02:15:31.220 に答える