Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Relgon
1 / 1 / 2
Регистрация: 25.03.2014
Сообщений: 20
1

Выделение памяти под двумерный массив && передача его в процедуру

19.02.2015, 22:17. Просмотров 431. Ответов 2
Метки нет (Все метки)

Доброе время суток,уважаемые читатели форума!
Только начали изучать Делфи,задали написать в принципе примитивную программу - решить квадратное уравнение,коэффициенты которого - минимальные элементы матрицы.Возникла проблема,насколько я понимаю,с передачей массива в процедуру.Судя по ошибки "exception eaccessviolation in module" я где-то вылажу за массив,но в чем именно проблема понять не могу.Прошу помощи)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
program Pr1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type
  Matrix=array of array of real;
procedure input(M:Matrix);
var i,j:Integer;
begin
for i:=0 to Length(M) do
  for j:=0 to Length(M[i]) do
    begin
    writeln('Input [',i,',',j,'] :');
    readln(M[i][j]);
    end;
end;
 
function find_min(M:Matrix):Real;
var min:real;
  i,j:integer;
begin
  min:=M[0][0];
  for i:=0 to Length(M) do
    for j:=0 to Length(M[i]) do
      begin
        if (M[i][j]<min) then min:=M[i][j];
      end;
  result:=min;
end;
var A,B,C:Matrix;
i,j,na,ma,nb,mb,nc,mc:integer;
Dis,x1,x2,p,d,r:real;
begin
writeln('Input size of matrix A, NxM');
readln(na);
readln(ma);
SetLength(A,na,ma);
readln;
input(A);
writeln('Input size of matrix B, NxM');
readln(nb);
readln(mb);
SetLength(B,nb,mb);
input(B);
writeln('Input size of matrix C, NxM');
readln(nc);
readln(mc);
SetLength(C,nc,mc);
input(C);
p:=find_min(A);
d:=find_min(B);
r:=find_min(C);
Dis:=d*d-4*p*r;
if (Dis>=0) then
  begin
    x1:=(-d+sqr(Dis))/2*p;
    x2:=(-d-sqr(Dis))/2*p;
    writeln('x1= ',x1,' x2= ',x2);
  end
else writeln('ijéñГ*ГЁГµ êîðåГ*ВіГў Г*ГҐГ¬Г*Вє');
A:=NIL;
B:=NIL;
C:=NIL;
  { TODO -oUser -cConsole Main : Insert code here }
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2015, 22:17
Ответы с готовыми решениями:

Delphi & MSSQL2K & NText - глюк!!!
Привет All. Вот в чем проблема: на сервере MSSQL 2000 валяется stored ...

DrawGrid & Drag&Drop
Здравствуйте. Суть вопроса - поставлена задача по заполнению TDrawGrid формата...

Delphi & Excel & Color
Не могу присвоить цвет ни 1 ни 2 способом, в чем беда? var FXLS: variant;...

Пропадает таб при перетаскивании его в PageControl. Drag & Dock
Здравствуйте! Работаю с Delphi6. Суть проблемы: Я хватаю таб из PageControl и...

Массив TPoint не сортируется, если процедуру переделать под X и Y - РАБОТАЕТ
Не смогу сегодня нормально спать из-за этой процедуры. Проверял много раз,...

2
northener
пофигист широкого профиля
3427 / 2326 / 631
Регистрация: 15.07.2013
Сообщений: 13,775
19.02.2015, 22:29 2
Delphi
1
for i:=0 to Length(M) - 1 do
1
Relgon
1 / 1 / 2
Регистрация: 25.03.2014
Сообщений: 20
19.02.2015, 22:49  [ТС] 3
Действительно,ошибка была в этом.Большое спасибо!

Кликните здесь для просмотра всего текста
PS.:Выкладываю рабочий код,возможно кто-то еше столкнется с подобной проблемой)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
program Pr1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type
  Matrix=array of array of real;
procedure input(M:Matrix);
var i,j:Integer;
begin
for i:=0 to Length(M)-1 do
  for j:=0 to Length(M[i])-1 do
    begin
    writeln('Input [',i,',',j,'] :');
    readln(M[i][j]);
    end;
end;
 
function find_min(M:Matrix):Real;
var min:real;
  i,j:integer;
begin
  min:=M[0][0];
  for i:=0 to Length(M)-1 do
    for j:=0 to Length(M[i])-1 do
      begin
        if (M[i][j]<min) then min:=M[i][j];
      end;
  result:=min;
end;
var A,B,C:Matrix;
i,j,na,ma,nb,mb,nc,mc:integer;
Dis,x1,x2,p,d,r:real;
begin
writeln('Input size of matrix A, NxM');
readln(na);
readln(ma);
SetLength(A,na,ma);
 
input(A);
writeln('Input size of matrix B, NxM');
readln(nb);
readln(mb);
SetLength(B,nb,mb);
input(B);
writeln('Input size of matrix C, NxM');
readln(nc);
readln(mc);
SetLength(C,nc,mc);
input(C);
p:=find_min(A);
d:=find_min(B);
r:=find_min(C);
Dis:=d*d-4*p*r;
if (Dis>=0) then
  begin
    x1:=(-d+sqr(Dis))/2*p;
    x2:=(-d-sqr(Dis))/2*p;
    writeln('x1= ',x1,' x2= ',x2);
  end
else writeln('ijéñГ*ГЁГµ êîðåГ*ВіГў Г*ГҐГ¬Г*Вє');
A:=NIL;
B:=NIL;
C:=NIL;
  { TODO -oUser -cConsole Main : Insert code here }
end.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2015, 22:49

Двумерный массив и его обработка
здравствуйте =) помогите пожалуйста с такой задачей: Необходимо получить...

Дан двумерный массив 5*5 Заменить все его отрицательные элементы нулем
Я в Делфи недавно и нам задали написать две программы. Если кто-нибудь знает...

Дан двумерный массив размерности 10х10. Заполнить его случайными числами на отрезке
можете помочь? Дан двумерный массив размерности 10х10. Заполнить его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru