Ввот столько уже прочитал,а точного ответа я не получил. Увидел действия только с помощью процедур,но извините я не могу их пока применять,так что вопрос остаётся для меня пока что насущной проблемой. :fire:
klem4
13.10.2005 0:30
ГДЕ тыт тут увидел процедуру, a ?
Код
uses crt; const Len = 10 var mas: array[1 .. Len] of integer; min, n, i:integer; begin { заполняем массив } randomize; for i:=1 to Len do mas[i]:=random(100);
{ собственно сортировка } min:=mas[1]; {начальный минимальный эл-т} for i := 1 to Len do begin if min<mas[i] then begin min:=mas[i]; n:=i; end; end;
{ В n содержится номер минимального элемента } end.
Vardes
13.10.2005 0:39
НУ тоды изваняйте <_< .Видно я в торопях искал,чтож поделаешь я чайник,ПАСИБА за помощь
Vardes
13.10.2005 1:08
Вот тут ещё хотел спросить,задаю я к примеру матрицу произвольного размера,для этого мне необходимо поменять константы,определяющие количество строк и столбцов.Для этого я как раз и применяю диррективу ABSOLUTE,вот пример проги:
const n=100; m=100; var a:array [1..n,1..m] of integer; b:word absolute n:50; {изменение констант} d:word absolute m:50; i,j:integer; begin readln(b,d); for i:=1 to b do for j:=1 to d do read (a[i,j]); for i:=1 to b do begin for j:=1 to d do write(a[i,j]);
writeln; end; end.
Проблема то в том,что построение идёт только квадратных матриц размера (m) или (d),а вот по переменной (n) или (B) построение не идёт.Короче всё время мторится матрица mxm,в чём проблема,понять пока не могу.
volvo
13.10.2005 1:43
Vardes, во-первых, как начинающему программеру (ты сам об этом говорил в названии темы) я бы тебе посоветовал пока с Absolute НЕ работать, уж очень это... как бы сказать... нестандартно, что-ли... Это первое.
Второе: директива Absolute предназначена для совмещения адресов переменных... Понимаешь, именно переменных, а не констант, потому что константы НЕ ХРАНЯТСЯ в сегменте данных программы вместе с переменными. Если ты хочешь менять константы, то описывай их как переменные.
Не надо заниматься хаком, это может ОЧЕНЬ мешать, например, при переходе на другой компилятор или на другую платформу...
P.S. Твоя задача решается с использованием динамической памяти (ищи по форуму, я показывал). Только не надо говорить, что это для тебя сложно. Ты сам полез в дебри...
Еще одно: если ты действительно думаешь, что от того, что ты сделал значения m и n поменялись - попробуй сделать вот так:
const n=100; m=100; var a:array [1..n,1..m] of integer; b:word absolute n:50; d:word absolute m:50; i,j:integer; begin readln(b,d); writeln('n = ', n); writeln('m = ', m); { далее - по тексту... }
:D
Все, чего ты добился - это "залез" в ячейку памяти с адресом 100:50, или $64:$32, и там у тебя хранятся и значение B и значение D :yes:
Dark_Snake
14.10.2005 9:55
Вообще, будь внимательнее, старайся разобраться сам, это все не от того, что хочется сделать с разными там absolute, а из-за спешки и невнимательности. Я вообще не понял, зачем в той программе вводить искусственные переменные. Константам пользоваться нельзя?
Vardes
15.10.2005 0:50
Так вот от неимения большого опыта думал,что для того,чтобы задать размер матрицы,непременно надо изменять переменные,вот и вычитал в инете про ABSOLUTE,только вот теперь понял,что константой мона,как переменной оперировать,только меньшего размера. Вот тут ещё проблемка,мне необходимо поменять строки местами.Если знать,какого порядка у тебя матрица,то легко мона адать замену друг на друга элементов строк,а что делать,когда не знаешь порядок матрицы(т.е. он произволен) ;)
Vardes
15.10.2005 0:55
ДА,вот ещё процедурами и функциями мне пользоваться пока нельзя. :no:
volvo
15.10.2005 1:15
Цитата(Vardes @ 14.10.2005 19:50)
вычитал в инете про ABSOLUTE,только вот теперь понял,что константой мона,как переменной оперировать,только меньшего размера
Пример оперирования константами (в частности, изменение значения) в студию !!!
Цитата
а что делать,когда не знаешь порядок матрицы(т.е. он произволен)
Ты в любом случае должен знать, какой у тебя размер матрицы, если я, например, скажу тебе, "поменяй местами первую строку с предпоследней", но не скажу, какая именно это предпоследняя, то даже ты (естественный интеллект) задачу не решишь, что ты хочешь от компьютера?
Ты бы ВНИМАТЕЛЬНО читал то, что тебе отвечают. Я уже говорил про динамические матрицы, это то, что тебе нужно. Могу еще раз повторить.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.