var i, n, ic, nc, kc, imax, nmax, kmax: integer; a: V;
begin write('Введите количество чисел N '); readln(n); SetLength(a, n + 1); writeln('Вводите числа'); for i := 0 to n - 1 do read(a[i]); writeln; nmax := -32768; kmax := 0; imax := 0; nc := a[0]; kc := 1; ic := 1; for i := 1 to n - 1 do begin if a[i] = nc then kc := kc + 1 else begin if kc < 3 then begin kc := 1; nc := a[i]; ic := i end else if kmax <= kc then begin kmax := kc; nmax := nc; imax := ic; kc:=1; nc:=a[i]; ic:=i end else begin kc := 1; nc := a[i]; ic := i end end end; if kmax <= kc then begin kmax := kc; nmax := nc; imax := ic end; writeln('Самая длинная серия содержит ', kmax, ' чисел ', nmax); for i:=n downto imax+kmax+1 do a[i]:=a[i-1]; a[imax+kmax]:=nmax; writeln('Модифицированная строка'); for i:=0 to n do write(a[i]:2) end. Тестовое решение
Введите количество чисел N 30 Вводите числа 1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 3 3 3 3 1 2 3 3 3
Самая длинная серия содержит 6 чисел 8 Модифицированная строка 1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 8 3 3 3 3 1 2 3 3
Program Array129; var a: array [1..40] of integer; B: array [1..20] of integer; C: array [1..20] of integer; temp,M,N,i,j:integer; begin writeln('Введите N (N<=20)'); readln(N); writeln('Значения массива А'); for i:=1 to n do begin write('a[',i,']=');readln(A[i]); B[i]:=i; end; // решение temp:=0; m:=0; // формируем из исходного массива A[] два с длиной серий B[] и значением серий C[] for i:=2 to n do begin inc(temp); if a[i]<>a[i-1] then begin inc(M); B[M]:=temp; C[M]:=a[i-1]; temp:=0; end; end; inc(temp); inc(M); b[M]:=temp; C[M]:=a[i]; // складываем массив A[] согласно задания. temp:=1; for i:=1 to m do begin if b[i]>=b[temp] then begin temp:=i; end; end; inc(b[temp]);
temp:=0; for i:=1 to m do begin for j:=1 to b[i] do begin inc(temp); a[temp]:=c[i]; end; end; Writeln; Writeln('ответ'); Write(' A[]: '); for i:=1 to temp do Write(A[i],' '); end.
Так как в задании не указано, что введенное слово должно обрамляться пробелами, то код может быть такой:
var s,a:string; begin write('Введите строку : '); readln(s); write('Введите слово : '); readln(a); if(pos(a, s) <> 0) then writeln('Слово "',a,'" в строке есть') else writeln('В строке такого слова нет'); end.
Тест №1 Введите строку : Привет участникам олимпиады! Введите слово : ник Слово "ник" в строке есть
Тест №2 Введите строку : Всем привет! Введите слово : админ В строке такого слова нет
//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016) { Определения длины средней линии трапеции, если известны длины оснований трапеции. } var a,b : real;
begin readln(a,b); writeln('длина средней линии = ',(a+b)/2); end.
{ Вычисления площади трапеции, если известны ее основания и высота. } var a,b,h : real;
begin readln(a,b,h); writeln('площадь трапеции = ',(a+b)/2*h); end.
{ Вычисления расстояния между двумя точками на координатной плоскости } var x1,y1,x2,y2 : real;
begin write('Координаты 1 точки '); readln(x1,y1); write('Координаты 2 точки '); readln(x2,y2); writeln('Расстояние между точками = ',sqrt(sqr(x1-x2)+sqr(y1-y2))); end.
{ Вычисления периметра треугольника, если известны координаты его вершин } var x1,y1,x2,y2,x3,y3,a,b,c : real;
{ В углу прямоугольного двора размером a*b стоит прямоугольный дом размером c*d. Подсчитать площадь дома, свободную площадь двора и длину забора. } var a,b,c,d,sh : real;
begin write('Размеры двора '); readln(a,b); write('Размеры дома '); readln(c,d); sh:=c*d; //площадь дома writeln('площадь дома = ',sh); writeln('свободная площадь двора = ',a*b -sh); writeln('длина забора = ',(a+b)*2 -(c+d)); end.
V = array of integer;
var
i, n, ic, nc, kc, imax, nmax, kmax: integer;
a: V;
begin
write('Введите количество чисел N ');
readln(n);
SetLength(a, n + 1);
writeln('Вводите числа');
for i := 0 to n - 1 do read(a[i]);
writeln;
nmax := -32768;
kmax := 0;
imax := 0;
nc := a[0];
kc := 1;
ic := 1;
for i := 1 to n - 1 do
begin
if a[i] = nc then kc := kc + 1
else begin
if kc < 3 then begin
kc := 1;
nc := a[i];
ic := i
end
else
if kmax <= kc then begin
kmax := kc;
nmax := nc;
imax := ic;
kc:=1;
nc:=a[i];
ic:=i
end
else begin
kc := 1;
nc := a[i];
ic := i
end
end
end;
if kmax <= kc then begin
kmax := kc;
nmax := nc;
imax := ic
end;
writeln('Самая длинная серия содержит ', kmax, ' чисел ', nmax);
for i:=n downto imax+kmax+1 do a[i]:=a[i-1];
a[imax+kmax]:=nmax;
writeln('Модифицированная строка');
for i:=0 to n do write(a[i]:2)
end.
Тестовое решение
Введите количество чисел N 30
Вводите числа
1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 3 3 3 3 1 2 3 3 3
Самая длинная серия содержит 6 чисел 8
Модифицированная строка
1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 8 3 3 3 3 1 2 3 3