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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2009, 16:24   #1
gonf
 
Регистрация: 24.04.2009
Сообщений: 6
По умолчанию Delphi 7. Действия с матрицами. прога маленькая, но не понятно в чём баг.

задача: Задана матрица Р(N,N). Найти произведение элементов матрицы, взятых с обратным знаком, исключая нулевые элементы и элементы, превышающие по значению 12,32.
Код:
type T1=array[0..10,0..10] of real;
var
    i,j,n:Byte;
    A:Real;
    X:T1;
begin
  n:=StrToInt(Edit1.Text);
  //оформление заголовков StringGrid1
  with StringGrid1 do begin
   for i:=1 to n do
    cells[0,i]:=IntToStr(i)+' строка';
   for j:=1 to n do
    cells[0,j]:=IntToStr(j)+' столбец';
   for i:=1 to n do
   for j:=1 to n do
    X[i,j]:=StrToFloat(cells[j,i]);
  end;
  //ввод матрицы по строкам
  with StringGrid1 do
   for i:=1 to n do
   for j:=1 to n do
   X[i,j]:=StrToFloat(cells[j,i]);
  //результат
  A:=1;
  for i:=1 to n do
  for j:=1 to n do
   if (x[i,j]<>0) and (x[i,j]<=12.32) then A:=A*x[i,j];
  end;
компилится, но прога выдаёт ошибку "is not a valid floating point value"
gonf вне форума Ответить с цитированием
Старый 24.04.2009, 16:32   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Все работает как надо.
Цитата:
но прога выдаёт ошибку "is not a valid floating point value"
Вы наверняка не вводите нужное количество чисел в Стриггрид. Вот он и ругается, что не может преобразовать пустоту в число.

ps Вы хоть вывод A добавьте что-ли )
Код:
ShowMessage(FloatToStr(A));
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.04.2009, 16:35   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может быть Автор неверно разделитель вводит. Может нужно запятую а вводится точка в числах.
Автор: Определи DecimalSeparator, и вместо StrToFloat используй StrToFloatDEF.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.04.2009, 17:34   #4
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Цитата:
взятых с обратным знаком,
не забывайте знак менять т.е.
Код:
if (x[i,j]<>0) and (x[i,j]<=12.32) then A:=-A*x[i,j];
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Арифметические действия над матрицами и транспонирование Axel1981 Помощь студентам 14 12.06.2010 20:20
Работа с матрицами (delphi) Майструк Татьяна Помощь студентам 3 07.04.2009 20:33
WinApi маленькая прога Blink Win Api 0 22.12.2008 13:03
Мелочь, а не понятно!!! (DELPHI) zzzzz Помощь студентам 6 03.07.2007 03:33