#c
Вопрос:
...
v.push_back(s);
}
for (int i =0; i < v.size(); i)
{
int a_pos = -1;
a_pos = v[i].find('a');
if (a_pos != -1)
v[i][a_pos] = '@';
}
cout<< v.size() << " ";
Отредактировано, чтобы удалить весь мой предыдущий код целиком, так как только эта часть была/нужна для ответа на мой вопрос. Остальная часть кода решила проблему, в то время как эта часть «посчитала» соответствующий символ.
Комментарии:
1. Добро пожаловать! Я бы посоветовал вам обратиться к стандартным библиотечным алгоритмам.
2. Вам нужно подсчитать количество слов с заменой а ?
3. Да, я знаю, что мой размер v должен быть заменен, но я не могу понять, с чем, я пробовал другие входные данные из кода и даже другие операторы if, чтобы попытаться пройти, но безрезультатно
Ответ №1:
Если вам нужно, чтобы он выводил количество замен, то самый прямой способ-просто ввести специальную counter
переменную и увеличивать ее при каждой замене:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> v;
string s;
int numOfStrings;
cin>>numOfStrings;
unsigned counter = 0; // Our counter
for (int i =0; i < numOfStrings; i) {
cin>>s;
v.push_back(s);
}
for (int i =0; i < v.size(); i) {
int a_pos = -1;
a_pos = v[i].find('a');
if (a_pos != -1) {
v[i][a_pos] = '@';
counter; // Done a replacement, increment the counter
}
}
cout << "Counter: " << counter << endl; // Print the count of replacements
for (auto elem : v) { // Print all the elements in our vector of strings
cout<< elem <<" ";}
Пример:
Input:
2 bar foo
Output:
Counter: 1
b@r foo
Комментарии:
1. Большое вам спасибо! Я попытался сделать это таким образом, используя count , но не смог заставить его работать
2. @user16101600 тогда я надеюсь, что вам будет полезно рассмотреть, чем отличается ваша
counter
версия от этой. Не забудьте принять ответ, если это то, что вы искали.