Лабораторная работа № 5.
Поиск экстремума в одномерном массиве

1. Постановка задачи

Найти номер наименьшего по абсолютной величине элемента массива x. Ввод исходных данных осуществляется из файла, вывод результатов – в файл. Для передачи имён файлов должны использоваться параметры программы.

2. Таблица данных

Класс Имя Смысл Тип Структура Диапазон Формат
Входные данные x Исходный массив вещ. одномерный массив    
n Количество элементов массива цел. простая переменная 1 ≤ n ≤ 20  
Выходные данные imin Номер наименьшего по абсолютной величине элемента цел. простая переменная   XX
Промежуточные данные min Значение наименьшего по абсолютной величине элемента вещ. простая переменная    
i Счётчик цикла цел. простая переменная    
f Файловая переменная TextFile простая переменная    

3. Аномалии

Недостаточно параметров. Не существует файл с исходными данными.

4. Входная форма

5. Выходная форма

6. Тестовые примеры

№ теста Входные данные Ожидаемые результаты Смысл теста
1 n = 5
x = {12, 3, -2, 5, 8}
imin = 3 Минимальный по модулю элемент находится в середине массива. Минимальный по модулю элемент совпадает с минимальным элементом.
2 n = 5
x = {12, 3, 6, -5, 8}
imin = 2 Минимальный по модулю элемент находится в середине массива. Минимальный по модулю элемент не совпадает с минимальным элементом.
3 n = 4
x = {1, -5, 7, 13}
imin = 1 Минимальный по модулю элемент – первый в массиве. Минимальный по модулю элемент не совпадает с минимальным элементом.
4 n = 4
x = {-25, -15, -10, -7}
imin = 4 Минимальный по модулю элемент – последний в массиве. Минимальный по модулю элемент не совпадает с минимальным элементом.

7. Метод

Вводим исходные данные. Присваиваем начальные значения переменным imin и min. В цикле перебираем все элементы массива (для одномерного массива можно начать со второго элемента). Если i-ый элемент по модулю меньше текущего минимума (переменная min), присваиваем новые значения переменным imin и min. Выводим полученные результаты.

8. Алгоритм

9. Программа

{ Программа поиска номера наименьшего по абсолютной величине элемента массива X } program Lab6; const nmax = 10; type mas = array [1..nmax] of real; var x: mas; min: real; n, imin, i: integer; f: TextFile; begin if ParamCount < 2 then writeln('Недостаточно параметров!'); else begin if not FileExists(ParamStr(1)) then writeln('Невозможно открыть файл ''', ParamStr(1), ''' для чтения'); else begin { Ввод исходных данных } AssignFile(f, ParamStr(1)); Reset(f); readln(f, n); for i := 1 to n do read(f, x[i]); CloseFile(f); { Поиск номера наименьшего по абсолютной величине элемента массива } min := abs(x[1]); imin := 1; for i := 2 to n do if abs(x[i]) < min then begin min := abs(x[i]); imin := i; end; { Вывод полученных результатов } AssignFile(f, ParamStr(2)); Rewrite(f); writeln(f, 'Массив X из ', n:2, ' элементов/-а'); for i := 1 to n do write(f, x[i]:8:2); writeln(f); writeln(f); writeln(f, 'Номер наименьшего по абсолютной величине элемента = ', imin:2); CloseFile(f); end; end; end.