Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Расчет среднего значения элементов массива





Теперь сформулируем задачу обработки массива температур, которую будем решать дальше. Вычислим среднегодовую температуру. Для этого нужно сложить все 12 значений таблицы и разделить сумму на 12. Полученную величину выведем в качестве результата.

Эту задачу легко решить с помощью электронных таблиц. На рис. 3.13 показана такая таблица. В ячейки В2:В13 заносятся значения температур. В ячейку В14 помещается формула: =СРЗНАЧ(В2:В13). Результат вы видите в ячейке В14.

  A B
  Месяц Температура
    -21
    -18
    -7,5
    5,6
     
     
    22,2
     
     
    5,4
    -7
    -18
  Среднее: 2,56

 

Рис. 3.13. Таблица температур

Табличный процессор - это программа, составленная программистами на некотором языке программирования. Вот мы и разберемся, как программируется вычисление среднего значения числового массива, реализованное в функции СРЗНАЧ.

Запишем алгоритм в полном виде (с вводом, вычислениями и выводом), используя в нем для организации циклов структуру цикла с параметром.

алг Средняя температура
вещ таб Т[1:12]
цел I, вещ Tsred
нач
{Цикл ввода}
для I от 1 до 12 шаг 1 повторять
нц
вывод "Т[I", I, "]="
ввод Т[I]
кц
{Цикл суммирования}
Tsred:=0
для I от 1 до 12 шаг 1 повторять
нц
Tsred:= Tsred +T[I]
кц
{Вычисление среднего}
Tsred:= Tsred /12
вывод("Среднегодовая температура=", Tsred
кон

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

Tsred =(T[1] + T Г[2] + T [3] +.... + Т[12])/12.

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

Вопросы и задания

1. Что такое массив?

2. Самостоятельно придумайте примеры данных, которые можно организовать в виде массива. В каждом примере отметьте: каким именем можно обозначить массив, как пронумеровать его элементы, какой тип будет иметь массив? Опишите массивы по правилам Алгоритмического языка.

3. Для тех же исходных данных, что рассматриваются в параграфе, составьте алгоритм, в котором вычисляются четыре величины: средние температуры зимних месяцев, весенних месяцев, летних месяцев, осенних месяцев.

4. Вы посетили магазин и купили 10 видов товара. В таблицу Т[1:10] вы записали количество купленного товара каждого вида. В таблицу С[1:10] записали цены единиц каждого вида товара соответственно. Составьте алгоритм вычисления общей стоимости всех покупок.

 

Массивы в Паскале

А теперь посмотрим, как можно на Паскале запрограммировать алгоритм вычисления среднегодовой температуры.

Для этого сначала познакомимся с правилами описания массивов. Заметим, что в данном разделе учебника мы ограничиваемся только работой с одномерными массивами (линейными таблицами).

Описание и обработка массива на Паскале

Общая форма описания одномерного массива на Паскале такая:

var <имя массива>: array [<нижняя граница индекса.. верхняя граница индекса>] of <тип массива>

Слово "array" буквально переводится как "массив". Границы индекса могут быть любыми целыми числами. Важно, чтобы нижняя граница была меньше верхней границы. Описание массива температур будет следующим:
var T: array [1..12] of real;

Цикл с параметром на Паскале

Рассмотрим полный текст программы на Паскале.

Program Temperature;
var T: array [1..12] of real;
I: integer; Tsred: real;
begin
{Цикл ввода}
for I:=l to 12 do
begin
write ('T[ ',1:2, '] = ');
readln(T[I])
end;
{Цикл суммирования}
Tsred:=0;
for I:=l to 12 do
Tsred:=Tsred+T[I];
{Вычисление среднего}
Tsred:=Tsred/12;
writeln('Среднегодовая температура = ', Tsred:6:2, ' градусов')
end.

В этой программе дважды использован оператор цикла с параметром. Он имеет следующий формат:

for <параметр цикла>:= <начальное значение параметра> to <конечное значение параметра> do <тело цикла>;

Если параметр цикла - целая переменная, то ее значение будет возрастать через единицу. Существует другой вариант этого оператора, в котором вместо слова to записывается downto. В этом случае значение параметра цикла убывает через единицу. Следовательно, начальное значение в этом случае должно быть больше конечного.

Так же как и для оператора цикла while, здесь тело цикла может быть либо простым оператором, либо составным. В первом случае тело цикла заканчивается на ближайшей точке с запятой. В нашем примере - это цикл суммирования. Во втором случае тело цикла заключается между словами begin и end (цикл ввода).

Форматы вывода

В программе присутствует еще один новый для вас элемент Паскаля: формат вывода. Это числа с двоеточиями, стоящие после переменных в операторе вывода write:

write('Т [',I:2,']=');

В этой записи I:2 обозначает, что значение переменной I выводится как целое число в две символьные позиции на экране. Для однозначного числа в первой позиции будет помещен пробел, например: _5.

В операторе вывода результата также используется формат: Tsred: 6:2. Значение переменной Tsred выводится как смешанное число в 6 позиций, две последние из которых занимает дробная часть. В третьей справа позиции - точка. Лишние позиции для целой части занимаются пробелами. Например: _34.25.

Результат выполнения программы Temperature будет выведен на экран в следующем виде:

Среднегодовая температура =2.56 градусов

Программа с двумя массивами

А теперь расширим условие задачи. Требуется для каждого месяца определить отклонение его средней температуры от среднегодовой величины.

Вернемся к электронной таблице на рис. 3.13. Добавим к ней еще один столбец С, в котором будут вычисляться искомые отклонения. В ячейку С2 занесем формулу =В2-$В$14. По этой формуле вычислится отклонение январской температуры от среднегодовой. Скопировав эту формулу в ячейки СЗ:С13, получим все остальные величины. Смысл "замораживания" адреса В14 вам должен быть понятен. Результаты приведены в таблице на рис. 3.14.

  A B  
  Месяц Температура Отклонения
    -21 -23,56
    -18 -20,56
    -7,5 -10,06
    5,6 3,04
      7,44
      15,44
    22,2 19,64
      21,44
      14,44
    5,4 2,84
    -7 -9,56
    -18 -20,56
  Среднее: 2,56  

 

Рис. 3.14. Температуры и отклонения от среднего

Реализуем вычисление отклонений в программе на Паскале. Очевидно, в программе должен появиться еще один массив для размещения в нем таблицы отклонений. Дадим этому массиву имя Dt. Как и массив температур, он состоит из 12 чисел: Dt[l], Dt[2], Dt[3],..., Dt [12].

К предыдущей программе надо добавить описание массива Dt в следующем виде:

var Dt: array [1..12] of real;

Значение каждого элемента массива равно разности между температурой соответствующего месяца и среднегодовой температурой. Например, для января: Dt[l] = Т[1] - Tsred. Такие вычисления повторяются в цикле 12 раз. Значения массива Dt выводятся на экран.

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

for I:=l to 12 do
begin
Dt[I]:= T[I] - Tsred;
writeln('Dt[',I:2,']=', Dt[I]:б:2)
end

Здесь вычисление значений массива Dt и вывод их на экран совмещены в одном цикле. Результат работы программы будет следующим:
Dt[1]= -23,56
Dt[2]= -20,56
Dt[3]= -10,06

Dt[12]= -20,56

Как и следовало ожидать, это те же самые числа, что получены в электронной таблице.

Вопросы и задания

1. Как можно описать на Паскале массив, в котором будут храниться значения численности населения Москвы к концу каждого года XX века?

2. Вы приобрели котенка. Каждый вечер вы определяете его вес с помощью весов. Как можно описать на Паскале массив, в котором будут храниться значения веса котенка в течение месяца (например, мая)?

3. Напишите фрагмент программы на Паскале ввода исходных данных для массивов, определенных в заданиях 1 и 2.

4. Введите в компьютер программу Temperature, добавив к ней обработку массива Dt. Выполните программу, получите результаты. Сравните их с приведенными в параграфе.

5. Составьте программы на Паскале по алгоритмам из заданий 3, 4 предыдущего параграфа. Выполните эти программы на компьютере.

 







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.