Помогите найти ошибку в коде. Два практически одинаковых алгоритма, один работает второй нет. С++
Задача: Найти наибольшее и наименьшее слово в массиве char.
Часть с поиском самого большого слова работает, однако такая же часть, но с поиском малейшего не работает. Компилятор не выдает ошибок. Проблема в том, что почему-то слово не сохраняется в смену min_word.
#include <iostream>
#include <string>
using namespace std;
int const SIZE = 100;
int main()
{
char* str = new char[SIZE];
cin.getline(str, SIZE);
string now_word = "";
string max_word = "";
string min_word = "";
for (int i = 0; i < strlen(str); i++)
{
if (str[i] != ' ')
{
now_word += str[i];
}
else
{
now_word = "";
}
if (now_word.size() > max_word.size())
{
max_word = now_word;
}
}
min_word = max_word;
for (int i = 0; i < strlen(str); i++)
{
if (str[i] != ' ')
{
now_word += str[i];
}
else
{
now_word = "";
}
if (now_word.size() < min_word.size())
{
min_word = now_word;
}
}
cout << " The biggest word is ( " << max_word << " )\n";
cout << " The smallest word is ( " << min_word << " )\n";
return 0;
}
Ответы (1 шт):
Автор решения: Danis
→ Ссылка
Когда программа доходить до пробела то вы задаёте now_word равен пустой строке, а длина пустой строки равна нулю и в min_word находится "", и далее условие now_word.size() < min_word.size() ни разу не выполняется
Я бы сделал так:
for (int i = 0; i < strlen(str); i++)
{
if (str[i] != ' ')
{
now_word += str[i];
}
else
{
if (now_word.size() < min_word.size())
{
min_word = now_word;
}
now_word = "";
}