Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сборник лабораторных работ.doc
Скачиваний:
6
Добавлен:
17.11.2019
Размер:
5.38 Mб
Скачать

10Краткая теоретическая справка Типовые задачи

  1. Написать программу, которая для целочисленного массива из 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] совпадают