• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача на множества Pascal ABC

  • Автор темы Автор темы Tenken
  • Дата начала Дата начала

Tenken

Banned
Регистрация
18 Ноя 2012
Сообщения
11
Реакции
0
Баллы
0
Задача на множества Pascal ABC

Всем доброго времени суток, необходима помощь в решении задачи на множества Паскаль ABC, постановка задачи:
Дано 3 предложения. В словах, начинающихся на гласную букву удалить вторую согласную. Слова в предложении разделены пробелом.(по типу слово "аналог", а должно получиться "анаог").
 
Код:
program faile1;
type
bukva = set of char;
var
glas:bukva;
soglas:bukva;
S1,S2,S3: String;
// функция преобразования строки
function fun(S:string): string;
var
temp:string; // формирование новой строки
n:  integer; // счетчик для новой строки
ud: integer; // количество признаки для пропуска буквы
i:  integer;
begin
temp:=''; // начальное значение
// первый символ строки
if S[1] in glas then begin ud:=1; end
else begin ud:=0;end;
n:=1;
temp[0]:=S[0];
for i:=1 to length(S) do // проход по строке
begin
// первое условие начало слова
if ((S[i-1]=' ')and(S[i] in glas)) then  begin ud:=1;end; // начало слова
if ((ud=1) and (S[i] in soglas)) then begin ud:=2; end //первая согласная
else if ((ud=2) and (S[i] in soglas)) then // вторая согласная
     begin ud:=0;
     continue; // перескок через вторую гласную в слове
      end;
if S[i]=' ' then ud:=0; // конец слова
temp[n]:=S[i]; // заполнение строки
inc(n);
end;
fun:=temp;
end;
begin
// множество гласных букв
glas:=['й','Й','У','у','е','Е','ы','а','Ы','А','я','Я','э','Э','О','о','и','ь','ю','ъ','И','Ь','Ю','Ъ','ё','Ё'];
// множество согласных букв
soglas:=['ц','т','б','Б','Т','М','м','Ч','С','с','ч','Ж','ж','Ц','Д','к','н','д','К','Н','г','Г','ш','Ш','Л','щ','Щ','з','З','х','Х','ф','в','Ф','В','п','П','р','л','Р'];
writeln('Введите первую строку');
readln(S1);
writeln('Введите вторую строку');
readln(S2);
writeln('Введите третью строку');
readln(S3);

writeln('Ответ ');
write('1)');
writeln(fun(S1));
write('2)');
writeln(fun(S2));
write('3)');
writeln(fun(S3));
end.
 
Назад
Сверху