Отсортировать массив по убыванию - PascalABC.NET
Формулировка задачи:
Помогите плз)
нужно поставить элементы с 1 и 3 столбца массива как до сортировки.
то есть, к примеру, после сортировки стало: 227|0,000987|227|0,000987
а должно быть 192|0,000987|197|0,000987
Листинг программы
- var a:array[1..64,1..4] of real;
- i,j,k,g,v:integer;
- c:real;
- f1,f3: text;
- begin
- assign(f1,'3.txt');
- assign(f3,'5.txt');
- k:=192;
- for i:=1 to 64 do begin
- a[i,1]:=k;
- inc(k);
- end;
- reset(f1);
- for i:=1 to 64 do begin//Частоты букв исходного текста
- readln(f1,a[i,2]);
- end;
- g:=192;
- for i:=1 to 64 do begin
- a[i,3]:=g;
- inc(g);
- end;
- reset(f3);
- for i:=1 to 64 do begin//Частоты букв зашифрованного текста
- readln(f3,a[i,4]);
- end;
- close(f1);
- close(f3);
- for j:=2 to 2 do
- for i:=1 to 64 do
- for v:=2 to 64 do
- if a[v,j] >a[v-1,j]then begin
- c:=a[v,j];
- a[v,j]:=a[v-1,j];
- a[v-1,j]:=c;
- end;
- for j:=4 to 4 do
- for i:=1 to 64 do
- for v:=2 to 64 do
- if a[v,j] >a[v-1,j]then begin
- c:=a[v,j];
- a[v,j]:=a[v-1,j];
- a[v-1,j]:=c;
- end;
- for i:=1 to 64 do begin
- for j:=1 to 4 do
- write(a[i,j]:7:6,'|');
- writeln;
- end;
- end.
Решение задачи: «Отсортировать массив по убыванию»
textual
Листинг программы
- begin
- Randomize;
- var a : array [1..64, 1..4] of Real;
- for var i := 1 to 64 do
- begin a[i, 1] := i; a[i, 2] := Random; a[i, 3] := i; a[i, 4] := Random; end;
- var Col := 2; // Сортировка по второму столбцу
- var Row := 1;
- while Row < 64 do
- if a[Row, Col] < a[Row+1, Col] then
- begin
- Swap(a[Row, Col-1], a[Row+1, Col-1]);
- Swap(a[Row, Col ], a[Row+1, Col ]);
- if Row > 1 then Row -= 1;
- end
- else
- Row += 1;
- Col := 4; // Сортировка по четвёртому столбцу
- Row := 1;
- while Row < 64 do
- if a[Row, Col] < a[Row+1, Col] then
- begin
- Swap(a[Row, Col-1], a[Row+1, Col-1]);
- Swap(a[Row, Col ], a[Row+1, Col ]);
- if Row > 1 then Row -= 1;
- end
- else
- Row += 1;
- for var i := 1 to 64 do
- WriteLn(a[i,1]:2, ' - ', a[i,2]:6:4, ' ', a[i,3]:2, ' - ', a[i,4]:6:4);
- end.
Объяснение кода листинга программы
В данном коде представлен алгоритм сортировки массива по убыванию двух отдельных массивов, используя два различных столбца.
- Создается массив типа Real размером 64x4, заполняемый случайными значениями от 0 до 63 для каждого элемента.
- Два вложенных цикла проверяют, что текущий элемент меньше следующего в выбранном столбце. Если это так, то элементы меняются местами.
- Если текущий элемент больше следующего, то происходит переход к следующему элементу внешнего цикла.
- После завершения первого вложенного цикла, происходит переход ко второму вложенному циклу, который сортирует массив по второму столбцу.
- После завершения второго вложенного цикла, происходит вывод отсортированного массива. Список действий:
- Создание массива
- Заполнение массива
- Первый цикл сортировки
- Второй цикл сортировки
- Вывод отсортированного массива
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д