Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите Plz начинающему программеру с массивами
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Vardes
Такая проблема,мне необходимо выявить наименьший элемент массива,какой функцией это задаётся.Буду вам очень благодарен.
volvo
Vardes, как ты думаешь, FAQ для кого пишется? Для меня?
Читай вот тут: Массивы. Матрицы. Типичные задачи.
Vardes
Только вот ответа на мой вопрос о наименьшем члене массива я так и не нашёл.
Прошу о помощи.
klem4
Ну так воспользуйся поиском, задач на массивы и матрици на форуме решено несколько сотен наверное !
volvo
klem4, все есть в FAQ-е:
FAQ: Решения: МАТРИЦЫ, МАССИВЫ. (Задача №7)
Vardes
Ввот столько уже прочитал,а точного ответа я не получил.
Увидел действия только с помощью процедур,но извините я не могу их пока применять,так что вопрос остаётся для меня пока что насущной проблемой. :fire:
klem4
ГДЕ тыт тут увидел процедуру, 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
НУ тоды изваняйте <_< .Видно я в торопях искал,чтож поделаешь я чайник,ПАСИБА за помощь smile.gif
Vardes
Вот тут ещё хотел спросить,задаю я к примеру матрицу произвольного размера,для этого мне необходимо поменять константы,определяющие количество строк и столбцов.Для этого я как раз и применяю диррективу 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
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
Вообще, будь внимательнее, старайся разобраться сам, это все не от того, что хочется сделать с разными там absolute, а из-за спешки и невнимательности.
Я вообще не понял, зачем в той программе вводить искусственные переменные. Константам пользоваться нельзя?
Vardes
Так вот от неимения большого опыта думал,что для того,чтобы задать размер матрицы,непременно надо изменять переменные,вот и вычитал в инете про ABSOLUTE,только вот теперь понял,что константой мона,как переменной оперировать,только меньшего размера.
Вот тут ещё проблемка,мне необходимо поменять строки местами.Если знать,какого порядка у тебя матрица,то легко мона адать замену друг на друга элементов строк,а что делать,когда не знаешь порядок матрицы(т.е. он произволен) ;)
Vardes
ДА,вот ещё процедурами и функциями мне пользоваться пока нельзя. :no:
volvo
Цитата(Vardes @ 14.10.2005 19:50)
вычитал в инете про ABSOLUTE,только вот теперь понял,что константой мона,как переменной оперировать,только меньшего размера
Пример оперирования константами (в частности, изменение значения) в студию !!! smile.gif

Цитата
а что делать,когда не знаешь порядок матрицы(т.е. он произволен)
Ты в любом случае должен знать, какой у тебя размер матрицы, если я, например, скажу тебе, "поменяй местами первую строку с предпоследней", но не скажу, какая именно это предпоследняя, то даже ты (естественный интеллект) задачу не решишь, что ты хочешь от компьютера?

Ты бы ВНИМАТЕЛЬНО читал то, что тебе отвечают. Я уже говорил про динамические матрицы, это то, что тебе нужно. Могу еще раз повторить.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.