строковая переменная это



Автор Андрей задал вопрос в разделе Другие языки и технологии

Строковые переменные (Паскаль).Подскажите пожалуйста и получил лучший ответ

Ответ от Krab Вark[гуру]
var i:integer; Str:string;
begin
Writeln('Введите текст'); Readln(Str); i:=0;
repeat
inc(i); if Str[ i]='.' then begin insert('..',Str,i); i:=i+2 end;
if Str[ i] ='!' then Str[ i]:='.';
until i=length(Str));
writeLn(str); readln
end.

Ответ от Ѐоман Малиновский[гуру]
я так понимаю у тебя если точка в середине то он в этом месте дофига точек ставит?
вот сматри какая фигня получается, ты вставляешь раз 3 точки заместо одной, длинна строки увеличивается, а все символы которые находятся после точки сдвигаютя, т. е их индекс меняется.
допустим было
123.123
точка находится под индексом i = 4
потом проход цикла при i = 4 становится
123...123
затем, следующий проход, i = 5, он опять видит точку и тд
в этом причина

Ответ от ИГОРЬ[гуру]
Чет мне не понятно как у тебя конструкция if (Str ='.') работает? ?
я понимаю if(Str = '.') т. е. сравнение символа (элемента массива) с символом ТОЧКА
а как ты строку с точкой сравниваешь я понять не могу!

Роман Малиновский прав! Учитывай смещение после вставки 3-х точек!

Ответ от Александр Ерофеев[гуру]
писал в блокноте и не проверял так что могут быть ошибки

var n,i:integer;
S1:string[3];
Str:string;
begin
Writeln('Введите текст'); Read(Str);

{Для А}
for i := 1 to Length(Str) do
begin
if (Str ='!') then begin Str:= '.';
end;
writeLn(str);

{Для Б}
i:=0;
n:=length(str);
while i<>n do
begin
if(str='.') then
begin
delete(str,i,1);
insert(str,'...',i);
n:=n+2;
i:=i+1;
end;
end;
writeLn(str);
end.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Строковые переменные (Паскаль).Подскажите пожалуйста
Супергеройское кино на Википедии
Посмотрите статью на википедии про Супергеройское кино
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*