Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 19
1

Во всех словах предложения, отличных от последнего слова, удалить все предыдущие вхождения последней буквы

28.10.2015, 11:58. Показов 864. Ответов 1
Метки нет (Все метки)

Задание.
Дана последовательность, содержащая слова, в каждом из которых от 1 до 8 строчных (маленьких) латинских букв, разделенные точкой с запятой, после последнего слова - точка.
Во всех словах предложения, отличных от последнего слова, удалить все предыдущие вхождения последней буквы. Например, исходное предложение: «fsdf;iuuy;qwerwq;yjnmkj.», результат: «sdf;iuuy;werwq;ynmkj.».

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
   static string obrabotka(string str){
            //записываем строку в массив строк без разделителей
            string[] mas = str.Split(';', '.');
            str = "";
            for (int i = 0; i < mas.Length; i++)
                //по условию длина слова от 1 до 8 символов 
                if (mas[i].Length > 1 && mas[i].Length < 8)
                {
                    //цикл по каждому символу слова за исключением последней
                    for (int k = 0; k < mas[i].Length - 1; k++)
                    {
                        //если последняя буква совпадает с найденной
                        if (mas[i][mas[i].Length - 1] == mas[i][k])
                        {
                            // удаляем найденную букву
                            mas[i] = mas[i].Remove(k, 1);
                        }
                    }
                    //после каждого проверенного слова ставим точку с запятой
                    str = str + mas[i] + ";";
                }
            //удаляем последнюю точку с запятой и добавляем в конец точку
            str = str.Remove(str.Length - 1) + '.';
            //возвращаем обработанную строку
            return str;
 
        }
нужно заменить эти
C#
1
2
     if (mas[i][mas[i].Length - 1] == mas[i][k])
    mas[i] = mas[i].Remove(k, 1);
строки одной с использованием IndexOf. Кто подскажет как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2015, 11:58
Ответы с готовыми решениями:

Удалить все предыдущие вхождения последней буквы
Как удалить из слова все предыдущие вхождения последней буквы?

Как удалить из слова все вхождения последней буквы?
Дано предложение. Напечатать все его слова, предварительно преобразовав каждое из них по следующему...

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

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

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
1
Модератор
Эксперт .NET
5721 / 4622 / 2916
Регистрация: 20.04.2015
Сообщений: 8,265
28.10.2015, 12:37 2
jeka9999,
теоретически можно так:
C#
1
mas[i] = mas[i].Remove(mas[i].IndexOf(mas[i][mas[i].Length - 1], 0, mas[i].Length - 1), 1);
практически же, если нет буквы, такой же как последняя, то IndexOf вернет -1, а -1 в качестве стартовой позиции для удаления даст исключение.
Так
C#
1
2
3
4
5
try
{
    mas[i] = mas[i].Remove(mas[i].IndexOf(mas[i][mas[i].Length - 1], 0, mas[i].Length - 1), 1);
}
catch { }
позволит избежать вылета программы.
Но я бы лучше цикл поменял на while.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2015, 12:37

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Дан текстовый файл, содержащий строки, во всех словах удалить все предыдущие вхождения последней буквы
Дан текстовый файл, содержащий строки, во всех словах удалить все предыдущие вхождения последней...

удалить из слова все предыдущие вхождения последней буквы
1. Вводится строка текста из N символов, слова разделены одним пробелом. Составьте программу,...

Удалить из слова все предыдущие вхождения последней буквы
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных...

Удалить из слова все предыдущие вхождения последней буквы
program lab6; Var s,sl,st:string; i:byte; Begin write('Posledovatelnost slov: ');readln(s); if...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.