Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 22.02.2015
Сообщений: 67

Удалить из предложения одинаковые слова стоящие рядом

25.02.2016, 10:03. Показов 5582. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка, содержащая текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой или знаком восклицания). Получить в новой строке отредактированный текст, в котором удалены подряд идущие вхождения слов в предложениях.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2016, 10:03
Ответы с готовыми решениями:

Найти слова содержащие две рядом стоящие одинаковые буквы
Напечатать все слова, содержащие две рядом стоящие одинаковые буквы.

Удалить из слов все кратные рядом стоящие одинаковые символы
Имеется текстовый файл, содержащий текст на русском языке. Удалить из слов все кратные рядом стоящие одинаковые символы, оставив по одному:...

Найти в тексте слова, содержащие две одинаковые буквы, стоящие рядом
Имеется строка текста (на любом языке) из нескольких слов, разделённых пробелами и/или знаками препинания. Требуется найти в тексте и...

8
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
25.02.2016, 12:50
C#
1
2
3
4
5
string s;
            Console.Write("введи текст:");
            s = Console.ReadLine();
            Console.Write(String.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Distinct()));
            Console.WriteLine('\n');
0
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
25.02.2016, 13:23
AndreyVorobey, красиво, но неправильно. Удалятся все дубли, а не только подряд идущие.

Добавлено через 22 минуты
Не так красиво, но работает более корректно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var s = "Дана строка строка, содержащая текст на русском языке. Дана строка, содержащая текст на на на русском языке!";
            var temp = s.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries);
            var res = temp[0] + " ";
            for (var i = 1; i < temp.Length; i++)
                if (temp[i - 1] != temp[i].TrimEnd(',', '.', '!', ':', ';')) res += temp[i] + " ";
            res = res.TrimEnd();
            Console.WriteLine(res);
            Console.ReadLine();
        }
    }
}
0
0 / 0 / 1
Регистрация: 25.02.2016
Сообщений: 11
25.02.2016, 14:59
К сожалению и этот код не работает полностью как ожидается. Удаляется пунктуация.
0
0 / 0 / 0
Регистрация: 22.02.2015
Сообщений: 67
25.02.2016, 15:15  [ТС]
orlov87 если не сложно можете пожалуйста расписать что значит каждая строчка
0
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
25.02.2016, 15:29
Лучший ответ Сообщение было отмечено FROSYA_26 как решение

Решение

Немного поправил, но учитывая, что из условия не понятно что и как со знаками препинания, то результат все равно далек от идеала. Для такого условия думаю пойдет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var s = "Дана строка строка, содержащая текст на русском языке. Дана строка, содержащая текст на на на русском языке!"; // Задаем строку
            var temp = s.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries); // Делим ее на слова
            var res = String.Empty; // Создаем переменную для результата
            for (var i = 0; i < temp.Length - 1; i++) // Цикл по словам
                if (temp[i].TrimEnd(',', '.', '!', ':', ';') != temp[i + 1].TrimEnd(',', '.', '!', ':', ';')) // Если слово без знаков препинания не равно следующему слову без знаков препинания
                    res += temp[i] + " "; // то добавляем его и пробел к результату
            if (temp[temp.Length - 2].TrimEnd(',', '.', '!', ':', ';') !=
                temp[temp.Length - 1].TrimEnd(',', '.', '!', ':', ';')) res += temp[temp.Length - 1]; // Если последнее слово без знаков препинания не равно предпоследнему слову без знаков препинания, то добавляем последнее слово к результату
            Console.WriteLine(res); // Выводим результат на экран )))
            Console.ReadLine();
        }
    }
}
Никогда в жизни не писал таких детальных коментариев, так что извините если что не так.
0
0 / 0 / 0
Регистрация: 22.02.2015
Сообщений: 67
25.02.2016, 15:40  [ТС]
orlov87 спасибо большое очень помогли
0
Заблокирован
25.02.2016, 19:50
Цитата Сообщение от FROSYA_26 Посмотреть сообщение
orlov87 спасибо большое очень помогли
Пусть введет текст "Строка. Строка. Строка."
0
2 / 2 / 0
Регистрация: 14.10.2020
Сообщений: 136
17.11.2021, 14:22
Цитата Сообщение от orlov87 Посмотреть сообщение
Немного поправил, но учитывая, что из условия не понятно что и как со знаками препинания, то результат все равно далек от идеала. Для такого условия думаю пойдет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var s = "Дана строка строка, содержащая текст на русском языке. Дана строка, содержащая текст на на на русском языке!"; // Задаем строку
            var temp = s.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries); // Делим ее на слова
            var res = String.Empty; // Создаем переменную для результата
            for (var i = 0; i < temp.Length - 1; i++) // Цикл по словам
                if (temp[i].TrimEnd(',', '.', '!', ':', ';') != temp[i + 1].TrimEnd(',', '.', '!', ':', ';')) // Если слово без знаков препинания не равно следующему слову без знаков препинания
                    res += temp[i] + " "; // то добавляем его и пробел к результату
            if (temp[temp.Length - 2].TrimEnd(',', '.', '!', ':', ';') !=
                temp[temp.Length - 1].TrimEnd(',', '.', '!', ':', ';')) res += temp[temp.Length - 1]; // Если последнее слово без знаков препинания не равно предпоследнему слову без знаков препинания, то добавляем последнее слово к результату
            Console.WriteLine(res); // Выводим результат на экран )))
            Console.ReadLine();
        }
    }
}
Никогда в жизни не писал таких детальных коментариев, так что извините если что не так.
Здравствуйте, можно вместо string, сделать StringBuilder?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2021, 14:22
Помогаю со студенческими работами здесь

Удалить из слова повторяющиеся 4 раза буквы, стоящие рядом
удалить из слова повторяющиеся 4 раза буквы, стоящие рядом с++

Вывести на экран все слова, состоящие из K букв, в которых есть по крайней мере две одинаковые буквы, стоящие рядом
Напишите пожалуйста программу В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О». Нужно вывести на экран все...

Удалить одинаковые слова предложения, идущие подряд
Удалить одинаковые слова предложения, идущие подряд. с коментариями пожалуйста

Удалить одинаковые слова предложения, идущие подряд
Объясните как это сделать с помощью библиотеки &lt;string.h&gt; Удалить одинаковые слова предложения, идущие подряд.

Удалить одинаковые слова предложения, идущие подряд
Здравствуйте! Задание такое: удалить одинаковые слова предложения, идущие подряд. Набросал код, но после его выполнения одно слово, из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru