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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2010, 23:17   #11
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Размерность массива задаётся произвольно, точнее - количество столбцов - всегда 1, а количество строк задаётся пользователем с клавиатуры... =__=
Щас поищу инфу про SetLenght - не доводилось ранее этим пользоваться... Количество строк во всех гридах равное, да.
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 23:25   #12
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

имей ввиду, что запись:
Код:
h[i] = StrToInt(StringGrid2.Cells[i,0]);
означает i-ый элемент массива равен значению в i-ом столбце и нулевой строке StringGrid! В этом компоненте индекс столбца указывается первым!
http://www.delphibasics.ru/SetLength.php - тут про SetLength
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 19.11.2010, 23:31   #13
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Поменяла местами, написала этот SetLenght, только всё равно то же самое:
"0,65 is not a valid integer value" ну в зависимости от расчётов он разные цифры там пишет...
Код:
begin
u:=0;
SetLength(k, n);
SetLength(h, n);
for i := 1 to n do
  begin
    k[i]:=StrToInt(StringGrid1.Cells[0,i]);
    h[i]:=StrToInt(StringGrid2.Cells[0,i]);
  end;

for i:=0 to n do
begin
u:=u+(k[i]*h[i]);
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 23:36   #14
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

индексация элементов с нуля. Значит цикл
Код:
for i := 0 to n - 1
n - значение присвой до использования. Полагаю будет так:
Код:
n := StringGrid1.RowCount
Нну и в StringGrid значения должны быть соответсвующие для преобразования в Integer.
и полностью код процедуры скинь, с исправлениями.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 19.11.2010, 23:42   #15
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Roof всё равно ту же ошибку выдаёт
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 23:46   #16
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

код процедуры полностью сюда. И в StringGrid должны быть значение типа
1
5
6
9
1587
но без всяких знаков и дробных разделителей.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 19.11.2010, 23:48   #17
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

В том то и дело, что у мен Рандомайз на десятичные числа, такие как 0,25 и т.д.
Надо чтоб работал.

Вот код исправленный:

Код:
procedure TForm1.Button3Click(Sender: TObject);
var
u :integer;
i:integer;
k:array of integer;
h:array of integer;


begin
n:= StringGrid1.RowCount;
u:=0;
SetLength(k, n);
SetLength(h, n);
for i := 0 to n-1 do
  begin
    k[i]:=StrToInt(StringGrid1.Cells[0,i]);
    h[i]:=StrToInt(StringGrid2.Cells[0,i]);
  end;

for i:=0 to n do
begin
u:=u+(k[i]*h[i]);

end;
 Edit3.Text:=IntToStr(u);
end;
end.
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 23:54   #18
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Если у тебя вещественные значения в StringGrid, надо объявлять массивы типа Real:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
u :Real;
i, n:integer;
k:array of Real;
h:array of Real;


begin
n:= StringGrid1.RowCount;
u:=0;
SetLength(k, n);
SetLength(h, n);
for i := 0 to n-1 do
  begin
    k[i]:=StrToFloat(StringGrid1.Cells[0,i]);
    h[i]:=StrToFloat(StringGrid2.Cells[0,i]);
  end;

for i:=0 to n do
begin
u:=u+(k[i]*h[i]);

end;
 Edit3.Text:= FloatToStr(u);
end;
end.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 19.11.2010 в 23:58.
Roof вне форума Ответить с цитированием
Старый 20.11.2010, 00:04   #19
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Roof работает!!! Наконец-то!!! Большое вам спасибо!!!
Я думала об этом, но почему-то в итоге решила всё же интеджер сделать =__=
Ещё раз благодарю)
Sianessa вне форума Ответить с цитированием
Старый 20.11.2010, 00:07   #20
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Ты умничка, разобралась сама, я только немного подсказал
В последнем цикле тоже n - 1 будет.
Почитай про типы данных в делфи.
Удачи
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 20.11.2010 в 00:13.
Roof вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типы данных С++ werser Помощь студентам 1 13.03.2010 18:34
Типы данных psycho-coder Паскаль, Turbo Pascal, PascalABC.NET 6 04.02.2010 20:03
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03