IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сортировка: просеивание, Не могу найти ошибку!!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Женский
Реальное имя: Люда

Репутация: -  0  +


Всем привет! Задача у меня просортировать строки матрицы методом просеивания. По аналогии нашедшейся здесь программы (http://forum.pascal.net.ru/index.php?showtopic=8208 ), сделала свою, но она почему съедает элементы, не могу понять почему. посмотрите пожалуста!

program lab6;
uses crt,pros;
Var
i,n,j,m: Integer;
a: matr;
begin
write('Vvedite koli4estvo strok=');read(n);
write('Vvedite koli4estvo stolbcov=');read(m);
writeln('Vvedite e-ti massiva');
for i:=1 to n do
begin
for j:=1 to m do
read(a[i,j]);
readln;
end;
sort(a,n,m);
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:3);
writeln;
end;
readkey;
end.

Подключаемый модуль (где впринципе и лежит сортировка):

Unit pros;

Interface
type matr= array[1 .. 100,1..100] of integer;
procedure sort(var a: matr; n,m: integer);

Implementation
procedure sort;
var
i,j,t,l : integer;
begin
for i:=1 to n do
for j:=1 To m do
begin
t:= a[i,j];
l:=j-1;
while (t<a[i,l+1]) and (l>=0) do
begin
a[i,l+1]:= a[i,l];
l:=l-1;
end;
a[i,l+1]:=t;
end;
end;
end.


Сообщение отредактировано: КрАсАвИцА -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Вообще-то ты скопировала не то. Там постом ниже, volvo привел код
http://forum.pascal.net.ru/index.php?s=&sh...indpost&p=56009


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Женский
Реальное имя: Люда

Репутация: -  0  +


Да знаю я, что volvo привел код, но как он его привел мне не подходит! Я написала тоже самое но более просто, и программа работает неправильно! Мне нужно понять почему неправильно... 2 часа проверяла ну никак не могу найти. Хелпппп!

Сообщение отредактировано: КрАсАвИцА -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Я написала тоже самое но более просто
smile.gif Если бы ты написала то же самое, оно бы работало... Ты для начала определись, тебе "шашечки, или ехать?" (С)...

Если задача в том, чтобы обязательно изобрести свой велосипед, то изобретай сама, ибо если его изобретем мы, это будет уже наш общий велосипед... А если мое решение тебе подходит, но по каким-то причинам ты не можешь его подключить, то объясни, по каким именно, я постараюсь помочь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 5
Пол: Женский
Реальное имя: Люда

Репутация: -  0  +


Почему не подходит? Если я напишу не так как нас учили, то это конечно вызовет сомнения. Я понимаю что иногда составление матрицы как массив массивов это удобно, но мне не подходит, мне надо обязательно array[1 .. 100,1..100] of integer + к этому мы так же не изучали такие операторы как Pred, Dec, Succ. (Хотя я про них нашла и поняла что они делают, но опять же их использовать я не могу, сам понимаешь будет видно что я где то подсмотрела) Я постаралась заменить на вроде бы(!) эдентичные.. видимо они не совсем эдентичны smile.gif ПОмогите тогда исправить...

Сообщение отредактировано: КрАсАвИцА -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Николай

Репутация: -  -4  +


Цитата
matr
что это такое я не вижу чтоб это было описаннно в type
Да и собственно Type'a нет

Сообщение отредактировано: Студентик13 -


--------------------
Учение есть учение, а свет есть свет и ненадо обобщать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Ну, хорошо... Вот процедура, сортирующая матрицу, написанная "как тебя учили":
const
max_n = 100;
max_m = 100;

n = 4;
m = 4;

Type
matrix = array[1 .. max_m, 1 .. max_n] of integer;

Procedure Insert(Var ar: matrix; m, n: Integer);
Var k, i, j, T: Integer;
Begin
For k := 1 to m do

For i := 1 To n do
Begin
T := ar[k, i];
j := i - 1;
While (T < ar[k, j]) and (j > 0) Do
Begin
ar[k, j + 1] := ar[k, j]; Dec(j);
End;
ar[k, j + 1] := T;
End;
End;

var
a: matrix;

var
i, j: integer;

begin
randomize;
For i := 1 To m Do
For j := 1 To n Do
a[i, j] := Random(20);

writeln('до:');
For i := 1 To m Do Begin
For j := 1 To n Do
Write(a[i][j]:5);
WriteLn
End;

Insert(a, m, n);

writeln('после:');
For i := 1 To m Do Begin
For j := 1 To n Do
Write(a[i][j]:5);
WriteLn
End;

End.

Разбивай на модули и пользуйся...

Студентик13, ты внимательно смотрел? Про модули слышал когда-нибудь?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 5
Пол: Женский
Реальное имя: Люда

Репутация: -  0  +


Пасипа wub.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.04.2024 2:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name