Конспект лекций по программированию для начинающих. Гладков В.П. - 187 стр.

UptoLike

Составители: 

189
write(' десятидневку ').
Решение 2. Можно не дожидаться получения пройденных расстояний по всем
десятидневкам, а сразу определять максимальное. Для этого придется завести
специальную переменную, чтобы хранить номер десятидневки, претендующей на
максимальное пройденное расстояние.
d=0; {номер десятидневки}
p:=0; {максимальное пройденное расстояние}
s:=0; {расстояние, пройденное в текущую десятидневку}
for i:=1 to 10 do s:=s+a[i];
if p<s then begin p:=s; d:=1 end;
s:=0;
for i:=11 to 20 do s:=s+a[i];
if p<s then begin p:=s; d:=2 end;
s:=0;
for i:=21 to 30 do s:=s+a[i];
if p<s then begin p:=s; d:=3 end;
В приведенном решении видны повторяющиеся части. Организуем для их
выполнения
цикл.
Решение 3.
n:=1; m:=10; {начало и конец текущей десятидневки}
d=0; {номер десятидневки}
p:=0; {максимальное пройденное расстояние}
for i:=1 to 3 do
begin s:=0;
for j:=n to m do s:=s+a[j]; {нашли расстояние за десятидневку}
n:=m+1; {нашли начало следующей десятидневки}
m:=m+10; {нашли конец следующей десятидневки}
if p<s then begin p:=s; d:=i end {нашли максимальное
расстояние}
end.
Можно отказаться от дополнительных переменных m и n, если заметить, что
номер дня вычисляется по формуле 10·(i-1)+j, где i - номер десятидневки, а j -
номер дня в
текущей десятидневке.
Решение 4.
d=0; {номер десятидневки}
p:=0; {максимальное пройденное расстояние}
for i:=1 to 3 do
begin s:=0;
for j:=1 to 10 do s:=s+a[10*(i-1)+j];
if p<s then begin p:=s; d:=i end
end.
Заметим, что индексное выражение при обращении к элементу одномерного
массива в предыдущем решении аналогично выражению при обращении к
                                       189

   write(' десятидневку ').
   Решение 2. Можно не дожидаться получения пройденных расстояний по всем
десятидневкам, а сразу определять максимальное. Для этого придется завести
специальную переменную, чтобы хранить номер десятидневки, претендующей на
максимальное пройденное расстояние.
   d=0; {номер десятидневки}
   p:=0; {максимальное пройденное расстояние}
   s:=0; {расстояние, пройденное в текущую десятидневку}
   for i:=1 to 10 do s:=s+a[i];
   if p