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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2015, 18:55   #1
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию Delphi. Массивы

Все доброго вечера. Вот значит задачка: Дана вещественная матрица размером NхM, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наименьший по модулю элемент.
Я ее решил, хотя правильно или нет, не знаю, но ответы вроде выдает
Код:
procedure TForm1.Button1Click(Sender: TObject);
var n,m,i,j:integer; a:array[1..100,1..100] of real; min:real;
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
stringgrid1.RowCount:=n;
stringgrid2.RowCount:=n;
stringgrid1.ColCount:=m;
stringgrid2.ColCount:=m;
for i :=0 to n-1 do
begin
for j:=0 to m-1 do
begin
a[i,j]:=random(100);
stringgrid1.Cells[i,j]:=floattostr(a[i,j]);
end;
end;
min:=abs(a[1,1]);
for i := 0 to n-1 do
begin
for j:=0 to m-1 do
if abs(a[i,j])<min then min:=abs(a[i,j]);
end;
for i :=0 to n-1 do
begin
for j:=0 to m-1 do
begin
begin
a[i,j]:=a[i,j]/min;
stringgrid2.Cells[i,j]:=floattostr(a[i,j]);
end;
end;
end;
end;


end.
Теперь мне нужно ее переделать в димаческий массив. Не подскажите как это осуществлить?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var n,m,i,j:integer; a:array of array of real; min:real;
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
stringgrid1.RowCount:=n;
stringgrid2.RowCount:=n;
stringgrid1.ColCount:=m;
stringgrid2.ColCount:=m;
Setlength(a,m,n);
for i :=0 to n-1 do
begin
for j:=0 to m-1 do
begin
a[i,j]:=random(500);
stringgrid1.Cells[i,j]:=floattostr(a[i,j]);
end;
end;
min:=abs(a[1,1]);
for i :=0 to n-1 do
begin
for j:=0 to m-1 do
if abs(a[i,j])<min then min:=abs(a[i,j]);
end;
for i :=0 to n-1 do
begin
for j:=0 to m-1 do
begin
begin
a[i,j]:=a[i,j]/min;
stringgrid2.Cells[i,j]:=floattostr(a[i,j]);
end;
end;
end;
end;


end.
Мои предположения, но потом у меня ошибка выскакивает, но при маленьких значениях программа работает правильно. Ошибка вот такая: " Floating point division by zero ". Это ошибка деления на 0, только не могу понять где ее исправить.

Последний раз редактировалось Stilet; 31.03.2015 в 19:37.
Tony Hudson вне форума Ответить с цитированием
Старый 31.03.2015, 19:36   #2
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию

Вопрос таков:" Как сделать генерацию чисел, не с 0, а с 1? "
Tony Hudson вне форума Ответить с цитированием
Старый 31.03.2015, 19:47   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
...:=1+random(500);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2015, 19:53   #4
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию

Спасибо огромное
Tony Hudson вне форума Ответить с цитированием
Старый 31.03.2015, 20:30   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуйста.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi - массивы leshaiitp Помощь студентам 14 25.11.2012 14:25
массивы delphi Blue Sky Помощь студентам 2 13.01.2011 12:35
Delphi(массивы) Mishqa Помощь студентам 3 18.04.2010 13:41
Delphi - массивы Shadow_rus Помощь студентам 2 06.12.2009 20:17
Массивы Delphi forumu Помощь студентам 2 11.01.2008 10:07