Написал программу для нахождения в строке( массиве символов ) слова наименьшей длины, и замены этого слова на символ '*'. Программа работает, но при вводе теста типа:"hello hi" заменяет первое слово, хотя должна второе. Помогите пожалуйста найти ошибку в алгоритме.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
char str[255];
int sum = 0;
int y = 255;
int x = 0;
int i = 0;
int count = 0;
int len;
cin.getline(str, 255);
while (str[i] != '\0')
{
if (str[i] != ' ' && isalpha(str[i]) && str[i] != '.' && str[i] != '!')
{
sum++;
i++;
}
else
{
if (sum < y)
{
y = sum;
x = i;
len = x - sum;
}
sum = 0;
i++;
}
}
for (int i = len; i < x; i++)
{
str[i] = '*';
}
int z = strlen(str);
for (int i = 0; i < z; i++)
{
cout << str[i];
}
system("pause");
}
Как узнать, имеет ли класс определенного родителя?
Как запретить пользователю вводить в QLineEdit что-либо кроме URL?