Помогите пожалуйста
Есть стринг грид с такими значениями:
- 600 600 1400 600 3000
- 1500 800 700 1000 4000
- 900 4800 700 600 7000
Вопрос: как поделить первые три столбца на последний т.е 600 на 3000 1500 на 4000 900 на 7000 также нужно поделить и остальные два,и как потом работать с полученными числами
циклами поэлементно...
не совсем понятно, в чем проблема.
Мне кажется тут речь о том, что Pirate не знает как обратиться к ячейкам StringGrid и получить оттуда нужные данные.
Form1.StringGrid1.Cells[i,j] - так ты обращаешься к элементу стрингрида, где i - номер столбика (0..n), а j - номер ряда (0..n) - заметь, что отличается от массивов. Так как ты работаешь со строкой, можешь объявить переменную типа string (например s) и присвоить ей значение ячейки StringGrid, например s := Form1.StringGrid1.Cells[0,0] - верхний левый элемент. Теперь, используя функцию StrToInt, ты можешь из строки получить число типа integer (с вещественными аналонично StrToFloat), а можно и сделать сразу a := StrToInt (Form1.StringGrid1.Cells[0,0]), где а - переменная типа integer. Теперь, используя цикл for, можно производить различные манипуляции с данными ячеек StringGrid, что тебе и требуется.
Отредактировано -> см. пост Better Kind.
Покажи как ты делаешь и станет понятнее откуда ошибка. Допустим мы хотим занести данные из 1го по счёту столбца в массив : for i := 1 to N do massiv[i] := StrToInt (Form1.StringGrid1.Cells[0,i - 1]); То есть проходим по строкам, а столбик константный, если же ты хочешь занести в массив одновременно несколько столбиков со значениями, необходим ещё внешний цикл по столбикам.
Я просто показал пример как загнать данные в массив. Я же не использовал деление.
Вообщем я понял что нужно - поделить 3 столбца на последний, а результаты загнать в массив и вывести в мемо - как?
Ошибок не возникает, но как сделать деление циклами поочередно?
Приведи пожалуйста пример исходных данных и данных на выходе, непонятно как заполнять массив. Допустим поделили все элементы первого столбика на последний, записали в массив. Потом поделил второй на последний, после этого продолжаем писать в тот же массив или создаём и заполняем новый?
Вообщем я начал потихоньку разбираться, тип должен быть Реал т.к при StrToInt возникает ошибка
Я со стринггридом не дружу честно говоря но и не жду пока сделают всё за меня как препдположил Volvo
Набросков вот именно что нет, я не могу понять как всё это дело после деления присвоить массиву
Volvo два вложенных цикла т.е For i:=0 to StringGrid.ColCount-1 do For i:=0 to StringGrid.RowCount-1 do
Так ещё в чем проблема предпоследний столбец не используется,что делать?
Добавлено через 9 мин.
У меня это только первый пункт решения моей задачи
Какой массив должен быть в результате :
A= 0,2 0,375 0,12
0,13 0,2 0,68
0,2 0,25 0,85
100
Потом мне необходимо отнять получ массив от массива 010 т.е от еденичной матрицы и найти определитель 001
Помогите сделать хотя бы деление столбцов на последний
Для заполнения
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='600';
StringGrid1.Cells[0,1]:='1500';
stringgrid1.Cells[0,2]:='900';
StringGrid1.Cells[1,0]:='400';
StringGrid1.Cells[1,1]:='800';
stringgrid1.Cells[1,2]:='4800';
StringGrid1.Cells[2,0]:='1400';
StringGrid1.Cells[2,1]:='700';
stringgrid1.Cells[2,2]:='700';
StringGrid1.Cells[3,0]:='600';
StringGrid1.Cells[3,1]:='1000';
stringgrid1.Cells[3,2]:='600';
StringGrid1.Cells[4,0]:='3000';
StringGrid1.Cells[4,1]:='4000';
stringgrid1.Cells[4,2]:='7000';
end;
Вот как я сделал:
procedure TForm1.Button2Click(Sender: TObject);
var A:array [0..3] of real;
B:array [0..3] of real;
C:array [0..3] of real;
i : integer;
begin
try
for i:=0 to StringGrid1.RowCount-1 do
begin
A[i] := strtofloat(StringGrid1.Cells[0,i]) / strtofloat(StringGrid1.Cells[StringGrid1.ColCount-1,i]);
B[i]:=strtofloat(StringGrid1.Cells[1,i]) / strtofloat(StringGrid1.Cells[StringGrid1.ColCount-1,i]);
C[i]:=strtofloat(StringGrid1.Cells[2,i]) / strtofloat(StringGrid1.Cells[StringGrid1.ColCount-1,i]);
здесь набросок вычитания единичной матрицы из полученой
можно как цикл оформить это всё?
A[0]:=1-A[0];
A[1]:=0-a[1];
A[2]:=0-a[2];
B[0]:=0-b[0];
B[1]:=1-b[1];
B[2]:=0-b[2];
C[0]:=0-c[0];
C[1]:=0-c[1];
C[2]:=1-c[2];
Memo1.Lines[i]:=FloatTostr(c[i]);
end;
except
on EConvertError do MessageBox(Form1.Handle,'Неправильный ввод данных!',nil,0);
on EZeroDivide do MessageBox(Form1.Handle,'Деление на ноль нах!',nil,0);
end;
var A:array [0..3,0..3] of real;
i : integer;
begin
try
for i:=0 to StringGrid1.RowCount-1 do
begin
Вот сделал двумерный массив помогите транспанировать или сделать вывод в Мемо построчно
A[i,0] := strtofloat(StringGrid1.Cells[0,i]) / strtofloat(StringGrid1.Cells[StringGrid1.ColCount-1,i]);
A[i,1]:=strtofloat(StringGrid1.Cells[1,i]) / strtofloat(StringGrid1.Cells[StringGrid1.ColCount-1,i]);
A[i,2]:=strtofloat(StringGrid1.Cells[2,i]) / strtofloat(StringGrid1.Cells[StringGrid1.ColCount-1,i]);
Memo1.Lines[i]:=FloatTostr(A[i,0]);
end;
except
on EConvertError do MessageBox(Form1.Handle,'Неправильный ввод данных!',nil,0);
on EZeroDivide do MessageBox(Form1.Handle,'Деление на ноль нах!',nil,0);
end;
end;
viagra pfizer 50 mg
Xenical Manufacturer Coupon
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. https://starcmn.com/play-like-a-pro-with-these-online-casino-tips/