Вход

Просмотр полной версии : массив(



Zerling
02.07.2020, 11:28
Не знаю как работать с массивами.
как сделать запись в массив последних значений температуры с смещением, т.е. (t1,0,0,0,)=>(t2,t1,0,0)...(t13,t12,t11,t10)

SlavikP
02.07.2020, 12:58
в таком виде - только через цикл

Zerling
07.07.2020, 06:06
Конечная цель - знать "угол нагрева"(отношение температура-время) для управления процессом, длящимся от минуты до трех.

Zerling
09.07.2020, 10:30
в таком виде - только через цикл


FUNCTION_BLOCK ARA
VAR_INPUT
Pt_of_r: POINTER TO ARRAY[0..16] OF Real;
// 4 байта на слово
size : UINT;
END_VAR

VAR
// шаг FOR'a
i: UINT;
// номер ячейки
ArrNUM: UINT;
END_VAR
VAR_INPUT
// значение добавляемое в массив
add2arr: REAL;
// Флаг добавления значения и сортировки массива
ad_val: BOOL := true;
END_VAR

ArrNUM:=size/4 ;

Pt_of_r^[0] := add2arr;//запись актуального значения в ячейку, иначе [0]=[1]
IF ad_val=TRUE THEN i:=0;

FOR i := 0 TO ArrNUM DO

Pt_of_r^[(ArrNUM-i+1)]:= (Pt_of_r^[(ArrNUM-i)]);// присваеваем ячейке[Х+1] значение из ячейки[Х]
END_FOR; END_IF;

Заработало.

Zerling
10.07.2020, 05:55
нереальный. Уж простите, кодю как умею.

Можно ли POINTER TO ARRAY задать только часть массива?

lara197a
10.07.2020, 19:36
Согласен с SlavikP

используйте цикл.
Кстати я выкладывал примеры много раз.

Zerling
14.07.2020, 11:58
Можно разъяснить для невежды, о каком цикле идет? Разве FOR не цикл?