Упражнение, в котором меня просят создать переменную типа string с именем text, символьную переменную с именем lletra и целочисленную переменную с именем Quantitat.
Затем, захватите строку из входного канала и сохраните ее в текстовой переменной, а также захватите символ и сохраните его в переменной lletra.
Затем, используйте функцию countAppearances, чтобы сохранить переменную количественного определения, сколько раз буква появляется в тексте. После получения на экран выводится сообщение «Письмо» + «Илетра +», появляется «+ количество +», «раз в тексте» + текст.
Это дает мне ошибку, особенно в переменной num, и я не знаю, решил ли я упражнение с помощью for и хорошо ли объявлена функция.
#include <iostream>
#include <string>
using namespace std;
int countApperances(string s, char c);
int countApperances(string s, char c)
{
for(int i; i < s.length(); s += 1){
int num = 0;
if(s[i] == c){
num += 1;
}
i+= 1;
}
return num;
}
int main(){
string text;
char lletra;
int quantitat;
cin >> text >> lletra;
quantitat = countApperances(text, lletra);
cout << "Letter " << lletra << " appears " << quantitat << " times in the next " << text;
return 0;
}
Чтобы считать количество элементов E в контейнере C, ты можешь использовать ее funciГіn std::count
из заголовка <algorithm>
:
// Cuenta la cantidad de E dentro de C
auto cantidad_e = std::count(C.begin(), C.end(), E);
AsГ - что ты cГіdigo podrГ, - чтобы быть похожим в:
int main() {
std::string text;
char lletra;
std::getline(std::cin, text);
std::cin >> lletra;
int quantitat = std::count(text.begin(), text.end(), lletra);
std::cout << "Letter '" << lletra
<< "' appears " << quantitat
<< " times in the text \"" << text << "\"\n";
return 0;
}
ты Можешь видеть это функционируя в онлайн Try it! .
, Если то, что ты хочешь, состоит в том, чтобы осуществлять ее funciГіn countApperances
, у тебя есть очень тяжелые ошибки в тебе implementaciГіn:
int countApperances(string s, char c)
{
for(int i; i < s.length(); s += 1){
int num = 0;
if(s[i] == c){
num += 1;
}
i+= 1;
}
return num;
}
Переменная num
sГіlo существует внутри цикла for
(переменная, которая появлялась бы между ключами {
и }
sГіlo, существует внутри этих ключей):
int countApperances(string s, char c)
{
for(int i; i < s.length(); s += 1){
int num = 0; // <--- 'num' empieza a existir aquí
if(s[i] == c){
num += 1;
}
i+= 1;
} // <--- 'num' deja de existir aquí.
return num; // <--- ¿Qué es 'num'? ¡eso no existe!
}
советовал Тебе следующее:
for
из ранга. Продолжая эти советы, ты funciГіn countApperances
podrГ, - чтобы быть похожим в:
int countApperances(const std::string &s, char c)
{
int num = 0;
for (auto letra : s) {
num += (letra == c);
}
return num;
}
for
ранга состоит mГЎs коротко и fГЎcil в том, чтобы писать / читать, опись букв использует прием C ++: одна comparaciГіn booleana (как подтверждение, равны ли два данных) дает как результат true
или false
, стоимость booleano может быть обращенной implГ-citamente в целое число, это 0
стоимость false
и 1
стоимость true
asГ - что она expresiГіn:
num += (letra == c);
SumarГЎ 1
, когда letra
будет c
и sumarГЎ 0
в противоположном случае. Ты можешь видеть cГіdigo функционируя в онлайн Try it! .
несколько вещей. Ты не инициализировал i внутри for. помести ему int i = 0; Потом твой изменчивый номер она объявлена внутри for поэтому, когда ты возвращаешь ее, ты не можешь. Достань твой изменчивый номер перед for и там, если оно функционирует. Кроме того ты увеличиваешь string в. Это вызовет, что я остался в loop. Из-за которого ты это увеличиваешь в каждый перемещенная. Ты должен меняться - s + = 1 из-за i ++. Твой аккуратный код остался бы таким:
#include <iostream>
#include <string>
using namespace std;
int countApperances(string s, char c);
int countApperances(string s, char c) {
int apariciones = 0;
for (int i=0; i < s.length(); i ++) {
if (s[i] == c)
apariciones++;
}
return apariciones;
}
int main() {
string text;
char lletra;
int quantitat;
cin >> text >> lletra;
quantitat = countApperances(text, lletra);
cout << "Letter " << lletra << " appears " << quantitat << " times in the text " << text;
return 0;
}
Надеялся, что он подал тебя.
типов Привета объятие.