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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 09:19   #1
<zeroql>
 
Регистрация: 20.11.2008
Сообщений: 5
Печаль Удаление гласных, согласных, цифровых символов в строке

Знающие люди, очень прошу вашей помощи к данной задаче:
Написать следующие функции обработки строк:
а) Удаление гласных символов в строке
б) Удаление согласных символов в строке
в) Удаление цифровых символов в строке
(Строка вводится с клавиатуры)
Заранее спасибо !
<zeroql> вне форума Ответить с цитированием
Старый 20.11.2008, 09:54   #2
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Удаление буквы "а", возможно и пригодться программа:
Код:
Program Laba5;
{$APPTYPE CONSOLE}
uses SysUtils;
var st:string;

begin
Writeln('VVedite Stroku:');
readln(st);


While Pos('a', st) <> 0 do delete (st, Pos('a', st),1);
writeln (st);
readln;
end.
Lemo вне форума Ответить с цитированием
Старый 20.11.2008, 10:02   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
uses crt;
type
sign=set of char;
var s,s1:string;
    ch:char;
    letter,glasn,sogl,dig:sign;

procedure Cut;
var i,sh:integer;
begin
sh:=0;
for i:=1 to length(s1) do
 begin
  ch:=s[i];
  if ch in letter then begin
                        delete(s1,i-sh,1);
                        inc(sh);
                       end;
 end;
 writeln(s1);
 writeln('Press Enter');
 readln;
end;


begin
letter:= ['a'..'z'];
glasn:= ['a', 'e', 'o', 'u', 'i', 'y'];
sogl:=letter-glasn;
dig:=['0'..'9'];
clrscr;
writeln('Input STRING');
readln(s);
repeat
clrscr;
writeln(s);
s1:=s;
writeln('Del glasn -1');
writeln('Del soglasn-2');
writeln('Del dig-3');
writeln('Exit -n');
ch:=readkey;
case ch of
'1':begin
     letter:=glasn;
     cut;
    end;
'2':begin
     letter:=sogl;
     cut;
    end;
'3':begin
     letter:=dig;
     cut;
    end;
 end;
until ch='n';
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 20.11.2008 в 10:09.
alex_fcsm вне форума Ответить с цитированием
Старый 20.11.2008, 10:04   #4
<zeroql>
 
Регистрация: 20.11.2008
Сообщений: 5
По умолчанию

Спасибо большое !
<zeroql> вне форума Ответить с цитированием
Старый 26.11.2008, 11:58   #5
<zeroql>
 
Регистрация: 20.11.2008
Сообщений: 5
Печаль

Извините, но возникла проблема, мне нужно написать не через процедуру, а конкретно написать три функции удаления, если можете напишите пожалуйста.
<zeroql> вне форума Ответить с цитированием
Старый 26.11.2008, 12:02   #6
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

а вместо даленных символов- пробелы? или же надо сдвигать: слог сл_г или слг?
Викдон вне форума Ответить с цитированием
Старый 26.11.2008, 12:07   #7
<zeroql>
 
Регистрация: 20.11.2008
Сообщений: 5
По умолчанию

Ну я понял что нужно удалить все, например вводим строку
fjlkew[kfe после проведения функций нам должна быть выведена строка с символом [
<zeroql> вне форума Ответить с цитированием
Старый 26.11.2008, 22:14   #8
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

Код:
Type Mnojestvo=set of char;
var str:string;
    Vse,G,S:Mnojestvo;
    c,d:string;
{============================================================================}
Function udalenie_Gl(stroka:string; Glas:Mnojestvo):string;
 var i:integer;
 begin
  for i:=1 to length(stroka) do
   if stroka[i] in Glas then
    begin
     delete(stroka,i,1);
     dec(i);
    end;
  udalenie_GL:=stroka;

 end;

{============================================================================}

 Function udalenie_Sg(stroka:string; SoGlas:Mnojestvo):string;
 var i:integer;
 begin
  for i:=1 to length(stroka) do
   if stroka[i] in SoGlas then
    begin
     delete(stroka,i,1);
     dec(i);
    end;
  udalenie_Sg:=stroka;
 end;

{============================================================================}
 Function udalenie_Cifr(stroka:string):string;
 Const N=['0'..'9'];
 var i:integer;

 begin
  for i:=1 to length(stroka) do
   if stroka[i] in N then
    begin
     delete(stroka,i,1);
     dec(i);
    end;
  udalenie_Cifr:=stroka;
 end;

{============================================================================}


begin
Vse:=['a'..'z'];
G:=['a','e','u','i','o']; {Гласные}
S:=Vse-G;                 {Согласные}
writeln('Введите строку');
readln(str);
 c:=udalenie_Gl(str,G); {удаление гласных}
 writeln('Стока с удаленными гласными: ',c);
 d:=udalenie_Sg(c,S); {удаление согласных}
 writeln('Строка с удаленными гласными и согласными: ',d);
 writeln ('Итоговая строка: ',udalenie_Cifr(d));  {удаление цифр}
readln;
end.

Последний раз редактировалось Викдон; 26.11.2008 в 22:46.
Викдон вне форума Ответить с цитированием
Старый 27.11.2008, 00:39   #9
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Вполне можно было использовать одну функцию, передавая вторым параметром множество-фильтр для символов. Так будет намного короче, ведь содержимое функций одинаково работает.
Предлагаю так:
Код:
program Project1; // можно убрать в Паскале, в 7-ых, и далее, версиях необязательно писать

{$APPTYPE CONSOLE} // убрать если обычный Паскаль

Type Mnojestvo = set of char;
Const
    Vse = ['a'..'z'];
    G = ['a','e','u','i','o','y']; {Гласные}
    S = Vse-G;                 {Согласные}
    ch = ['0'..'9'];

var st :string;
    c,d :String;

Function udalenie_sim(stroka:string; Man:Mnojestvo):string;
var i :integer;
begin
 for i:=length(stroka) DownTo 1 do
  if (stroka[i] in man) then
   delete(stroka,i,1);
 udalenie_sim:=stroka;
end;

begin
 write('Vvedite stroky: '); readln(st);
 c := udalenie_sim(st,G); {удаление гласных}
  writeln('Stroka s ydalenimi glasnimi: ',c);
 d := udalenie_sim(c, S); {удаление согласных}
  writeln('Stroka s ydalenimi glasnimi i soglasnimi: ',d);
  writeln ('Itogovaya stroka, ydaleni cifri: ',udalenie_sim(d, ch));  {удаление цифр}
 readln;
end.
Alter вне форума Ответить с цитированием
Старый 27.11.2008, 08:05   #10
<zeroql>
 
Регистрация: 20.11.2008
Сообщений: 5
По умолчанию

Спасибо огромное !
<zeroql> вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление символа в строке Fantom Общие вопросы Delphi 2 23.06.2008 16:03
Вывод символов в строке Karl_Karlovi4 БД в Delphi 12 03.06.2008 13:31
Удвоить каждый из первых пяти цифровых символов и удалить 5 последних латинских букв gred Помощь студентам 5 16.05.2008 23:20
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
кол-во букв в строке символов (Си) Newman Помощь студентам 1 04.12.2007 02:19