Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

Laba4

Lab №4. Working with one-dimensional arrays

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Задание 36

Задан числовой массив . Найти отрезок массива максимальной длины, в котором первое число равно последнему, второе предпоследнему и т.д.

Delphi

dpr
program LR4;
uses
  SysUtils;

{$APPTYPE CONSOLE}
const n=20;      //number of characters

type
   TMAS=array[1..n] of integer;

procedure intArr( var M:TMAS);   //array definition
 var i:Integer;
  begin
    Randomize;
     for i:=1 to n do
      begin
        M[i]:=Random(5);
       write(M[i]:4);
      end;
      Writeln;
  end;

function Simetria(N,i,j:Integer; A:TMAS):boolean; //determine whether the array is symmetric about its midpoint
 var k,t:Integer;
   begin
     t:=0;
     Simetria:=true; 
     for k:=1 to N div 2 do
      begin
        if A[i+t]<>A[j-t] then
         begin
           Simetria:=False;
           break;
         end;
         t:=t+1;
      end;
   end;

 var  B :TMAS;
     i,j,bord1,bord2,Length,max,k :Integer;

BEGIN
  intArr(B);
  max:=0;
 for i:=1 to n-1 do        //first board
  for j:=n downto i+1 do   //second board
   begin
     length:=j-i+1;
     if length<=max then Break;
     if Simetria(length,i,j,B) then  //change of the maximum polindrome value
      begin
        max:=length;
        bord1:=i;
        bord2:=j;
        break;
      end;
   end;

 writeln('Longest segment');
   for k:=bord1 to bord2 do
     write(B[k],' ');
 writeln;
 writeln('Length ',max);
 readln;
END.