Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 12:28   #1
RegI
 
Регистрация: 27.05.2009
Сообщений: 8
По умолчанию Задача на множества

Здравствуйте, помогите решить на Паскаль. В множествах не понимаю ничего.

Дана непустая последовательность слов из строчных латинских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово; все согласные буквы, которые не входят ни в одно слово.

(использовать динамический массив нельзя)
RegI вне форума Ответить с цитированием
Старый 27.05.2009, 12:37   #2
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Что подразумевается под словом "множетсво"? не динамический массив? Список?
RusArtm вне форума Ответить с цитированием
Старый 27.05.2009, 12:42   #3
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Эта задача много раз решалась..
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 27.05.2009, 12:58   #4
RegI
 
Регистрация: 27.05.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от RusArtm Посмотреть сообщение
Что подразумевается под словом "множетсво"? не динамический массив? Список?
Множество это тип данных в Паскале. Соответствует математическому представлению о множествах.
RegI вне форума Ответить с цитированием
Старый 27.05.2009, 12:59   #5
RegI
 
Регистрация: 27.05.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
Эта задача много раз решалась..
А ссылку, где она решалась можно? В поиске по форумам я не нашла такую задачу.
RegI вне форума Ответить с цитированием
Старый 27.05.2009, 13:04   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Мне что ли искать? Если хотите, могу алгоритм подсказать...
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 27.05.2009, 13:11   #7
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от RegI Посмотреть сообщение
Множество это тип данных в Паскале. Соответствует математическому представлению о множествах.
Хорошо... тогда как данапоследовательность? И при чем тут множества?
Ну есть такой вид данных, а что им можно задать в данной задачи???

Короче, при чем тут множесьтва?

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

А множества как сюда запихнуть?
Может дашь пример множества? может мы о разном говорим всетаки?
RusArtm вне форума Ответить с цитированием
Старый 27.05.2009, 13:19   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Если особо не париться над алгоритмом, то как-то так

Код:
procedure separate(var tmp,s:string);
begin
	tmp := copy(s,1,pos(',',s));
	if (tmp = '') then
		tmp := s;
	delete(s,1,pos(',',s));
end;

procedure find_same(s:string);
var
	i,j:integer;
	k:char;
	tmp:string;
	a,b,c:set of char;
begin
	a := ['e','y','u','i','o','a']; b := []; c := [];
	for i:=1 to length(s) do begin
		separate(tmp,s);
		for j:=1 to length(tmp) do begin
			if (tmp[j] in a) then begin
				if (i = 1) then b := b+[tmp[j]];
				c := c+[tmp[j]];
			end;
		end;
		b := b*c;
		c := [];
	end;
	
	for k:='a' to 'z' do
		if (k in b) then write(k:2);
end;

procedure find_other(s:string);
var
	i,j:integer;
	k:char;
	tmp:string;
	a:set of char;
begin
	a := ['q','w','r','t','p','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'];
	for i:=1 to length(s) do begin
		separate(tmp,s);
		for j:=1 to length(tmp) do 
			if (tmp[j] in a) then a := a-[tmp[j]];
	end;
			
	for k:='a' to 'z' do
		if (k in a) then write(k:2);	
end;

var
	s:string;
begin

	readln(s);
	find_same(s);
	writeln;
	find_other(s);
end.
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 27.05.2009, 13:19   #9
RegI
 
Регистрация: 27.05.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
Мне что ли искать? Если хотите, могу алгоритм подсказать...
Если не трудно алгоритму тоже буду рада...
RegI вне форума Ответить с цитированием
Старый 27.05.2009, 13:19   #10
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

См. выше...
Суть в том, что мы разделяем строку на слова... Затем все гласные из первого заносим в массив b (я сейчас про процедуру find_same).. все гласные каждого следущего слова заносим в массив c, а потом находим пересечение b и c... в конце в b будут все гласные, которые встречаются в каждом слове... по-моему, в этом задании это ед. что могло вызвать сложность..
Uguu~

Последний раз редактировалось __STDC__; 27.05.2009 в 13:21.
__STDC__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Множества! prosport91 Помощь студентам 11 22.05.2009 23:39
Задача на множества ApXoH Паскаль, Turbo Pascal, PascalABC.NET 3 11.05.2009 17:47
Задача на множества Eisebio Помощь студентам 2 26.03.2009 10:49
Задача на множества innaa639 Помощь студентам 2 09.02.2009 10:32
Задача на множества Mastak Паскаль, Turbo Pascal, PascalABC.NET 2 11.12.2007 18:04