
Задан массив чисел. Составить алгоритм и программу его переработки в соответствии с вариантом
задания, организовав вывод исходного и полученного массивов. Данные для отладки выбрать самостоятельно. Задание: Определить номер и значение самого последнего минимального элемента массива. Инвертировать первую половину массива.Pascal ABC и Delphi 7

Ответы на вопрос

const
N_MAX = 100;
var
m: Array [1 .. N_MAX] of Integer;
n, i, j, IndMin, buffer: Integer;
begin
Read(n);
for i := 1 to n do
Read(m[i]);
WriteLn('Подзадача 1:');
IndMin := 1;
for i := 2 to n do
if m[i] <= IndMin then
IndMin := i;
WriteLn(IndMin);
WriteLn('Подзадача 2:');
i := 1;
j := n div 2;
while i < j do begin
buffer := m[i];
m[i] := m[j];
m[j] := buffer;
i := i + 1;
j := j - 1;
end;
for i := 1 to n do
Write(m[i], ' ');
end.



Вот пример алгоритма и программы на языке Delphi 7 для решения данной задачи:
Алгоритм: 1. Ввести размер массива и сам массив. 2. Инициализировать переменные minIndex и minValue значением первого элемента массива. 3. Пройтись по всем элементам массива, начиная с первого. 4. Если текущий элемент меньше minValue, то обновить значение minValue и minIndex. 5. После окончания прохода найти последний элемент с таким же значением как minValue и запомнить его индекс lastMinIndex. 6. Если lastMinIndex находится в первой половине массива, то инвертировать все элементы с начала массива до lastMinIndex включительно. 7. Вывести исходный массив и полученный массив.
Программа на языке Delphi 7:
```pascal program Task; var n, i, minIndex, lastMinIndex: integer; minValue: real; arr: array of real; begin // Ввод размера и массива Write('Введите размер массива: '); Readln(n); SetLength(arr, n); Writeln('Введите элементы массива:'); for i := 0 to n-1 do Readln(arr[i]); // Нахождение минимального элемента и его последнего вхождения minIndex := 0; minValue := arr[minIndex]; lastMinIndex := 0; for i := 1 to n-1 do begin if arr[i] < minValue then begin minValue := arr[i]; minIndex := i; end else if arr[i] = minValue then lastMinIndex := i; end; // Инвертирование первой половины массива, если последний минимальный элемент находится в первой половине if lastMinIndex <= n div 2 then begin for i := 0 to lastMinIndex div 2 do begin // Обмен значений элементов arr[i] := arr[i] + arr[lastMinIndex - i]; arr[lastMinIndex - i] := arr[i] - arr[lastMinIndex - i]; arr[i] := arr[i] - arr[lastMinIndex - i]; end; end; // Вывод исходного и полученного массивов Writeln('Исходный массив:'); for i := 0 to n-1 do Write(arr[i]:0:2, ' '); Writeln; Writeln('Полученный массив:'); for i := 0 to n-1 do Write(arr[i]:0:2, ' '); Readln; end. ```
Вы можете ввести размер массива и элементы самостоятельно, чтобы выполнить программу и увидеть результат.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili