- •Сборник лабораторных работ
- •Аннотация
- •Введение
- •1Краткая теоретическая справка Математические функции стандартной библиотеки с
- •Справочная информация о величинах геометрических фигур
- •Расстояние между двумя точками
- •2Индивидуальные задания
- •3Краткая теоретическая справка
- •4Типовые задачи
- •5Индивидуальные задания
- •6Краткая теоретическая справка
- •Представление аналитических функций в виде рядов Тейлора
- •Общая схема алгоритма суммирования
- •Учет рекуррентной зависимости членов ряда
- •Учет погрешности вычисления суммы членов ряда
- •7Индивидуальные задания
- •8Краткая теоретическая справка Свойства делимости
- •Работа с цифрами числа
- •Типовые задачи
- •9Индивидуальные задания
- •10Краткая теоретическая справка Типовые задачи
- •11Индивидуальные задания
- •12Краткая теоретическая справка Обход матрицы
- •13Индивидуальные задания
- •14Краткая теоретическая справка
- •15Индивидуальные задания
- •16Краткая теоретическая справка
- •17Индивидуальные задания
- •18Краткая теоретическая справка
- •19Индивидуальные задания
- •20Краткая теоретическая справка
- •21Индивидуальные задания
- •22Индивидуальные задания
10Краткая теоретическая справка Типовые задачи
Написать программу, которая для целочисленного массива из 10 элементов определяет, сколько положительных элементов располагается между его максимальным и минимальным элементами
Алгоритм в общем виде:
Определить, где в массиве расположены его минимальный и максимальный элементы, то есть найти их индексы.
Просмотреть все элементы, расположенные между ними. Если элемент массива больше нуля, увеличить счетчик элементов на единицу.
Если рассмотреть тестовый пример, можно наглядно представить себе алгоритм решения задачи:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
6 |
-8 |
15 |
9 |
-1 |
3 |
5 |
-10 |
12 |
2 |
|
|
max |
+ |
|
+ |
+ |
min |
|
|
Порядок расположения элементов в массиве заранее неизвестен, и сначала может следовать как максимальный, так и минимальный элемент. Поэтому прежде, чем искать сумму положительных элементов, требуется определить порядок этих индексов.
Уточненный алгоритм:
Определить, где в массиве расположены его минимальный и максимальный элементы:
задать начальные значения для индексов максимального и минимального элементов
просмотреть массив, поочередно сравнивая каждый его элемент с ранее найденными минимумом и максимумом. Если очередной элемент больше максимума или меньше минимума, изменить значение соответствующего индекса
Определить границы просмотра массива для поиска положительных элементов, находящихся между максимальным и минимальным элементами:
если максимум расположен в массиве раньше, чем минимум, принять левую границу просмотра равной индексу максимума, иначе – индексу минимума
если максимум расположен в массиве раньше, чем минимум, принять правую границу просмотра равной индексу минимума, иначе – индексу максимума
Обнулить счетчик положительных элементов. Просмотреть массив в указанном диапазоне. Если очередной элемент массива больше нуля, увеличить счетчик элементов на единицу.
#include <iostream.h>
void main(){
const int n = 10;
int a[n];
int i, imax, imin, count;
cout << "Введите элементы массива:\n";
for(i 0; i<n; i++)
cin >> a[i];
for(i = imax = imin = 0; i<n; i++){
if(a[i] > s[imax]) imax = i;
if(a[i] < s[imax]) imin = i;
}
cout<<"\nmax = "<<a[imax]<<" min = "<<a[imin]; // отладка
int ibeg = imax < imin ? imax : imin;
int iend = imax < imin ? imin : imax;
cout<<"\nibeg = "<<ibeg<<" iend = "<<iend; // отладка
for(count = 0, i = ibeg + 1; i < iend; i++)
if(a[i] > 0) count++;
cout<<"Количество положительных элементов: "<<count<<"\n";
}
После нахождения каждой величины вставлена отладочная печать. Это один из самых простых, но вполне эффективных способов отладки.
Тестовых примеров для этой задачи должно быть по крайней мере три для случаев, когда:
a[min] расположен левее a[max]
a[min] расположен правее a[max]
a[min] и a[max] совпадают