Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Примеры обработки одномерных массивов ⇐ ПредыдущаяСтр 6 из 6
Пример 1. Вычислить среднее арифметическое значение элементов массива
Блок-схема
Си-программа
#defineNMAX500 intmain() { inti, // параметр цикла n; // кол-во элементов массива floatS; // среднее арифметическое значение floatX[NMAX]; // исходный массив //Ввод и печать n, X S=0; for(i=0; i< n; i++) S += X[i]; S /= n; //Печать S getch(); return0; } В программе переменная S используется, как сумматор. Поэтому в программе перед накоплением в переменной S суммы элементов массива X производится обнуление этой переменной оператором S = 0. Вместо этого оператора можно было использовать инициализацию переменной при ее определении, если до использования в цикле ее значение не изменялось.
Следует обратить внимание еще на одно обстоятельство. Массиву Х в программе выделяется память, необходимая для размещения Однако это означало бы, что программа может обрабатывать лишь массив, содержащий 500 элементов, но не 499 или 100. Поэтому для обеспечения универсальности работы программы обработке подвергается текущее количество элементов n в предположении, что 0< n< NMAX.
Пример 2. Вычислить среднее арифметическое значение положительных элементов массива
Блок-схема
Отличие решения этой задачи от предыдущего примера заключается в том, что перед накоплением сумы элементов массива в S проверяется его значение (оно должно быть положительным X[i] > 0). В переменной k подсчитывается количество таких чисел. В частном случае в массиве X может не быть ни одного положительного элемента (k==0). Тогда при отсутствии оператора «if (k> 0)» было бы деление на нуль, что даст неправильный результат. В программе используется оператор «if (k)», т.к. значение k может быть только нулевым или больше нуля. Си-программа
#defineNMAX500 intmain() { inti, // параметр цикла k, // счетчик положительных чисел n=10; // кол-во элементов массива floatS; // среднее арифметическое значение floatx[NMAX]; // исходный массив //Ввод и печать n, X S=k=0; for(i=0; i< n; i++) if(x[i]> 0) { S+=x[i]; k++; } if(k) S/=k; //Печать S getch(); return0; }
|