Четверг, 14.11.2019, 22:07
Главная | Регистрация | Вход Приветствую Вас Гость | RSS


Меню сайта


Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Тестування онлайн
тестування онлайн 


Социальные закладк

Тема. Алгоритмы обработки табличных величин.

Продолжаем рассматривать некоторые типичные задачи обработки табличных величин:

  1. вычисления суммы значений всех ее элементов;
  2. вычисления суммы и количества значений элементов, отвечающих определенным условиям
  3. нахождения наибольшего и наименьшего элементов
  4. поиск заданного элемента

Задачи на нахождение суммы (произведения) элементов

  1. Найти произведение всех элементов массива А [1..N].
            
Р: = 1;
           
For i: = 1 to N do P:= Р * А [i];

  2. Найти сумму положительных элементов массива A [1..N].
               
S: = 0;
               
For i: = 1 to N do  If A [i]> 0 Then S = S + A [i];

Такие задачи достаточно часто решают на практике. Приведем лишь несколько примеров.

  1. Так, синоптики определяют,
  2. Наибольшую, наименьшую и среднюю температуру за день
  3. Среднее количество осадков в течение месяца
  4. В процессе определения победителей в некоторых соревнованиях отвергают наибольшее и наименьшее оценки судей и вычисляют среднее арифметическое тех оценок, которые остались.
  5. Администрацию вашего учебного заведения может интересовать, сколько учеников 9-х классов имеют семестровые оценки по информатике: 10, 11. 12
  6. Есть ли в вашем классе ученики, получившие оценку 8 за последние практическую работу, и т.

Во всех задачах, которые рассмотрим в этом пункте, будем вводить:

  • значения элементов табличной величины с многострочного текстового поля,
  • значения других переменных - из текстовых полей.

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

Пример 6. Определить сумму значений всех элементов табличной величины.

Анализ решения:

  1. Разработка элементов табличной величины будет осуществляться с использованием цикла.
  2. Используем переменную для накопления суммы значений элементов табличной величины. Перед циклом предоставим ей значение 0
  3. В цикле последовательно пересматривать элементы табличной величины и добавлять их значения к переменной s.
Алгоритм проекта
Интерфейс проекта

Программный код

 procedure TForm1.Button1Click(Sender: TObject);
 var a: array[0..9] of real; i:integer;  s: real;
 begin
   Randomize; s:=0;
   for i:= 0 to 9 do
       
begin
            memo1.Lines[i]:=floattostr(random(20)-9.5);  // визуализация массива, заполняем строки  поля memo1
            a[i] := strtofloat(memo1.Lines[i]); { данные из строк поля memo1  перевести  в числа и присвоить соответствующим элементам  массива }  
             s:=s + a[i];   // накапливаем сумму значений элементов массива 
      end;  
 label1.caption:=
'summa =  ' + floattostr(s);
 end;
 procedure TForm1.Button2Click(Sender: TObject);
 begin  
   memo1.Clear;
 //  очистить  поле memo1
   label1.caption:='  ' ;
 end;
 procedure TForm1.Button3Click(Sender: TObject);
 begin
          form1.Close;
 end;

 

    Пример 7.  Многострочное поле memo1 содержит действительные числа. Известно, что их количество не превышает 20. Ввести эти числа как значения элементов массива .  Определить сумму и количества  положительных элементов массива, среднее арифметическое суммы значений этих элементов. Вывести значение этих элементов в многострочное текстовое поле memo2.

  1. Поскольку по условию количество элементов может быть каждый раз произвольным, но не превышающим 20, в строке  var объявляем размерность массива [0..19].
  2. Для определения реального количества элементов для каждого такого ввода (свойству readonly поля memo1 присвоить значение false) воспользуемся свойством  memo1.lines.count, определяющем количество заполненных строк поля.

Интерфейс проекта

Программный код

procedure TForm1.Button1Click(Sender: TObject);
  Var a:array[0..19] of real; i, k,n: integer; z,s: real;
begin
   n:= memo1.lines.count;
   s:= 0; k:=0;
   for i := 0 to n-1 do
 
 begin
     a[i] := strtofloat(memo1.lines[i]);
     if a[i] > 0 then
begin s:= s + a[i];  k:= k+1; memo2.lines.append(floattostr(a[i]));end;
   end;
   z:= s/k;
   edit1.text := floattostr(s);
    edit2.text := inttostr(k);
    edit3.text := floattostrF(z,ffgeneral,6,3);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    edit1.text :='';
    edit2.text :='';
    edit3.text :='';
    memo2.clear;
end;  

Пример 8. Найти наибольшее значение элементов линейного массива.

Алгоритм  задания

Описание программы поиска элемента с наибольшим или наименьшим значением

    Элементы табличной величины записанные в памяти, доступ к ячейкам которой осуществляется по номерам элементов. 
   Исполнитель может одновременно открывать доступ к одной ячейки.
       Выполним такой алгоритм:
 1. прочитаем из памяти первый элемент таблицы, запомним его как максимальное - предоставим его значение величине max;
 2. затем последовательно считываем очередной элемент таблицы

  • если его значение больше max, «забудем» о предыдущее значение и запомним значение уже этого элемента как   max ;
  •    если его значение меньше max, приступать к следующему шагу без изменения значения max .


    Поиск наименьшего элемента массива осуществляется по аналогичному алгоритму, находя в соответствии элемент (min), который меньше всех просмотренных элементов.

 

 

procedure TForm1.Button2Click(Sender: TObject);
begin
      label2.caption:= '';
memo1.Clear
;
end;

procedure TForm1.Button2Click(Sender: TObject);
      var a:array[1..10] of real;  i: integer; max: real;
begin
   randomize;
   for i:=  1 to 10 do
   
begin
     a[i]:= random(60) + 0.5;    
// формируем массив
     memo1.lines[i] := 'a['+inttostr(i) + ' ]= '+ floattostr(a[i]); //вывод элементов массива построчно в многострочное поле
     end;
    max:=a[1];  
//первый элемент массива считаем максимальным

   for i:=  2 to 10 do
    if  a[i]> max  //сравниваем очередной элемент массива с наибольшим на данный момент                                                 then     max:= a[i];   //меняем значение наибольшего элемента

 label2.caption:= floattostr(max);
 end;

         

 

Табличная форма отображения массива

 

Форма входа
Поиск
Календарь
«  Ноябрь 2019  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Рейтинг@Mail.ru
    Copyright MyCorp © 2019
    Конструктор сайтов - uCoz