Program x;
var a, i, b:integer;
Begin
a:=10;
b:=0;
for i:=1 to 10 do begin
if (a mod 2)=1 then b:=b+a;
a:=a+1;
end;
write(b);
End.
Под третьим поколением (3GL) первоначально понимались все языки более
высокого уровня, чем ассемблер. Главной отличительной чертой языков
третьего поколения стала независимость от аппаратного обеспечения,
то есть выражение алгоритма в форме, не зависящей от конкретных
характеристик машины, на которой он будет исполняться. Код, написанный
на языке третьего поколения, перед исполнением транслируется либо
непосредственно в машинные команды, либо в код на ассемблере и затем уже
ассемблируется. При компиляции, в отличие от предыдущих поколений, уже
нет соответствия один-к-одному между инструкциями программы и
генерируемым кодом.
Стала широко использоваться интерпретация
программ — при этом инструкции программы не преобразуются в машинный
код, а исполняются непосредственно одна за другой. Независимость от
«железа» достигается за счёт использования интерпретатора,
скомпилированного под конкретную аппаратную платформу. Одним из ранних
интерпретируемых языков стал Лисп.
#include <iostream>
void print (int *a,int size)
{
for (int i=0; i<size; i++)
std::cout <<a[i] <<' ';
std::cout <<std::endl;
}
int main()
{
int C[10]={1,2,3,4,5,6,7,8,9,10};
int B[10];
for (int i=0; i<10; i++)
B[i]=C[9-i];
print (B,10);
return 0;
}
Мне не нравится условие "наименьшую возможную длину", ибо по тому, что получилось у меня, наименьшей длиной может быть хоть отрезок длиной в 0. Возможно, в задании опечатка, ну или я накосячила.