uses crt; var s:string; i,j:byte; begin clrscr; writeln('Введите строку, содержащую точки, как по 1, так и группами:'); readln(s); if (length(s)>1)and(copy(s,1,2)='..') then{если в начале строки более 1 точки} begin {или строка вообще из точек} while (s[1]='.')and(length(s)>0) do delete(s,1,1); insert('...',s,1); end; if(length(s)>2)and(s<>'...') then{если осталось более 2 сиволов, начнем проверять с конца} begin i:=length(s)-2; while i>=1 do if (s[i]<>'.')and(copy(s,i+1,2)='..') then begin while (s[i+1]='.')and(i+1<=length(s)) do delete(s,i+1,1); insert('...',s,i+1); i:=i-1; end else i:=i-1; end; write(s); readln end.
Решение на паскале.
Объяснение:
Первая задача:
var summa, kolichestvo : integer;
begin
summa := 2;
while summa <= 100 do
begin
summa := summa + 8;
kolichestvo := kolichestvo + 1;
end;
writeln('Количество = ', kolichestvo);
end.
Вторая задача:
var a : array[1..20] of integer;
kolpol, sumot, i : integer;
begin
for i:=1 to 20 do
Read(a[i]);
for i := 1 to 20 do
if a[i] >= 0 then
kolpol := kolpol +1
else
sumot := sumot + a[i];
writeln('Количество положительных = ', kolpol);
writeln('Сумма отрицательных = ', sumot);
end.
var s:string;
i,j:byte;
begin
clrscr;
writeln('Введите строку, содержащую точки, как по 1, так и группами:');
readln(s);
if (length(s)>1)and(copy(s,1,2)='..') then{если в начале строки более 1 точки}
begin
{или строка вообще из точек}
while (s[1]='.')and(length(s)>0) do delete(s,1,1);
insert('...',s,1);
end; if(length(s)>2)and(s<>'...') then{если осталось более 2 сиволов, начнем проверять с конца}
begin i:=length(s)-2;
while i>=1 do
if (s[i]<>'.')and(copy(s,i+1,2)='..') then
begin
while (s[i+1]='.')and(i+1<=length(s)) do delete(s,i+1,1);
insert('...',s,i+1);
i:=i-1;
end
else i:=i-1;
end;
write(s);
readln
end.