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

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

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

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

Паскаль. Строки. Помогите оптимизировать программу

ww01031977

Новые
Регистрация
22 Янв 2008
Сообщения
553
Реакции
2
Баллы
0
Паскаль. Строки. Помогите оптимизировать программу

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

program del_gol_symb;
var r,r1:string;
i:integer;
begin
writeln('vvedite tekst');
readln(r);
for i:=1 to 6 do
begin
case i of
1:r1:='a';
2:r1:='o';
3:r1:='u';
4:r1:='e';
5:r1:='i';
6:r1:='y';
end;
while pos(r1,r)>0 do
begin
delete(r,pos(r1,r),length(r1));
end;
end;
writeln(r);
end.
 
Можно и покороче. Если в первой задаче использовать тип множество (Set). А что до второй, то это просто решается применением одного оператора Delete (удалить подстроку длиной 10 позиций, начиная с первой.
 
извините, не правильно написал, нужно Удалить из строки первые 10 символов алфавита.
 
Удалить из строки все гласные символы.вот что получилось. Символы для удаления не те, но прошу подсказать как лучше.
Не понял - почему, собственно, "не те"? По-моему, самые "те". А лучше, мне кажется, так:
Код:
const
 gl=['a','o','u','e','i','y','A','O','U','E','I','Y'];
var
 r:string;
 i:integer;
begin
 writeln('vvedite tekst');
 readln(r);
 for i:=1 to Length(r) do
  begin
   if r[i] in gl then
    begin
     delete(r,i,1);
     dec(i);
    end;
  end;
 writeln(r);
 readln
end.

Вторую задачу - да, можно и тем же методом. Тут так:
Код:
const
 first10=['a'..'j']+['A'..'J'];
var
 r:string;
 i:integer;
begin
 writeln('vvedite tekst');
 readln(r);
 for i:=1 to Length(r) do
  begin
   if r[i] in first10 then
    begin
     delete(r,i,1);
     dec(i);
    end;
  end;
 writeln(r);
 readln
end.
 
и еще есть програма кейрус.ком с помощью которой я могу печатать кирилицей. а как напечатать без кейрус.ком.
Знаете - так трудно помогать, когда приходится разгадывать ребусы и, продираясь сквозь сверхлаконичные запросы, докапываться до того, "а что имел в виду спрашивающий?". Как я понял, Вас интересует русификация в режиме эмуляции DOS? Так? Тогда объясните, чем Keyrus не устраивает, потому что есть и другие аналогичные программы. Я, например, пользуюсь Cyrillic. Или Вам хочется вообще без дополнительных программ? Боюсь, не выйдет.
 
Спасибо большое за помощь.
 
Назад
Сверху