Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2019, 15:36   #1
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию Написать функцию, которая принимает на вход строку и возвращает количество слов в нем

Мне нужно написать функцию, которая принимает на вход строку и возвращает количество слов в нем. Не используя стандартную функцию Split.Но мой код не правильно работает. Тоесть не все случаи захватывает
Код:
 static int CountWords(string str)
        {
            int count = 0;
            for (int index = 0; index < str.Length; ++index)
            {
                if (str[index] == ' ')
                    ++count;
            }
            return count + 1;
        }
dimaSlon вне форума Ответить с цитированием
Старый 12.01.2019, 16:37   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так подумайте какие случаи бывают, в каких состояниях вы можете быть во время прохода строки (конечный автомат).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.01.2019, 21:22   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Пробелов может быть больше одного подряд и кроме него еще много разных знаков делят слова (табуляция, запятая, точка,...).
итого нужно дополнительно хранить флаг: предыдущий символ был частью слова или разделителем. Дальше проверку переписать на сравнение с несколькими разделителями. Например, можно завести множество символов и записать туда все разделители. Если очередной символ есть в этом множестве, значит это разделитель слова. Если предыдущий символ был частью слова, то увеличиваем счётчик, иначе ничего не делаем.
pu4koff вне форума Ответить с цитированием
Старый 30.06.2019, 17:02   #4
GooDiesel
Новичок
Джуниор
 
Регистрация: 30.06.2019
Сообщений: 2
По умолчанию

Цитата:
Сообщение от dimaSlon Посмотреть сообщение
Мне нужно написать функцию, которая принимает на вход строку и возвращает количество слов в нем. Не используя стандартную функцию Split.Но мой код не правильно работает. Тоесть не все случаи захватывает
Детерминируйте все случаи.
Далее, перед началом обработки строки сделайте
Код:
PrepareString(str)
Внутри функции нормализуйте строку, заменив табуляции, двойные пробелы, знаки препинания и символы не входящие в цифробуквенный алфавит, пробелами.

А после - сделайте split строки да и все.
GooDiesel вне форума Ответить с цитированием
Старый 21.10.2019, 12:51   #5
GonzA
Пользователь
 
Регистрация: 11.08.2008
Сообщений: 19
По умолчанию

Если пробелов больше чем один используйте метод Trim()
GonzA вне форума Ответить с цитированием
Старый 21.10.2019, 13:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от GonzA Посмотреть сообщение
Если пробелов больше чем один используйте метод Trim()
к чему это здесь?!
Вы первый пост читали? Задание поняли?

во-первых, Trim() никак не поможет, если ВНУТРИ строки пробелов более одного подряд.
во-вторых, правильные вопросы к коду были в пост #3
в-третьих, теме много месяцев.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функцию, которая принимает список в качестве аргумента и возвращает строку, в которой все элементы списка разделены запятой и пробелом, а перед последним элементом вставлено слово likeaballoon Помощь студентам 2 02.11.2017 11:11
1.Описать функцию, которая возвращает количество слов, в которых содержится хотя бы одна заданная буква. sasharom97 Паскаль, Turbo Pascal, PascalABC.NET 2 07.12.2015 10:01
написать функцию которая подает на вход строку vova_makr Помощь студентам 3 25.09.2015 18:12
Функция, которая на вход принимает строку и в качестве результата возвращает ее копию sswt Помощь студентам 23 24.09.2015 08:09
Функцию, которая принимает в качестве параметра строку и символ и вычисляет количество таких символов в строке (Delphi) Loqwer78rus Помощь студентам 10 06.05.2014 10:52