Stack Overflow на русском Asked by mirrormirrormirror on January 31, 2021
#include <iostream>
#include <string>
using namespace std;
class String
{
public:
char str[20];
int n = strlen(str);
int count = 1;
int max = 0;
int def() {
cout << "Строка: ";
cout << str << endl;
for (int i = 0; i < n; i++) {
if (str[i] == str[i + 1]) {
count++;
}
else { count = 1; }
if (count > max) {
max = count;
}
}
cout << "Результат: ";
cout << max;
return 0;
}
};
int main() {
setlocale(LC_ALL, "russian");
String execute{"1111111111110000000"};
execute.def();
return 0;
}
Как задать ввод строки с клавиатуры в функции main()?
А относительно моего кода: как мне сделать так, чтобы я мог вводить значение в кавычках с клавиатуры? String execute{"1111111111110000000"}; – mirrormirrormirror
#include <iostream>
#include <string>
using namespace std;
class String
{
public:
// char str[20];
// лучше всё таки хранить строку в std::string раз пишете на с++
std::string str;
// ОШИБКА 1: строка была не инициализирована, в ней ничего нет, как же тогда можно узнавать ее размер?
// int n = strlen(str);
// ОШИБКА 2: есть создания класса с конструктором (в теле main), но нет самого конструктора в теле класса - его надо создать
// чтобы строка не копировалась 2 раза в конструктор ее передаём по ссылке - символ &
String(const std::string& in) {
str = in;
}
// если это не члены класса, то им не место в теле класса
// int count = 1;
// int max = 0;
int def() {
// переменные которые используются в теле метода класса лучше из тела класса перенести в этот метод
int count = 1;
int max = 0;
// вычисляем длину строки
const int n = str.size();
cout << "Строка: ";
cout << str << endl;
for (int i = 0; i < n; i++) {
// ОШИБКА 3: вы сравниваете текущий и последующий символы в строке, но цикл у вас до последнего, т.е. вы сравниваете с символом после последнего в строке - нехорошо
// такой код конечно будет работать, потому что любая строка заканчивается 0, но лучше было бы сделать так: сравнивать с предыдущим символом и начинать с 1 символа, а не с 0
// for (int 1 = 0; i < n; i++) {
// if (str[i] == str[i - 1]) {
if (str[i] == str[i + 1]) {
count++;
}
else { count = 1; }
if (count > max) {
max = count;
}
}
cout << "Результат: ";
cout << max;
// зачем нужен метод возвращающий значение, если он всегда возвращает одно и тоже?
return 0;
}
};
int main() {
setlocale(LC_ALL, "russian");
// получаем строку с клавиатуры
std::string name;
std::getline(std::cin, name);
// работаем со строкой
String execute{"1111111111110000000"};
execute.def();
return 0;
}
Answered by Zhihar on January 31, 2021
https://en.cppreference.com/w/cpp/string/basic_string/getline
std::cout << "What is your name? ";
std::string name;
std::getline(std::cin, name);
Answered by Zhihar on January 31, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP