Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 12
1

Работа со множествами

29.08.2009, 20:32. Показов 2187. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вводится непустая строка из строчных русских букв, заканчивающаяся точкой.
Отдельные слова в ней разделены запятыми (<= 70 символов). Вывести на печать в алфавитном порядке:
Все гласные, которые входят в каждое четное слово и не входят ни в одно нечетное слово.Просьба помочь)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2009, 20:32
Ответы с готовыми решениями:

Работа с множествами
На предприятии имеется 6 цехов (переменная Ceh), которые потребляют определенный ассортимент...

Работа с множествами
Ребята не могу сообразить что не так. Задача: Даны три множества Х1, Х2, Х3, содержащие целые...

Работа со строками и множествами.
Здравствуйте.Прошу помощи в решении такой сложной задачки. Введите с клавиатуры предложение в...

Работа со множествами
Проиллюстрировать на примере некоммутативность операции разности множеств: А \ B \neq В \ А

2
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
29.08.2009, 20:38 2
Поиск уже не рулит? Ничего, что вчера вечером в этом же разделе тема такого же содержания была создана?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.08.2009, 22:43 3
Лучший ответ Сообщение было отмечено Gepardius как решение

Решение

Pascal
1
 Отдельные слова в ней разделены запятыми (<= 70 символов).
Что <=70 символов? Вся строка или слова в строке?

Добавлено через 1 час 16 минут
Написал вариант при длине строки не более 70 символов. Разберитесь с программой, продумайте тестовую строку для ввода, вводите аккуратно, иначе никогда не получите нормального результата.
Pascal
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
uses crt;
const gl=['а','е','ё','и','о','у','ы','э','ю','я'];{множество строчных русских гласных букв, как пишут старшие товарищи, их 10}
      ds=['а'..'п','р'..'ё',',','.'];{множество допустимых символов}
type mn=set of char;{тип множеств}
var s,s1:string;{вводимый текст-строка, вспомогательная строка для выделения слов}
    c:char;{символ}
    ch,nch:array[1..35] of string;{массивы четных и нечетных слов}
    mnch,mres:mn;{множество гласных из нечетных слов и результирующее из четных слов}
    mch:array[1..35] of mn;{массив множеств из гласных букв четных слов}
    i,j,nc,nn:byte;{счетчики циклов, фактические размеры массивов}
begin
clrscr;{очищаем экран}
writeln('Введите строку из русских строчных букв,');
writeln('образующую слова, разделенные запятыми. Окончание ввода точка:');
s:='';{сначала текст=пустая строка}
i:=0;
repeat
 repeat
  c:=readkey;{читаем код нажатой клавиши}
 until c in ds;{если допустимый символ}
write(c);{выводим символ с этим кодом на экран}
i:=i+1;{считаем символы}
s:=s+c;{заносим его в строку}
if i=69 then s:=s+'.';{если осталось ввести один, то его не вводим, а присваиваем точку}
until (c='.')or (i=70);{если нажали точку или уже 70 символов-конец ввода}
writeln;
s[length(s)]:=',';{для удобства заменим точку на запятую}
i:=0;nc:=0;nn:=0;{обнуляем счетчик слов и размеры массивов}
while pos(',',s)>0 do{пока в строке есть запятые}
 begin
  inc(i);{считаем их(т.е. слова)}
  s1:=copy(s,1,pos(',',s)-1);{берем слово до запятой}
  if odd(i) then{собираем массив нечетных слов}
   begin
    inc(nn);
    nch[nn]:=s1;
   end
  else {собираем массив четных слов}
   begin
    inc(nc);
    ch[nc]:=s1;
   end;
  delete(s,1,pos(',',s));{удаляем просмотренное слово с запятой}
 end;
mnch:=[];{множество гласных в нечетных пока пустое}
for i:=1 to nn do
for j:=1 to length(nch[i])do
if nch[i][j] in gl then include(mnch,nch[i][j]);{выбираем из всех нечетных слов гласные буквы}
for i:=1 to nc do{создаем массив множеств гласных букв четных слов}
 begin
  mch[i]:=[];
  for j:=1 to length(ch[i]) do
  if (ch[i][j] in gl)and not(ch[i][j] in mnch)then include(mch[i],ch[i][j]);{из каждого слова создаем множество}
 end;
mres:=gl;{результирующее множество пока включает все гласные буквы}
for i:=1 to nc do
mres:=mres*mch[i];{перемножаем(получаем пересечение всех множеств гласных букв четных слов)}
if mres=[] then{если ни одной буквы нет}
write('Гласных букв, входящих во все четные слова и не входящих в нечетные слова, нет!')
else {иначе выводим все буквы по алфавиту.}
 for i:=160 to 241 do{диапазон кодов, в который попадают нужные нам символы}
 if chr(i) in mres then write(chr(i),' ');
{если символ есть в во всех четных словах выводим ее на экран через пробел}
readln
end.
1
29.08.2009, 22:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2009, 22:43
Помогаю со студенческими работами здесь

Работа с множествами
Помогите, пожалуйста, с задачей :) Организовать ввод элементов двух числовых множеств A и B....

Блок-схема по коду (тема работа с множествами)
var s:String; var num, i, j, n, code:Integer; var numbers: set of byte; begin Write('Введите...

Работа с множествами
Работа с множествами. Помогите, пожалуйста! Даже не знаю, что делать 1) Создать одномерный...

Работа с Множествами.
Найти пересечение множеств, состоящих из делителей чисел A и B.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru