Предмет: Информатика, автор: jakobskofedima

Дан файл, содержащий текст на русском языке. Опредилить: 1. Цифры, которые входят в текст; 2.Определить сколько раз встречается в нем самое короткое слово; 3. Выбрать буквы, которые встречаются только 1 раз в порядке их расположения. С обьясннием пж

Ответы

Автор ответа: Аноним
0
// PascalABC.NET 3.2, сборка 1485 от 15.06.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadAllText('input.txt'); s.Println; // из файла
  var Delimeters:=Arr(' ','-',',','.',')','(',':',Chr(13),Chr(10));
  s:=LowerCase(s);
  var a:=s.ToWords(Delimeters); // массив слов
  Write(Newline,'Цифры, входящие в текст: ');
  s.MatchValues('d').Distinct.OrderBy(x->x).Println;
  var k:=a.MinBy(x->x.Length).Length;
  Write('Самые короткие слова: ');
  a.Where(x->(x.Length=k))
      .GroupBy(x->x).Select(x->x.Key)
      .Where(x->Pos(x,'0123456789')=0).Println(',');
  Write('Буквы, встречающиеся ровно один раз: ');
  s.ToCharArray.Where(x->not (x in Delimeters))
      .Where(x->not (x in ['0'..'9']))
      .GroupBy(x->x).Select(x->(x.Key,x.Count))
      .OrderBy(x->x[1]).ThenBy(x->x[0])
      .Where(x->x[1]=1).Select(x->x[0]).Println;
end.

Пример
Большой Кавказ простирается более чем на 1100 км с северо-запада
на юго-восток, от района Анапы и Таманского полуострова Чёрного моря
до Апшеронского полуострова на побережье Каспия, рядом с Баку.
Максимальной ширины Большой Кавказ достигает в районе меридиана Эльбруса
(почти 180 км). В осевой части расположен Главный Кавказский
(или Водораздельный) хребет, к северу от которого простирается ряд
параллельных хребтов (горных цепей), в том числе моноклинального
(куэстового) характера). Южный склон Большого Кавказа большей
частью состоит из кулисообразных хребтов, примыкающих к Главному
Кавказскому хребту.
Традиционно Большой Кавказ делится на 3 части: Западный Кавказ
(от Чёрного моря до Эльбруса), Центральный Кавказ
(от Эльбруса до Казбека) и Восточный Кавказ (от Казбека
до Каспийского моря).

Цифры, входящие в текст: 0 1 3 8
Самые короткие слова: с,и,в,к
Буквы, встречающиеся ровно один раз: щ
Приложения:
Автор ответа: Аноним
0
Самая длинная цепочка в программе. s.ToCharArray превращает нашу строку символов в массив типа char. Элементы массива фильтруем через Where(x->not (x in Delimeters)), отсеивая раезделители, а потом через
Автор ответа: Аноним
0
.Where(x->not (x in ['0'..'9'])), отсеивая цифры. Далее группировка GroupBy(x->x).Select(x->(x.Key,x.Count)) с последующим Select позволяет создать для каждого символа кортеж вида (символ,число_повторов)
Автор ответа: Аноним
0
.OrderBy(x->x[1]).ThenBy(x->x[0]) - это сортировка по возрастанию, так чтобы сначала шли символы с минимальным числом повторов, причем при равном числе повторов, символы упорядочены по алфавиту
Автор ответа: Аноним
0
.Where(x->x[1]=1).Select(x->x[0]).Println; - отбираем только те, у которых повторов 0, т.е. они встречаются 1 раз. Вырезаем из кортежей только сами символы и выводим их.
Автор ответа: Аноним
0
Описание в разы длиннее программы. Отсюда ясно, почему устарели блок-схемы - тут вообще был бы огромный чертеж...
Похожие вопросы
Предмет: Алгебра, автор: artemtabakov152312