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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 19:43   #1
yuriy1
 
Регистрация: 20.10.2012
Сообщений: 9
По умолчанию Множества

нужно из последовательности слов выписать все звонкие согласные(это я сделал) и записать их в алфавитном порядке, буквы не должны повторятся.. помогите доработать прошу.
Код:
program Lab;
const
 zvSoglasn=[б,в,г,д,ж,з,й,л,м,н,р];
var
a,b: string;
i: integer;
g: set of char;
begin
a:='прикладная, информатика, лабораторная, работа.';
for i:= 1 to length(a) do
   begin
     if a[i] in zvSoglasn then
     b:=b+ ' ' + a[i];
   end;
   write('звонкие согласные:',b);
   writeln
end.


ps: упс, множества, а не множители =)

Последний раз редактировалось yuriy1; 23.10.2012 в 19:46.
yuriy1 вне форума Ответить с цитированием
Старый 23.10.2012, 19:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
zvSoglasn=[б,в,г,д,ж,з,й,л,м,н,р];
Каждую букву возьми в ковычки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2012, 19:57   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Не вижу инициализации b
Poma][a вне форума Ответить с цитированием
Старый 23.10.2012, 21:00   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

раз уж задача на использование типа данных "множество", так и надо использовать данный тип на полную катушку!

вот, например, так:
Код:
program Lab;
const
 zvSoglasn=['б','в','г','д','ж','з','й','л','м','н','р'];
var
a: string;
i: integer;
g: set of char;
ch : char;
begin
a:='прикладная, информатика, лабораторная, работа.';

g := []; {в начале g - пустое множество, 
             потом будет в него собирать встречающиеся 
             в строке звонкие согласные}

for i:= 1 to length(a) do
     if a[i] in zvSoglasn then
        Include(g, a[i]);

{вывод результата}
write('звонкие согласные в заданной строке : ');
for ch:=#00 to #255 do
  if ch in g then Write(ch,' ');

writeln;
Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.10.2012, 21:05   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
for ch:=#00 to #255 do
А ведь можно от 192 плясать? (тыц)
Poma][a вне форума Ответить с цитированием
Старый 23.10.2012, 21:54   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно. А лучше так:
Код:
write('звонкие согласные в заданной строке : ');
for ch:='А' to 'я' do
  if ch in g then Write(ch,' ');
Ато ввиду юникодности с кодами символов и пролететь можно
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2012, 21:58   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
const
    STR = 'бвгджзйлмнр';
..

    for i := 1 to Length (STR) do
        if STR[i] in g then 
               Write (STR[i], ' ');
А так?
Poma][a вне форума Ответить с цитированием
Старый 23.10.2012, 22:05   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тоже можно. Во еще попури:
Код:
program Lab;
const
 zvSoglasn=['б','в','г','д','ж','з','й','л','м','н','р'];
var
a: string;
i: integer;
g: array['А'..'я'] of byte;
ch : char;
begin
a:='прикладная, информатика, лабораторная, работа.';


for i:= 1 to length(a) do if a[i] in zvSoglasn then  inc(q[a[i]]);

{вывод результата}
write('звонкие согласные в заданной строке : ');
for ch:='А' to 'я' do
  if g[ch]<>0 then Write(ch,' ');

writeln;
Readln;
end.
Навыдумывать много можно решений.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2012, 22:06   #9
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Да, с кодировками можно пролететь.
Например, если используется буква Ё/ё
eoln вне форума Ответить с цитированием
Старый 23.10.2012, 22:08   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
inc(q[a[i]]);
Долго думал что ж за q?
Цитата:
Навыдумывать много можно решений.
Ага-ага
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить мощность множества, состоящего из чисел от 1 до N с мощностью множества, состоящего из отрицательных элементов вектора В MaSS93 Паскаль, Turbo Pascal, PascalABC.NET 5 24.05.2012 20:04
Через множества заданы сорта роз,выращиваемых цветоводами. Ввод множества с клавиатуры,сравнение множеств BAMbarBIO Паскаль, Turbo Pascal, PascalABC.NET 5 31.05.2011 13:17
множества любаша Помощь студентам 5 24.10.2010 18:05
Множества Rin@ Паскаль, Turbo Pascal, PascalABC.NET 13 16.06.2009 15:39
Множества Archangelos Паскаль, Turbo Pascal, PascalABC.NET 5 01.06.2009 11:26