Вход/Регистрация
Язык Си - руководство для начинающих
вернуться

Д. МАРТИН

Шрифт:

РИС. 12.3. Двумерный массив.

Используем этот двумерный массив в метеорологической программе. Цель нашей программы - найти общее количество осадков для каждого года, среднегодовое количество осадков и среднее количество осадков за каждый месяц. Для получения общего количества осадков за год следует сложить все данные, находящиеся в нужной строке. Чтобы найти среднее количество осадков за данный месяц, мы сначала складываем все данные в указанном столбце. Двумерный массив позволяет легко представить и выполнить эти действия. Рис. 12.4 содержит программу.

/* найти общее количество осадков для каждого года, среднего */

/* довое, среднемесячное количество осадков, за несколько лет */

#define TWLV 12 /* число месяцев в году */

#define YRS 5 /* число лет */

main

{

static float rain [YRS][TWLV] = {

{10.2, 8.1, 6.8, 4.2, 2.1, 1.8, 0.2, 0.3, 1.1, 2.3, 6.1, 7.4},

{9.2, 9.8, 4.4, 3.3, 2.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 5.2},

{6.6, 5.5, 3.8, 2.8, 1.6, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 4.2},

{4.3, 4.3, 4.3, 3.0, 2.0, 1.0, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6},

{8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.2}

};

/* инициализация данных по количеству осадков за 1970-1974 */

int year, month;

float subtot, total;

printf("ГОД КОЛИЧЕСТВО ОСАДКОВ (дюймы)\n\n");

for(year = 0, total = 0; year < YRS; year++)

{ /* для каждого года, суммируем количество осадков для каждого месяца */

for(month = 0, subtot = 0; month < TWLV; month++)

subtot + = rain [year][month];

printf("%5d %15.lf\n", 1970 + year, subtot);

total + = subtot; /* общее для всех лет */

}

printf(" \n среднегодовое количество осадков

составляет %.lf дюймов. \n \n ", total/YRS );

printf(" Янв. Фев. Map. Апр.Май Июн.Июл. Авг.Сент.");

printf(" Окт. Нояб. Дек.\n" );

for(month = 0; month < TWLV; month++)

{ /* для каждого месяца, суммируем

количество осадков за все годы */

for(year = 0, subtot = 0; year < YRS; year++)

subtot += rain[year][month];

printf(" %4.lf ", subtot/YRS); }

printf(" \n");

}

РИС. 12.4. Метеорологическая программа.

ГОД КОЛИЧЕСТВО ОСАДКОВ (дюймы)

1970 50.6

1971 41.9

1972 28.6

1973 32.3

1974 37.8

Среднегодовое количество осадков составляет 38.2 дюйма.

ЕЖЕМЕСЯЧНОЕ КОЛИЧЕСТВО:

Янв. Фев. Mар. Апр. Mай. Июн. Июл. Авг. Ceнт. OКТ. Нояб. Дек.

7.8 7.2 4.1 3.0 2.1 0.8 1.2 0.3 0.5 1.7 3.6 6.l

В этой программе следует отметить два основных момента: инициализацию и вычисления. Инициализация сложнее, поэтому мы сначала рассмотрим вычисления.

Чтобы найти общее количество осадков за год, мы не изменяем year, а заставляем переменную month пройти все свои значения. Так выполняется внутренний цикл for, находящийся в первой части программы. Затем мы повторяем процесс для следующего значения year. Это внешний цикл первой части программы. Структура вложенного цикла, подобная описанной, подходит для работы с двумерным массивом. Один цикл управляет одним индексом, а второй цикл - другим.

Вторая часть программы имеет такую же структуру, но теперь мы изменяем year во внутреннем цикле, a month во внешнем. Помните, что при однократном прохождении внешнего цикла внутренний цикл выполняется полностью. Таким образом, программа проходит в цикле через все годы, прежде чем изменится месяц, и дает нам общее количество осадков за пять лет для первого месяца, затем общее количество за пять лет для второго месяца и т. д.

  • Читать дальше
  • 1
  • ...
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: