Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Помогите Plz начинающему программеру с массивами

Автор: Vardes 12.10.2005 12:48

Такая проблема,мне необходимо выявить наименьший элемент массива,какой функцией это задаётся.Буду вам очень благодарен.

Автор: volvo 12.10.2005 13:05

Vardes, как ты думаешь, FAQ для кого пишется? Для меня?
Читай вот тут: http://forum.pascal.net.ru/index.php?showtopic=2694

Автор: Vardes 12.10.2005 23:39

Только вот ответа на мой вопрос о наименьшем члене массива я так и не нашёл.
Прошу о помощи.

Автор: klem4 12.10.2005 23:43

Ну так воспользуйся поиском, задач на массивы и матрици на форуме решено несколько сотен наверное !

Автор: volvo 12.10.2005 23:51

klem4, все есть в FAQ-е:
http://forum.pascal.net.ru/index.php?showtopic=1212&view=findpost&p=15707 (Задача №7)

Автор: Vardes 13.10.2005 0:12

Ввот столько уже прочитал,а точного ответа я не получил.
Увидел действия только с помощью процедур,но извините я не могу их пока применять,так что вопрос остаётся для меня пока что насущной проблемой. :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

НУ тоды изваняйте <_< .Видно я в торопях искал,чтож поделаешь я чайник,ПАСИБА за помощь smile.gif

Автор: 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,только вот теперь понял,что константой мона,как переменной оперировать,только меньшего размера
Пример оперирования константами (в частности, изменение значения) в студию !!! smile.gif

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

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