Предмет: Информатика,
автор: 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.
Пример
Вводите текст: Дает,корова,молоко,а,жираф,это,длинношеее,животное.
е,о
// Внимание! Если программа не работает, обновите версию!
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
А для "Спасибо" тут есть кнопочка с сердечком. )))
Похожие вопросы
Предмет: Русский язык,
автор: borukgrru
Предмет: Русский язык,
автор: Аноним
Предмет: Математика,
автор: yunusovagulmira51
Предмет: Математика,
автор: Elenakotenoc
Предмет: Математика,
автор: Аноним