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

Дан текст, содержащий не более 10 слов, из строчных русских букв, между соседними словами – запятая, за последним словом - точка. Составить программы, в которых напечатать в алфавитном порядке: все гласные буквы, которые входят хотя бы в одно слово более двух раз.
Гласные буквы – а, е, и, о, у, ы, э, ю, я;
Задача на множества помогите по паскалю
функции не используйте. срочно нужно до завтра

Ответы

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

begin
  var sg:=['а','е','и','о','у','ы','э','ю','я'];
  var a:=ReadlnString('Вводите текст: ').ToWords(',','.');
  var r:set of char=[];
  for var i:=0 to a.Length-1 do begin
    var b:=a[i].Where(c->c in sg).GroupBy(t->t).Select(t->(t.Key,t.Count));
    foreach var t in b do
      if t[1]>2 then r+=[t[0]];
    end;
  var s:='';
  foreach var c in r do s+=c;
  s.OrderBy(t->t).Println(',')
end.

Пример
Вводите текст:  Дает,корова,молоко,а,жираф,это,длинношеее,животное.
е,о
Автор ответа: Аноним
0
Работа со множеством в паскале не блещет разнообразием и символы в нем неупорядочены. Чтобы выбрать данные из множества, его надо перебрать. Цикл foreach var c in r do и делает такой перебор.
Автор ответа: Аноним
0
Он помещает в переменную с очередной символ множества, а в теле цикла этот символ дописывается к строке
Автор ответа: Аноним
0
В результате мы получаем строку, содержащую все символы множества.
Автор ответа: Аноним
0
s.OrderBy(t->t) упорядочивает символы в порядке их следования в кодовой таблице, формируя новую строку, а расширение строки Println(',') выводит символы строки через запятую (можно через другой указываемый символ).
Автор ответа: Аноним
0
А для "Спасибо" тут есть кнопочка с сердечком. )))
Похожие вопросы
Предмет: Математика, автор: Elenakotenoc
Предмет: Математика, автор: Аноним