Как найти 3 наименьших элемента в одномерном массиве? - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Собственно вот моё задание: Дана квадратная матрица А, составьте программу формирования последовательности В, элементами которой являются элементы матрицы А расположенные под главной диагональю. В полученной последовательности найдите 3 наименьших элемента. Если количество между первый и вторым элементом совпадает с количеством между вторым и третьим то поменять их местами сохранив порядок следования(без доп массива) линейный массив вывести в строку И мне не понятно как в массиве найти 3 наименьших элемента, я могу найти один но 3 хз как + не используя доп.массив, если кто-то делал что-то подобное напишите как делали. Была идея сортировать методом хоара а потом 3 последних элемента считать минимальными но это доп.массив(

Решение задачи: «Как найти 3 наименьших элемента в одномерном массиве?»

textual
Листинг программы
const
n=10; //кол-во элементов в массиве
 
var
  a: array[1..n] of real;  //основной массив
  i: integer;
  
 procedure Out (var a: array[1..n] of real);  //вывод массива
 var i: integer;
 begin
 write('Массив:');
 for i:=1 to n do
 write(' ',a[i]);
     end;
 
procedure Swap(var a,b: real); //меняет 2 числа местами
var temp: real;
begin
 temp:=a; a:=b; b:=temp;
 end;
 
 function MinEl(var b: array[1..n] of real; el: integer): integer;  //ищет в массиве номер минимального элемента, начиная с номера el
 var u: integer;
 begin
 result:=el;
 for u:= el+1 to n do
 if b[u]<b[result] then result:=u;
   end;
   
 procedure Three (b: array[1..n] of real);  //основная процедура по поиску трех минимумов: создает копию массива a (чтобы основной массив не изменялся)
 var i: integer;
 begin
 write('Три наименьших элемента:');
  for i:=1 to 3 do   begin       //на место i-го элемента становится минимальный элемент в промежутке от i до n
  swap(b[i],b[minel(b,i)]);
  write(' ',b[i]);           //и выводится на экран
  end;
 end;
 
begin
  for i := 1 to n do                //создаем массив
      a[i] := random(101) - 50;
      Out(a);                 //выводим на экран
      writeln;
      Three(a);            //ищем три минимума
writeln;
Out(a);                        //показываем, что основной массив не изменился
            writeln;
end.

Объяснение кода листинга программы

  1. Объявляется константа n равная 10, которая определяет размер массива.
  2. Создается массив a типа array[1..n] of real, который будет содержать 10 чисел.
  3. Инициализируются случайные значения для каждого элемента массива a.
  4. Выводится на экран весь массив a.
  5. Создается процедура Out, которая выводит на экран массив a.
  6. Создается процедура Swap, которая меняет два числа местами.
  7. Создается функция MinEl, которая ищет в массиве номер минимального элемента, начиная с номера el.
  8. Создается процедура Three, которая ищет три минимума в массиве a.
  9. В основной части программы вызываются процедуры Out, Three и Out для вывода начального массива, поиска трех минимумов и вывода массива после поиска минимумов.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы