|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2006, 00:10 | #1 |
Регистрация: 20.12.2006
Сообщений: 3
|
Сортировка массива
Помогите плиз разобраться. Воть написал программу, которая должна сортировать сначала строки двумерного массива методом пузырька по убыванию, а потом столбцы методом вставки по возрастанию.
Мне кажется, что все правильно но на деле что-то не так, вылетает до завершения программы. выполнял пошагово - вылетает в процессе выполнения сортировки столбцов вставкой. процедура - vstavka. никак не могу разобраться, в чем проблема Последний раз редактировалось MuRdErDoLL; 20.12.2006 в 00:14. |
20.12.2006, 00:13 | #2 |
Регистрация: 20.12.2006
Сообщений: 3
|
вот код программы:
program lab5; {$APPTYPE CONSOLE} uses SysUtils, Math; type matrica=array[1..1000,1..1000] of real; var t:real; n,m: integer; matr: matrica; procedure vstup(var a,b:integer); begin writeln('************************** **********************************' ); writeln('****************** Laboratornaya rabota 5 ******************'); writeln('************************** **********************************' ); writeln; writeln('1)Vvedite razmer matricu (m*n) '); writeln; write('m >> '); readln(a); write('n >> '); readln(b); writeln; writeln('2)Vvedite elementu matricu '); writeln; end; procedure input(var arr:matrica; a,b:integer); var i,j: integer; begin //Заполнение матрицы элементами for i:=1 to a do for j:=1 to b do begin write('Element [',i,',',j,'] >> '); readln(arr[i,j]); end; end; procedure print(var arr:matrica; a,b:integer); var i,j: integer; begin for i :=1 to a do begin for j:= 1 to b do begin write(arr[i,j]:0:0,' '); end; writeln; end; end; procedure puzirok(var arr:matrica;temp:real; a,b:integer); var i,j,k: integer; begin for i:=1 to a do begin for k:=1 to b do for j:=1 to b-k do if arr[i,j]<arr[i,j+1] then begin temp:=arr[i,j]; arr[i,j]:=arr[i,j+1]; arr[i,j+1]:=temp; end; end; end; procedure vstavka(var arr:matrica;temp:real; a,b:integer); var i,j,k: integer; begin for k:=1 to b do begin for i:=2 to a do begin temp:=arr[i,k]; j:=i-1; while (arr[j,k]>temp) and (j>0) do begin arr[j+1,k]:=arr[j,k]; j:=j-1; end; arr[j+1,k]:=temp; end; end; end; begin {Задание: Дан двумерный массив. Отсортировать его элементы по строкам методом пузырька по убыванию. Затем по столбцам методом вставки по возрастанию.} vstup(m,n); input(matr,m,n); //Вывод матрицы writeln; writeln('************************** **********************************' ); writeln; writeln('3)Vnewniy vid matricu:'); writeln; print(matr,m,n); writeln; //Сортировка строк методом "пузырька" по убыванию puzirok(matr,t,m,n); writeln; writeln('Matrica posle sortirovki strok'); writeln; print(matr,m,n); writeln; //Сортировка столбцов методом вставки по возрастанию vstavka(matr,t,m,n); writeln; writeln('Matrica posle sortirovki stolbcov'); writeln; print(matr,m,n); writeln; readln; end. Последний раз редактировалось SuperVisor; 20.12.2006 в 18:44. Причина: Немного уменьшил размер сообщения. |
20.12.2006, 00:58 | #3 |
Регистрация: 20.12.2006
Сообщений: 3
|
и еще... прикол в том, что если, допустим, в качестве элементов массива ввести числа ( 2 7 1 6 4 3 8 4 5 ) или ( 4 2 5 4 3 7 6 5 4) , то программа работает, а если ( 6 1 8 4 9 2 7 3 1) - то нет
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка массива С/С++ | Dagget | Помощь студентам | 1 | 16.07.2008 12:18 |
Сортировка массива | Dagmaria | Общие вопросы C/C++ | 5 | 05.07.2008 00:23 |
Сортировка массива | Kraven | Общие вопросы Delphi | 3 | 25.06.2008 18:22 |
Сортировка массива...? | Roberto | Помощь студентам | 2 | 11.04.2008 13:32 |
Сортировка массива | vitalik007 | Общие вопросы Delphi | 2 | 22.09.2007 20:04 |