Дан одномерный массив, который содержит не более 60 символов, которые образуют слова, разделенные пробелом. заменить слово «mama» на слово «ded». написать программу в паскале abc. заранее !
Var s:array[1..60] of char; i,j,len:integer; begin len:=60; for i:=1 to 60 do read(s[i]); i:=1; while(i<=len-3) do begin if (s[i]='m') and (s[i+1]='a') and (s[i+2]='m') and (s[i+3]='a') then begin s[i]:='d'; s[i+1]:='e'; s[i+2]:='d'; for j:=i+3 to len-1 do s[j]:=s[j+1]; dec(len); end; inc(i); end; for i:=1 to len do write(s[i]); end.
Программа с массивом (хотя он тут и не нужен): var a:array[1..60] of char; st:string; i,p:integer; begin writeln('Введите массив символов:'); readln(st); writeln('Вот массив:'); for i:=1 to length(st) do begin a[i]:=st[i]; write(a[i]); end; writeln; st:=' '+st+' '; p:=pos(' mama ',st); while p>0 do begin delete(st,p,6); insert(' ded ',st,p); p:=pos(' mama ',st); end; writeln('Измененный массив:'); for i:=1 to length(st)-2 do begin a[i]:=st[i+1]; write(a[i]); end; writeln; end.
Пример: Введите массив символов: mama papa okno mama primer baba Вот массив: mama papa okno mama primer baba Измененный массив: ded papa okno ded primer baba
var s : string[50]; i, j, k : word; f : boolean; function isSpace(ch : char) : boolean; begin isSpace := false; if ch = ' ' then isSpace := true; end; begin f := false; repeat j := 0; writeln('введите строку, состоящую из 2 слов'); readln(s); for i := 1 to length(s) do if isSpace(s[i]) then begin inc(j); k := i; end; if j =1 then f := true; until f; write(copy(s, k + 1, length(s)), ' ', copy(s, 1, k - 1)); end. недавно такую писала :)
Var
s:array[1..60] of char;
i,j,len:integer;
begin
len:=60;
for i:=1 to 60 do
read(s[i]);
i:=1;
while(i<=len-3) do
begin
if (s[i]='m') and (s[i+1]='a') and (s[i+2]='m') and (s[i+3]='a') then
begin
s[i]:='d';
s[i+1]:='e';
s[i+2]:='d';
for j:=i+3 to len-1 do
s[j]:=s[j+1];
dec(len);
end;
inc(i);
end;
for i:=1 to len do
write(s[i]);
end.