Обработка символов

135
28 ноября 2019, 13:30

Написал программу для нахождения в строке( массиве символов ) слова наименьшей длины, и замены этого слова на символ '*'. Программа работает, но при вводе теста типа:"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");
}
READ ALSO
QThreadPool pure virtual method called

QThreadPool pure virtual method called

В конструкторе окна создаю объект Runnable:

127
Как узнать, имеет ли класс определенного родителя?

Как узнать, имеет ли класс определенного родителя?

Как узнать, имеет ли класс определенного родителя?

100
Как запретить пользователю вводить в QLineEdit что-либо кроме URL?

Как запретить пользователю вводить в QLineEdit что-либо кроме URL?

Как запретить пользователю вводить в QLineEdit что-либо кроме URL?

126
Обход сцен графа

Обход сцен графа

Здравствуйте у меня есть SceneGraph состоящий из Node:

112