Географ передал вам набор показаний температуры, которые снимались в полдень в течение июня месяца текущего года. Он просит вас написать программу, которая проанализирует эти данные. — КиберПедия 

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Географ передал вам набор показаний температуры, которые снимались в полдень в течение июня месяца текущего года. Он просит вас написать программу, которая проанализирует эти данные.

2020-12-06 130
Географ передал вам набор показаний температуры, которые снимались в полдень в течение июня месяца текущего года. Он просит вас написать программу, которая проанализирует эти данные. 0.00 из 5.00 0 оценок
Заказать работу

Например, ему хотелось бы знать:

а) среднюю температуру в июне;

б) число дней, в которых температура была выше 23 градусов.

 

Решение

Способ

Program Temperature;

uses WinCrt;

var

   t: array [1..30] of integer;

   i, k: integer;

   s: real;

begin

   for i:= 1 to 30 do

       begin

         write('Введите температуру в ',i,' - день '); readln(t[i])

       end;

   s:= 0; k:= 0;

   for i:= 1 to 30 do

       begin

          s:= s + t[i];

          if t[i] > 23 then k:= k + 1

       end;

   writeln('Средняя температура в июне ', s/30:4:2);

   writeln('Число дней с температурой больше 23 град. ', k)

end.

Способ

Program Temperature;

uses WinCrt;

type

     a = array [1..30] of integer;

var

   t: a; i, k: integer; s: real;

begin

   for i:= 1 to 30 do

       begin

          write('Введите температуру в ', i, ' - день '); readln(t[i])

       end;

   s:= 0; k:= 0;

   for i:= 1 to 30 do

       begin

          s:= s + t[i];

          if t[i] > 23 then k:= k + 1

       end;

   writeln('Средняя температура в июне ', s/30:4:2);

   writeln('Число дней с температурой больше 23 град. ', k)

end.

Задача 2. Составить программу подсчета суммы элементов массива из 20 чисел, имеющих четные порядковые номера.

Решение

Способ

Program Problem2;

uses WinCrt;

const

        n = 20;

type

     t = array [1..n] of integer;

var

    a: t;

    s, i: integer;

{----------------------------------------------------------------------------------------}

        Procedure create(n: integer; var a: t);

  var

                 i: integer;

  begin

     randomize;

                writeln('Заданный массив целых чисел');

     for i:= 1 to n do

        begin

           a[i]:= random(201)-100; write(a[i], ' ')

        end;

                writeln

  end;

{----------------------------------------------------------------------------------------}

begin

  create(n, a);

  s:= 0;

  for i:= 1 to n do

    if i mod 2 = 0 then s:= s + a[i];

  writeln('Сумма элементов с четными номерами равна ', s)

end.

Способ

Program Problem2;

uses WinCrt;

const

      n = 20;

type

      t = array [1..n] of integer;

var

      a: t;

      s, i: integer;

begin

  randomize;

  writeln('Заданный массив целых чисел');

  s:= 0;

  for i:= 1 to n do

      begin

         a[i]:= random(201)-100;

          write(a[i], ' ');

         if i mod 2 = 0 t hen s:= s + a[i]

      end;

  writeln;

  writeln('Сумма элементов с четными номерами равна ', s)

end.

Задача 3. В одномерном массиве необходимо найти номер заданного пользователем числа и переставить его на первое место в массиве, последовательно переставляя с соседними элементами.

Решение

Program Problem 3;

uses WinCrt;

const

       n = 20;

type

      t = array [1..n] of integer;

var

     a   : t;

     i, k, d: integer;

{----------------------------------------------------------------------------------------}

Procedure create(n: integer; var a: t);

   var

       i: integer;

   begin

      randomize;

      writeln('Заданный массив целых чисел');

      for i:= 1 to n do

         begin

            a[i]:= random(201) - 100; write(a[i], ' ')

           end;

      writeln

   end;

{----------------------------------------------------------------------------------------}

Procedure search_number(d: integer; a: t; var k: integer);

   var

       i: integer;

   begin

      i:= 0;

      repeat

         i:= i + 1

      until a[i] = d;

      k:= i

   end;

{----------------------------------------------------------------------------------------}

Procedure transp_begin(n, k: integer; var a: t);

   var

       i, p: integer;

   begin

      for i:= k downto 2 do

         begin

            p:= a[i-1];

            a[i-1]:= a[i];

            a[i]:= p

         end

    end;

{----------------------------------------------------------------------------------------}

begin

  create(n, a);

  write('Введите переставляемый элемент '); readln(d);

  search_number(d, a, k);

  transp_begin(n, k, a);

  writeln('Массив после перестановки элемента в начало');

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

  writeln

end.

 

Задача 4. Сортировка методом пузырька

Решение

Program Problem 4; {Пузырьковая сортировка}

uses WinCrt;

const

      n = 100;

type

      t = array [1..n] of integer;

var

     a: t;

{----------------------------------------------------------------------------------------}

Procedure create(n: integer; var a: t);

   var

        i: integer;

   begin

      randomize;

      writeln('Заданный массив целых чисел');

      for i:= 1 to n do

         begin

            a[i]:= random(201) - 100;

            write(a[i], ' ')

          end;

      writeln

   end;

{----------------------------------------------------------------------------------------}

Procedure bubble(n: integer; var a: t);

     var

        i, j, p: integer; {Сортировка элементов массива}

     begin

        for i:= 2 to n do

           for j:= n downto i do

              if a[j] < a[j-1] then

                                       begin

                                          p:= a[j];

                                          a[j]:= a[j-1];

                                          a[j-1]:= p

                                       end;

        writeln('Упорядоченный по не убыванию массив');

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

        writeln

     end;

{----------------------------------------------------------------------------------------}

begin

   create(n, a);

   bubble (n, a)

end.

 

Задача 5.  Задача поиска элемента в упорядоченном массиве. Пусть задан целочисленный массив и задано целое число b. Выяснить входит ли число b в заданный массив и если входит, то каково значение номера элемента равного данному числу, т. е. найти такое p, для которого

Решение

Program Problem 5;

uses WinCrt;

const

   n = 20;

type

   t = array [1..n] of integer;

var

   a: t;

   p, q, s, b, i: integer;

begin

  writeln('Вводите элементы упорядоченного по неубыванию массива');

  for i:= 1 to n do

     begin

        write(' Введите ', i, '- й элемент '); readln(a[i])

     end;

  writeln;

  write(' Введите число b '); readln(b);

  p:= 1; q:= n;

  while p < q do

      begin

         s:= (p + q) div 2;

         if a[s] < b then p:= s + 1

                          else q:= s

      end;

  if a[p ]= b

    then writeln(' Число ', b, ' равно ', p, '- му элементу ')

    else writeln('Такого элемента в массиве нет')

end.

 

Задача 6. Сравнить два массива.

Решение

Program Problem 6;

uses WinCrt;

const

      n1 = 100;

type

      t = array [1..n1] of integer;

var

     a, b        : t;

     i, k, p, n, m: integer;

{----------------------------------------------------------------------------------------}

Procedure quick_search(a: t; n, b: integer; var p: integer);

   var

       q, s: integer;

   begin

      p:= 1; q:= n;

      while p < q do

          begin

             s:= (p + q) div 2;

             if a[s] > b then p:= s + 1

                              else q:= s

          end

   end;

{---------------------------------------------------------------------------------------}

begin

  write('Введите число элементов массива a, n= ');

  readln(n);

  write('Введите число элементов массива b, m= ');

  readln(m);

writeln('Введите упорядоченный по убыванию элементы массива a');

  for i:= 1 to n do

     begin

        write(' Введите ', i, '- й элемент '); readln(a[i])

     end;

  writeln('Введите элементы массива b ');

  for i:= 1 to m do

     begin

        write(' Введите ', i, '- й элемент '); readln(b[i])

     end;

  writeln('Заданные массивы чисел');

  for i:= 1 to n do write(a[i]:4); writeln;

  for i:= 1 to m do write(b[i]:4); writeln;

  k:= 0;

  for i:= 1 to m do

     begin

        quick_search(a, n, b[i], p);

        if a[p] <> b[i] then k:= k + 1

     end;

  write('Число элементов массива b, не равных ');

  writeln('элементам массива a равно ', k)

end.

 

Задача 7. Для упорядочивания массива чисел a1, a2,..., an может быть использован алгоритм сортировки простыми вставками. Опишем этот алгоритм применительно к упорядочиванию по возрастанию. Просматривать последовательно a2,..., an и каждый новый элемент ai вставлять на подходящее место в уже упорядоченную совокупность a1,..., ai-1. Написать программу, реализующую этот алгоритм.

Решение

Пусть задан массив чисел (снова, для простоты рассуждений, возьмем массив целых чисел):

 

12 -3 25 -10 6 8 34 -65  44 17

Этот, заданный массив обозначим именем a. В нашем примере он имеет 10 элементов.

Заведем еще один массив, также из 10 тех же элементов, но уже упорядоченных по возрастанию.

Наша задача будет состоять в построении этого массива. В качестве первого элемента упорядоченного массива b возьмем первый элемент массива a:

Итак, массив b:

 

12

Теперь берем второй элемент массива a - это -3 и с помощью процедуры быстрого поиска вставляем его в упорядоченный массив b. Поскольку -3 меньше 12, то он вставится перед 12 и упорядоченный массив b уже будет состоять из 2-х элементов:

-3 12

Берется третий элемент массива a - 25 и вставляется в массив b, получаем:

 

-3 12 25

 

И такой процесс будем продолжать до тех пор, пока все n элементов массив a не будут просмотрены. В результате образуется новый упорядоченный массив b.

 

Способ

Program Problem7; {Сортировка простыми вставками}

uses WinCrt;

const

      n = 20;

type

      t = array [1..n] of integer;

var

      a, b: t;

      i, p: integer;

{----------------------------------------------------------------------------------------}

Procedure create(n: integer; var a: t);

   var

       i: integer;

   begin

      randomize;

      writeln('Заданный массив целых чисел');

      for i:= 1 to n do

         begin

            a[i]:= random(201) - 100;

            write(a[i], ' ')

         end;

      writeln

    end;

{----------------------------------------------------------------------------------------}

Procedure quick_search(m, c: integer; b: t; var p: integer);

   var

      q, s: integer;

   begin

      p:= 1; q:= m;

          while p < q do

         begin

            s:= (p + q) div 2;

            if c > b[s] then p:= s + 1 else q:= s

         end

   end;

{---------------------------------------------------------------------------------------}

Procedure movement_end(i, k: integer; var b: t);

   var

       j: integer;

   begin

      for j:= i downto k + 1 do b[j]:= b[j - 1]

   end;

{---------------------------------------------------------------------------------------}

begin

  create(n, a);

  b[1]:= a[1];

  for i:= 2 to n do

     begin

        quick_search(i, a[i], b, p);

        movement_end(i, p, b);

        b[p]:= a[i]

     end;

  writeln;

  writeln('Массив упорядоченный по возрастанию.');

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

  writeln

end.

Способ

Program Problem7a; {Сортировка простыми вставками}

uses WinCrt;

const

       n = 20;

type

       t = array [1..n] of integer;

var

       a: t;

       i: integer;

{----------------------------------------------------------------------------------------}

Procedure create(n: integer; var a: t);

     var

        i: integer;

     begin

        writeln(' Заданный массив чисел ');

        randomize;

        for i:= 1 to n do

           begin

              a[i]:= random(201) - 100;

              write(a[i], ' ')

           end;

        writeln;

     end;

{---------------------------------------------------------------------------------------}

Procedure insert(var a: t; n: integer);

    var

        p, q, s, k, c: integer;

      begin

       for i:= 2 to n do

          begin

             p:=1;

             q:= i;

             c:= a[i];

             while p < q do

                 begin

                    s:= (p + q) div 2;

                    if c > a[s] then p:= s + 1

                                    else q:= s

                 end;

             for k:= i downto p + 1 do a[k]:= a[k - 1];

             a[p]:= c

          end

    end;

{----------------------------------------------------------------------------------------}

begin

   create(n, a);

   insert(a, n);

   writeln;

   writeln('Массив упорядоченный по возрастанию.');

   for i:= 1 to n do write(a[i], ' '); writeln

end.

 


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.174 с.