0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 2
1

Напечатать все слова, отличные от последнего слова (удалив из слов нечетной длины среднюю букву)

07.12.2018, 19:30. Показов 1762. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела, за последним словом точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
- если слово нечетной длины, то удалить его среднюю букву.

Прошу, помогите решить, очень нужно <3..
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2018, 19:30
Ответы с готовыми решениями:

Напечатать все слова, удалив среднюю букву у слов нечетной длины.
1)Текст задан строкой var St: string; Напечатать все слова, удалив среднюю букву у слов нечетной...

Исправить 3адачу: дана строка длиной n символов, Вывести все слова, отличные от последнего слова, предварительно удалив из слов нечетной длины его сре
дана строка, между словами не менее одного пробела, в конце точка. Вывести все слова, отличные от...

Напечатать все слова, отличные от последнего слова, предварительно удалив из каждого слова последнюю букву
1) Программа. Дан текстиз строчных русских букв, закоторым следует точка. Напечатать этот текст...

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

3
141 / 107 / 57
Регистрация: 15.09.2017
Сообщений: 425
07.12.2018, 21:38 2
Лучший ответ Сообщение было отмечено StivenS_YT как решение

Решение

StivenS_YT,
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function DeleteCentral(self: string): string; extensionmethod := self.Left(self.Length div 2)+self.Right(self.Length div 2);
 
function DeleteCentrals(self: array of string): array of string; extensionmethod;
begin
  self[self.Length-1]:=self[self.Length-1].Remove('.');
  var s:=self.Select(x -> x.DeleteCentral).ToArray;
  s[self.Length-1]+='.';
  Result:=s;
end;
 
begin
  var a:='раз два три четыре пять два.'.ToWords.DeleteCentrals;
  foreach var x in a do if (x<>a.Last.Remove('.')) then print(x);
end.
1
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 2
07.12.2018, 22:58  [ТС] 3
Отличный код на самом деле, но можно объяснить такие вещи как "extensionmethod" и "foreach", либо описать это кодом на
менее высоком уровне, примерно по уровню 1-го курса, дабы не сильно заморачиваться?
0
2175 / 1305 / 496
Регистрация: 07.04.2017
Сообщений: 4,562
08.12.2018, 00:43 4
Всё по порядку (по сложности*).

foreach проходит по каждому элементу любой последовательности (к примеру, массив это подвид последовательностей):
Pascal
1
2
3
4
5
begin
  var a := Arr(1,2,3,4);
  foreach var x in a do
    writeln(x);
end.
(запускайте все программы у себя, и пробуйте экспериментировать, изменять что то сами, иначе не всё поймёте)

extensionmethod значит что подпрограмма описанная с этим словом будет вызываться по точке для её первого параметра. К примеру:
Pascal
1
2
3
4
5
6
7
8
procedure SM(b: byte) := exit;
procedure EM(self: byte); extensionmethod := exit;
 
begin
  var b: byte;
  SM(b);
  b.EM();
end.
Они особенно полезный когда 1 extensionmethod вызывается для результата другого. Без них придётся делать очень много вложенных скобочек.

Ну а придумывали их изначально для инкапсуляции. То есть SM попадает в основное пространство имён, в и без того огромный список который показывает Ctrl+Space. А EM будет показываться только когда вы поставили точку после переменной типа byte.

Это, как и остальные принципы инкапсуляции, помогают избежать глупых ошибок и сделать написание кода более интуитивным.

Что ещё не понятно?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2018, 00:43
Помогаю со студенческими работами здесь

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

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

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

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru