МБУ "Гимназия № 39" - 11 класс
МБУ "Гимназия № 39"
11 класс
Администрация

Учебник. К.Ю Поляков, Е.А. Ерёмин. Информатика. 11 класс. Углублённый урок. Практическая работа №46 

Практическая работа № 46.   Динамические массивы

  1. Введите с клавиатуры число N и вычислите все простые числа в диапазоне от 2 до N, используя решето Эратосфена.
  2. Введите с клавиатуры число N и запишите в массив первые N простых чисел.
  3. Введите с клавиатуры число N и запишите в массив первые N чисел Фибоначчи (напомним, что они задаются рекуррентной формулой, F(n)=F(n-1)+F(n-2), F(1)=F(2)=1.
  4. Напишите функцию, которая находит максимальный элемент переданного ей динамического массива.
  5. Напишите подпрограмму, которая находит максимальный и минимальный элементы переданного ей динамического массива (используйте изменяемые параметры).
  6. Напишите рекурсивную функцию, которая считает сумму элементов переданного ей динамического массива.
  7. Напишите функцию, которая сортирует значения переданного ей динамического массива, используя алгоритм «быстрой сортировки» (см. учебник 10 класса).

program pr46;

procedure p46_1_resheto_E(v:array of longint);

var i,j,k:longint;

begin

  k:=v.Length;

  v[0]:=0; //v[1]:=0;

  for i:=1 to k-1 do v[i]:=1;

  i:=2;

  while i*i<k do

     begin

     if v[i-1]=1 then

        begin

        j:=i*i;

        while j<=k do 

           begin

           v[j-1]:=0;

           j:=j+i;

           end;

        end;

     i:=i+1;

     end;

end;


procedure p46_2_prostie(v:array of longint);

var next,i,j,k:longint;

    bnext:boolean;

begin

   k:=v.Length;

   next:=1;

   for i:=0 to k-1 do

      begin

        bnext:=true;

        while bnext do 

           begin

              next:=next+1;

              j:=2;

              while (j*j<=next)and (next mod j <>0) do j:=j+1;

              if j*j>next then bnext:=false;

           end;

        v[i]:=next;

      end;

end;


procedure p46_3_fibonachi(v:array of longint);

var k,i:longint;

begin

   k:=v.Length;

   v[0]:=1; v[1]:=1;

   for i:=2 to k-1 do

      begin

      v[i]:=v[i-1]+v[i-2];

      end;

end;


function  f46_4_max_arr(v:array of longint):longint;

var k,i,max:longint;

begin

   k:=v.Length;

   max:=v[0];

   for i:=1 to k-1 do if max<v[i] then max:=v[i];

   f46_4_max_arr:=max;

end;


procedure p46_5_maxmin_arr(var max,min:longint;v:array of longint);

var k,i:longint;

begin

   k:=v.Length;

   max:=v[0];

   min:=v[0];

   for i:=1 to k-1 do 

     begin

       if max<v[i] then max:=v[i];

       if min>v[i] then min:=v[i];

     end;

end;


function  f46_6_sum_arr(v:array of longint):longint;

var k,i,summa:longint;

begin

   k:=v.Length;

   summa:=0;

   for i:=0 to k-1 do summa:=summa+v[i];

   f46_6_sum_arr:=summa;

end;


procedure p46_7_qsort_arr(left,right:longint;v:array of longint);

var m,tmp,l,r:longint;

begin

   m:=v[(left+right) div 2];

   l:=left; r:=right;

   while l<=r do

      begin

       while v[l]<m do l:=l+1;

       while m<v[r] do r:=r-1;

       if l<=r then begin tmp:=v[l]; v[l]:=v[r]; v[r]:=tmp; l:=l+1; r:=r-1

       end;

      end;

   if left<r  then p46_7_qsort_arr(left,l-1,v);

   if l<right then p46_7_qsort_arr(r+1,right,v);

end;


var m:array of longint;

    i,n,mmax,mmin,sum:longint;

begin

   read(n);

   setlength(m,n);


   p46_1_resheto_E(m);

   writeln;

   for i:=0 to n-1 do if m[i]=1 then write(i+1,' ');


   p46_2_prostie(m);

   writeln;

   for i:=0 to n-1 do write(m[i],' ');


   p46_3_fibonachi(m);

   writeln;

   for i:=0 to n-1 do write(m[i],' ');

   

   randomize;

   for i:=0 to n-1 do m[i]:=random(n);

   writeln;

   for i:=0 to n-1 do write(m[i],' ');

   writeln;


   mmax:=f46_4_max_arr(m);

   writeln(mmax);


   p46_5_maxmin_arr(mmax,mmin,m);

   writeln(mmin,' ',mmax);


   sum:=f46_6_sum_arr(m);

   writeln(sum);


   p46_7_qsort_arr(0,m.length-1,m);

   for i:=0 to n-1 do write(m[i],' ');

end.

Обратная связь
Ваше имя:

Ваш e-mail для ответа:

Город:

Текст:




 

 
  Главная

Школьный портал
 
Яндекс.Метрика Яндекс.Метрика