|
Программирование >> Структурное программирование
for (int i = 0; i < arraySize; i++) cout setw(4) a[i]; for (int pass = 1; pass < arraySize; pass++) проход for (i = 0; i < arraySize - 1; i++) один проход if (a[i] > a[i + 1]) { одно сравнение hold = a[i]; одна перестановка a[i] = a[i + 1]; a[i + 1] = hold; cout << endl << Элементы данных в порядке возрастания endl; for (i =0; i < arraySize; i++) Uif cout << setw (4) a[i]; cout endl; return 0; Элементы данных в исходном порядке 2 6 4 8 10 12 89 68 45 37 Элементы данных в порядке возрастания 2 4 6 8 10 12 37 45 68 89 Рис. 4.16. Пузырьковая сортировка массива (часть 2 из 2) 4.7. Учебный пример: вычисление среднего значения, медианы и моды с использованием массивов Рассмотрим теперь более серьезный пример. Часто компьютеры используются для обработки и анализа результатов обследований и голосований. Программа на рис. 4.17 использует массив response, которому в качестве начальных значений присвоено 99 (размер представлен именованной константой responseSize) значений ответов при обследовании. Каждый ответ является числом от 1 до 9. Программа вычисляет среднее значение, медиану и моду 99 значений. Среднее - это среднее арифметическое 99 значений. Функция mean вычисляет среднее путем суммирования 99 элементов и деления результата на 99. Медиана - это середина . Функция median определяет медиану, вызывая функцию bubbleSort, чтобы отсортировать массив ответов в порядке их возрастания, и выбирая средний элемент answer[responseSize / 2] отсор- тированного массива. Заметим, что если массив содержит четное число элементов, медиана должна вычисляться как среднее значение двух элементов в середине массива. Функция median этой возможности не обеспечивает. Функция print Array вызывается для вывода на экран массива response. Мода - это наиболее часто встречающееся значение среди 99 ответов. Функция mode определяет моду, подсчитывая количество ответов каждого типа и выделяя затем наиболее часто встречающийся ответ. Этот вариант функции mode не обрабатывает случай равного числа нескольких ответов (см. упражнение 4.14). Функция mode строит также гистограмму, чтобы помочь определить моду графически. Рис. 4.18 содержит выходную информацию прогона программы. Этот пример включает наиболее общие операции, необходимые обычно при работе с массивами, включая передачу массивов функциям. Эта программа знакомит с вопросами анализа данных обследования Она вычисляет среднее значение, медиану и моду данных. iinclude <iostream.h> iinclude <iomanip.h> void mean(const int [], int); void median(const int [], int); void mode(const int [], int [], int) void bubbleSort(int[], int); void printArray(const int[], int); main () const int responseSize = 99; int frequency[10] = {0},
mean(response, responseSize); median(response, responseSize); mode(frequency, response, responseSize); return 0;} void mean(const int answer[ ], int arraySize) { int total = 0; cout ********* endl Среднее endl < < endl; for (int j = 0; j < arraySize; j++) total += answer[j]; Рис. 4.17. Программа анализа данных обследования (часть 1 из 3) .i -* cout << Среднее является средним значением << endl элементов данных. Среднее значение endl << равно сумме данных, деленной на количество << endl << элементов ( << arraySize << ). Среднее значение для endl . 1 << данного расчета равно: total / arraySize = setiosflags(ios::fixed ios::showpoint) II setprecision(4) << (float) total / arraySize << endl endl; d void median(const int answer [ ], int size) cout endl ********** endl Медиана endl << endl << Несортированный массив ответов ; printArray(answer, size); bubbleSort(answer, size); cout << endl << endl << Сортированный массив ответов ; printArray(answer, size); cout << endl << endl << Медиана - это элемент << size / 2 << из массива endl << size << сортированных элементов. << endl Для данного расчета медиана равна answer[size / 2] endl endl; void mode(const int freq[ ], int answer[ ], int size) { int largest = 0, modeValue = 0; cout endl ******** endl << Мода endl endl; for (int rating = 1; rating <= 9; rating++) freq[rating] = 0; for (int j = 0; j < size; j++) ++freq[answer[j]]; cout Ответ setw(11) Частота setw(19) Гистограмма endl endl setw(54; << 1 1 2 2 endl setw(54) 5 0 5 0 5 << endl endl; for (rating = 1; rating <= 9; rating++) { cout setw(8) << rating setw(ll) freq [rating] if (freq[rating] > largest) { largest = freq[rating]; modeValue = rating; Рис. 4.17. Программа анализа данных обследования (часть 2 из 3)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |