Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 00:53   #1
BotoBot
 
Регистрация: 30.05.2009
Сообщений: 6
По умолчанию Матрица m*n и числа по возрастанию в ней

Есть матрица m*n. Производить сортировку матрицы так, чтобы наименьший
элемент матрицы был первым(1,1), а наибольший - последним. Ввод
элементов матрицы производить 2-я способами: в ручную для каждого
элемента и автоматически, случайными числами.

Вот до чего я дошёл.(ввод элементов случайными числами)
Код:
program matrix;
uses CRT;
type warray=array[0..1000] of integer;
var x,y,i,k,j,ii,endd:integer;
    w:warray;

begin
ClrScr;
writeln('Enters y matrix');
read(y);
writeln('Enters x matrix');
read(x);

randomize;
for i:=1 to x*y do begin
    w[i]:=random(100);
end;

ii:=0;

w[0]:=0-1;

for i:=1 to y*x do begin

    for j:=i to x*y do begin

             if w[i] > w[j] then
             begin

             w[i]:=w[j];

             end;

    end;

    writeln('');

write(w[i]:5);
ii:=ii+1;

if ii = x then begin
writeln('');
ii:=0;
end;

end;

readln(endd); {для того,чтоб не изчезало сразу}

end.
собственно говоря я знаю в чём проблема, но я не знаю как это записать.
По моему коду к примеру числа 9 8 7 6 5 4 3 2 1 и вся массивная переменная примит число 1...ммм...как бы так скзать то...Ну оно сначала сравнивает 9 с остальными, и принимает наименьшее, тоесть 1, и записывает его в х[1]. потом оно сравнивает 8 с остальными, и опять таки принимает значение 1, записывает его в x[2]. и тд...
еслиты было 9 8 7 1 6 5 4 3 2 то до единицыбы принимало значение 1, а после значение 2(так как за единицей это самое наименьшее в данном случае).
Ну вобщем мою систему вы поняли. Оно может хорошо сравнить все числа токо 1 раз=(...
Так вот. вернёмся к примеру 9 8 7 6 5 4 3 2 1 , где всё примет значение 1. Я бы "выколол" еденичку, чтобы последующая массивная переменная не принимала его значение и тд, но, увы, не знаю как сделать...
BotoBot вне форума Ответить с цитированием
Старый 01.06.2009, 01:14   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Это вы специально матрицу сделали одномерным массивом?
Если так, то и сортируйте его именно как одномерный массив:
Код:
program matrix;
uses CRT;
type warray=array[0..1000] of integer;
var x,y,i,j,tmp:integer;
    w:warray;

begin
ClrScr;
writeln('Enters y matrix');
readln(y);
writeln('Enters x matrix');
readln(x);

randomize;
for i:=1 to x*y do
begin
 w[i]:=random(100);
end;

for i:=1 to x*y-1 do
 for j:=i+1 to x*y do
  if w[j]<w[i] then
   begin
   tmp := w[j];
   w[j] := w[i];
   w[i] := tmp;
   end;

for i:=1 to x*y do
 begin
 write(w[i]:4);
 if i mod y =0 then writeln;
 end;

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.06.2009, 01:37   #3
BotoBot
 
Регистрация: 30.05.2009
Сообщений: 6
По умолчанию

Спасибо вам огромное. Понимаете, я просто только недавно приступил к изучению языков программирования. Решил начать с процедурных, и выбрал паскаль. Литературу по паскалю читал.
Отвечаю на ваш вопрос. Нет. Я не специально сделал одномерным массивом, я просто так "видел решение"...
Скахав вашу фразу, вы подразумивали, что есть ещё какой-либо "путь". Поясните пожалуйста, что вы имели в виду. Я ведь не для когото язык учу, а для себя...
BotoBot вне форума Ответить с цитированием
Старый 01.06.2009, 01:49   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Просто матрица подразумевает создание двумерного массива. То есть
Код:
warray = array[1..100,1..100] of integer;
и обращение, соответственно, по двум индексам:
Код:
matrix[i, j]
Но для данной задачи действительно удобно использовать одномерный массив, т.к. легче сортировать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица, операции с ней jorjinho10 Паскаль, Turbo Pascal, PascalABC.NET 0 30.04.2009 18:58
вычислить целую часть произведения синуса от числа образованного заданной цифрой и иследующей за ней на xx__vanya__xx Паскаль, Turbo Pascal, PascalABC.NET 0 13.11.2008 22:46