![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Сам пробовал написать программу ничего не получалось,объясняли(скажем так теоретически понял
,а практически не очень ) .Может тут, кто поможет написать программку. Условие задачи.
Нужно удалить из строки буквы 'b','c','d'.ЗАРАНЕЕ СПАСИБО! |
|
#2
|
||||
|
||||
|
Код:
StringReplace(строка, что_убрать, '', [rfReplaceAll]); |
|
#3
|
||||
|
||||
|
Ну а что не получилось то?
Код:
var s: string; i: integer;
begin
...
for i:=1 to length(s) do
if(s[i] = 'b') or (s[i] = 'c') or (s[i] = 'd') then
Delete(S, i, 1);
ShowMessage(S);Или как написали выше (только функция stringReplace не паскалевская, поэтому думаю она не годиться, но всеже: Код:
var s:string; begin ... StringReplace(S, 'b', '', [rfReplaceAll]); StringReplace(S, 'c', '', [rfReplaceAll]); StringReplace(S, 'd', '', [rfReplaceAll]); ShowMessage(S); Последний раз редактировалось v1s2222, 06.12.2010 в 15:52. |
|
#4
|
||||
|
||||
|
Не получалось,то что в место одной буквы у меня удолялось все слово((((
|
|
#5
|
||||
|
||||
|
В цикле пробегая по каждому сиволу и удаляй один символ: Delete(S, i, 1);
Код выше посмотри, там все правильно. |
|
#6
|
|||
|
|||
|
можно и вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var st,st1:string;
i:integer;
begin
st:=edit1.Text;
for i:=1 to length(st) do
begin
if (
(st[i]='a') or
(st[i]='b') or
(st[i]='d')
) then begin
st1:=copy(st,0,i-1);
st:=st1+copy(st,i+1,length(st));
st1:='';
end;
label1.Caption:=st;
end;
end; |
|
#7
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
s: String;
begin
s:='Welcome to the MSDN Library, an essential source of information for developers using Microsoft® tools, products, technologies and services. The MSDN Library includes how-to and reference documentation, sample code, technical articles, and more.';
Memo1.Text:=s;
s:=StringReplace(s, 'b', '', [rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s, 'c', '', [rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s, 'd', '', [rfReplaceAll, rfIgnoreCase]);
Memo1.Lines.Add('--');
Memo1.Lines.Add(s);
end;
end. |
|
#8
|
||||
|
||||
|
Еще один вопрос!!Почему букву 'c' прога не удаляет??
Код:
program Project1;
{$APPTYPE CONSOLE}
var str: string; i: integer;
begin
writeln('vedite stroku');
Readln(str);
begin
for i:=1 to length(str) do
if(str[i] = 'b') or (str[i] = 'c') or (str[i] = 'd') then
Delete(Str, i, 1);
end;
begin
writeln(str);
readln;
end;
End.Делаю тест,получается вот,что Код:
Vedite sroku abcdfabcg acfacg |
|
#9
|
||||
|
||||
|
а ты уверен что "С" и "C" одинаковые? т.е. рус и анг раскладка
|
|
#10
|
|||
|
|||
|
Буква "с" у вас в условии скорее всего русская!
|
|
#11
|
||||
|
||||
|
Нет,все правильно!
Всё равно тупит( |
|
#12
|
||||
|
||||
|
потому что она идет после удаляемой буквы b и выпадает из обработки после удаления b
|
|
#13
|
||||
|
||||
|
Спасибо всем за помощь!!!!
|
|
#14
|
||||
|
||||
|
Цитата:
|
|
#15
|
||||
|
||||
|
так по-моему лучше
Код:
var str:string;
i,dlina:byte;
begin
i:=1;
str:='sdfcdbdfghgrtasdcvbfgdbt';
dlina:=length(str);
while i<=dlina do
begin
if(str[i] = 'b') or (str[i] = 'c') or (str[i] = 'd') then
begin
Delete(Str, i, 1);
dec(i); //i:=i-1;
dec(dlina); //dlina:=dlina-1;
end;
inc(i); //i:=i+1;
end; |