Вопрос Программирование с использованием строк c++

Регистрация
27 Ноя 2013
Сообщения
84
Репутация
-9
Спасибо
0
Монет
0
Задание

Дана строка символов, состоящая из произвольного

текста, слова разделены пробелами. Вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается.



Подскажите, пожалуйста...где в моем коде ошибка
278850395_b20f94ba7278e4e418c1f4f9985b5eea_240x240.jpg

278850395_f25287ee6a59fc7b70d741d50567808e_240x240.jpg

 
#include
#include

int main()
{
std::string str; //С++ строка
size_t beg = 0, end, max_len = 0, max_pos = 0, max_num = 0, number = 1;
std::getline(std::cin, str); //считывание строки
do
{
end = str.find_first_of(' ', beg); //нахождение позиции следующего пробела
if (end == std::string::npos) end = str.size(); //если пробела не найдено = позиция конца строки
if (end - beg > max_len) //если разница между пробелами больше длины макс слова
{
max_len = end - beg; //обновить длину
max_pos = beg; //обновить его индекс
max_num = number; //обновить порядковый номер
}
beg = end + 1; //сдвигаем позицию поиска за последний пробел
++number; //счетчик слов
} while (end != str.size()); //цикл идет пока не достигли конца строки
std::cout
 
Используются стандартные функции strtok(), strstr() и иже с ними
 
ёпт месиво
это не ошибка, а предупреждение.
 
Ошибка как минимум здесь s[i-1]. На первом такте цикла выйдете за пределы строки. А так задачу можно решить через один основной цикл. В нём нужно сравнивать пары соседних символов и в зависимости от их содержимого ("пробел - не пробел", "не пробел - не пробел", "пробел - пробел") либо подсчитывать буквы в слове, либо, если слово закончилось, искать максимум и запоминать позицию в отдельную переменную. Скорее всего будут частные случаи с первым и последним символом в строке.
 
Назад
Сверху