Untitled
raw download clone
TEXT
views 26
,
size 5238 b
program  zad1;
{}

{$mode objfpc}{$H+}

uses   crt,
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
Const
     gen=4;       {загальна кiлькiсть знакiв для виведення чисел}
     fr=2;        {кiлькiсть знакiв пiсля десяткової крапки}
     n0=1;        {мiнiмальна довжина масиву}
     nfull=100;   {максимальна довжина масиву}
     nm=-8;   {нижня межа елементiв матрицi}
     vm=16;     {верхня межа елементiв матрицi}

Type arr=array [1..nfull] of real;  {тип-масив дiйсних чисел}
Var
   n:integer;    {реальна довжина масиву}
   a:arr;        {масив дiйсних чисел}
  {функцiя введення реальної довжини масиву}
function in_n(nn0,nnfull:integer):integer;
var
   nn:integer;  {замiсник функцї}
begin
    repeat
           writeln('Введiть довжину масиву в межах вiд ',nn0,' до ',nnfull);
           readln(nn);
           if not((nn>=nn0) and (nn<=nnfull))
                then writeln('Недопустиме значення!');
     until (nn>=nn0) and (nn<=nnfull);
     in_n:=nn;    {"передаємо повноваження": надаємо значення функцiї
                    вiд змiнної - замiсника функцiї}
end;

      {процедура введення масиву}
procedure inarr(var aa:arr; nn:integer; nnm,nvm:real);
var i:integer;    {лiчильник елементiв масиву}
begin
     {заповнення масиву дiйсними числами в межах nnm..nvm}
     for i:=1 to nn do
           aa[i]:=nnm+(nvm-nnm)*random;
end;

      {процедура виведення масиву}
procedure outarr(aa:arr; nn:integer);
var i:integer;    {лiчильник елементiв масиву}
begin
     for i:=1 to nn do
           write(aa[i]:gen:fr,' ');
     writeln;
end;

{визначення максимальної серії зростання}
function maxseri(a:arr;n:integer):integer;
var
    i:integer;    {лiчильник елементів}
    count,maxcount:integer; {для пірдрахунку кількості елементів що стоять
                                                                 у зростанні}
    pr:real; {будемо зберігати попереднє значення}
begin
    count:=0;    {запишемо серію на початку нуль}
    maxcount:=0;
    pr:=a[1]; {записуємо попереднє значення до змінної}
     for i:=1 to n do                  {змiщення по елементам}
          begin
            if a[i]>pr then      {якщо елемент більше попередього
                                          починаємо рахувати серію зростання}
                     begin
                     count+=1;                 {збільшуємо поточну серію}
                        if count>maxcount then    {якщо поточна серія за максимальну
                                                  запишемо її}
                          maxcount:=count;
                     end
                     else count:=1;               {якщо серія завершилась доречно
                                                  поточну обнулити}
                     pr:=a[i];
              end;

     maxseri:=maxcount; {повернемо значення максимальної серії}
  end;

      {Основний блок програми}
Begin
     clrscr;   {очистка екрану}
     randomize; {запуск генератора випадкових чисел}
     n:=in_n(n0,nfull);  {введення реальної довжини масиву завдяки
                           функцiї введення реальної довжини масиву}

     inarr(a,n,nm,vm);      {Виклик процедури введення масиву}
     writeln;   {пропустимо рядочок на екранi}
     writeln('Масив:');
     outarr(a,n);         {Виклик процедури виведення масиву}
     writeln;   {пропустимо рядочок на екранi}
    {виведення максимальної серії зростання}
    writeln('Максимальна кількість розташованих пілряд елементів за зростанням  ',maxseri(a,n)); {виводимо результат}{виведемо серію зростання}
     writeln;   {пропустимо рядочок на екранi}
     writeln('Програму завершено. Для виходу натиснiть Enter.');
     readln;       {затримка екрану}


End.   {ну ось i все}
close fullscreen
Login or Register to edit or fork this paste. It's free.