Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с массивом

Сергей Белявцев Мастер (2221), закрыт 15 лет назад
Приветствую, коллеги.
Имеются показания пяти счётчиков за 12 месяцев и, соотв-но, массив [1..12, 1..5].
Требуется определить суммарное потребление за каждый квартал, т.е. просуммировать показания всех счётчиков поквартально.
делаю:
var
q, i, j : integer; {q - номер квартала, i- мес., j - №счётч.}
Data : array [1..12,1..5] of real;
Total : array [1..5] of real;
...
for q := 1 to 4 do
for i := 1 to 3 do
for := 1 to 5 do
Total[q] := Total[q]+Data[i*q,j];
Но формула не правильная: выражение i*q не верно.
Например, 2 месяц 2 квартала - май, 5 месяц, а по формуле он получается равен 4 и т.д.
Помогите, пожалуйста с выражением. Или мож вообще подход в корне не верен...
Уже мозг сломал...
Лучший ответ
Александр Суворов Мастер (1709) 15 лет назад
for q := 1 to 4 do
for i := 1 to 3 do
for := 1 to 5 do
Total[q] := Total[q]+Data[(q-1)*3+i,j];
Остальные ответы
ewe 2e¶ CoЛнЫшКоcBeTиТоЧеНЬяРкО* Высший разум (307013) 15 лет назад
У тебя массив data должен быть двумерный:
data[1..4;1..5];
по счётчикам и по кварталам.
потом в цикле складываешь с 1ого по 3ий месяцы по каждому счётчику, имеешь первый квартал по каждому счётчику.
потом в цикле складываешь с 4ого по 6ой месяцы по каждому счётчику, имеешь второй квартал по каждому счётчику.
потом в цикле складываешь с 7ого по 9ый месяцы по каждому счётчику, имеешь третий квартал по каждому счётчику.
потом в цикле складываешь с 10ого по 12ый месяцы по каждому счётчику, имеешь четвёртый квартал по каждому счётчику.
Конкретную реализацию оставляю тебе :-)

Или можно месяцы перебирать так:
for kwartal:=1 to 4 do begin
data[chetchk,kwartal]:=
total[schetchk,(kwartal-1)*3+0]+
total[schetchk,(kwartal-1)*3+1]+
total[schetchk,(kwartal-1)*3+2];
end;
Gennady Гений (60122) 15 лет назад
Доброго времени суток.

Вы определитесь, что нужно сделать, получить сумму показаний всех счетчиков за каждый квартал или за квартал, но по каждому счетчику отдельно? Если второе, то верно замечание про двухмерный массив, а если первое, то массив Total следует объявить так

Total : array [1..4] of real; {общее потребление по кварталам}

Ведь вам нужно за каждый квартал. Номер квартала по номеру месяца можно определять так.

q := ((i-1) div 3) + 1;

тогда цикл суммирования будет таким.

for i:=1 to 12 do begin
q := ((i-1) div 3) + 1;
for j:=1 to 5 doTotal[q] := Total[q] + Data[ i, j ];
end;

Если в массивах индексы q и i объявить с нуля, то q := i div 3;

Удачи!
Похожие вопросы