
Паскаль.Строки
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Мне нужно написать программу на Паскале!Задание:Дана непустая последовательность слов из строчных букв;между соседними словами запятая,за последним словом точка.Напечатать в алфавитном порядке все звонкие согласные звуки,которые входят более чем в 1 слово.Задачу оформить с применением множеств и без применения множеств.С применением множеств я сделала,а вот без их применения никак не получается.Может подскажете хотя бы? 

- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
без применения множеств, это с массивом символов?

Игорь Акопян писал(а):без применения множеств, это с массивом символов?
Я тоже так думаю,но никак не получается

Игорь Акопян писал(а):без применения множеств, это с массивом символов?
А вот так у меня получилось с применением множеств(работает):
[syntax='Pascal']uses crt;
var
s:string;
a,m:set of char;
l,p:integer;
c:char;
procedure vvod;
var
i:integer;
begin
writeln('Введите строку:');
i:=0;
repeat
i:=i+1;
read(s);
until s='.'
end;
begin
clrscr;
vvod;
a:=['b','v','g','d','z','l','m','n','r'];
for c:='b' to 'z' do
begin
l:=0;
p:=0;
m:=[];
repeat
l:=l+1;
if s[l]=',' then m:=[]
else;
if (s[l]=c)and(s[l]in a)and not(s[l]in m)then
begin
m:=m+[s[l]];
p:=p+1
end
else;
until (s[l]='.')or(p>1);
if p>1 then write(c,' ')
else
end;
readkey
end.[/syntax]
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
что-то мне кажется там не всё верно...
1. Слова разделяются пробелами и знаками препинания - множество симовлов-разделителей.
2. Идём по тексту, проверяя каждый символ на принадлежность к множеству звонких и не принадлежность к разделителям.
3. Если символ - разделитель - увеличиваем счётчик слов.
4. Если количество вхождений больше 1 запоминаем символ и идём дальше
Для массива придётся делать не проверку на вхождение в множество, а внутренний цикл по массиву согласных
ЗЫ. По коду - если ветка else пустая, то её лучше вообще не писать чтобы не сбивало
1. Слова разделяются пробелами и знаками препинания - множество симовлов-разделителей.
2. Идём по тексту, проверяя каждый символ на принадлежность к множеству звонких и не принадлежность к разделителям.
3. Если символ - разделитель - увеличиваем счётчик слов.
4. Если количество вхождений больше 1 запоминаем символ и идём дальше
Для массива придётся делать не проверку на вхождение в множество, а внутренний цикл по массиву согласных
ЗЫ. По коду - если ветка else пустая, то её лучше вообще не писать чтобы не сбивало
