Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача про строку
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Merlin
Дана строка символов. Удалить из строки все знаки препинания. Вывести исходную и преобразованные строки на экран.
Altair
program Untitled;
var
 s,g:string;
 r:set of char;
 i:byte;
begin
 r:=['.',',','!'];
 write(' enter string: '); reADLN(s); g:=s;
 i:=1;
 while i<=length (s) do begin
  if s[i] in r then delete (s,i,1) else inc(i);
 end;
 writeln(s);
writeln(g);
 readln
end.

Нажмите для просмотра прикрепленного файла
Множество знаков припинаний сам дополнишь.
Merlin
Спасибо за ответ, к сожалению програмирование пока я не очень освоил, но буду стараться потстигать истины.
Altair
никаких ситин здесь нет, если бы ты хотел что-то постигать ты бы сам решил такую простую задачу.
volvo
Еще вариант:
var
 s, g:string;
 r: set of char;
 i: byte;
begin
  r:=['.',',','!'];
  write(' enter string: '); readln(s);
  g := '';

  for i := 1 to length(s) do
   if not(s[i] in r) then g := g + s[i];

  writeln(s);
  writeln(g);
  readln
end.
Altair
wacko.gif wacko.gif wacko.gif :smoke: :smoke: :smoke:
и еще

{$X+}
uses crt;
Type
 str=object
  private
  enterstr,resultstr:string;
  public
  procedure Init;
  procedure RunAndDone;
 end;

Procedure Str.Init;
begin
 write('Enter string ');
 readln(enterstr);
 resultstr:='';
end;

procedure str.runanddone;
var
 r:set of char; i:byte;
begin
 r:=['.',',','!'];
 i:=1;
 for i := 1 to length(enterstr) do
   if not(enterstr[i] in r) then  resultstr:=resultstr+enterstr[i];
 writeln(enterstr);
 writeln(resultstr);
 readln
end;


var
 work:str;
begin
 work.init;
 work.runanddone;
end.




Музыка играет -
InsightRadio. Moscow Private Progressive Radio
volvo
To: Altair
А через рекурсию слабо? :P
function is_punct(ch: char): boolean;
begin
  is_punct := (ch in ['.',',','!'])
end;
function check_string(ch: char): string;
begin
  check_string := '';
  if not is_punct(ch) then check_string := ch;
end;

function do_it(s: string): string;
begin
  if length(s) > 1 then
    do_it := check_string(s[1]) + do_it( copy(s, 2, 255) )
  else do_it := check_string(s[1]);
end;

var s, g: string;
begin
  write('enter string: '); readln(s);
  writeln( do_it(s) );
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.