//PascalABC.NET
//Версия 3.3, сборка 1634 (14.02.2018)
begin
var n:=ReadInteger('n=');
var a:=new string[5,n+1];
a[0,0]:='n'; a[1,0]:='1/2*n'; a[2,0]:='n*n'; a[3,0]:='n*n*n'; a[4,0]:='n*n*n*n';
for var i:=1 to n do
begin
a[0,i]:=IntToStr(i); a[1,i]:=FloatToStr(i*0.5); a[2,i]:=IntToStr(i*i);
a[3,i]:=IntToStr(i*i*i); a[4,i]:=IntToStr(i*i*i*i);
end;
a.Println(7);
end.
Пример:
n= 3
n 1 2 3
1/2*n 0.5 1 1.5
n*n 1 4 9
n*n*n 1 8 27
n*n*n*n 1 16 81
Замёрзший, ледяной, влажный.
1. Из-за ошибок программа не запустится.
- в блоке описания переменных отсутствует var
- clrscr не будет работать без подключенного модуля CRT. Да она и не особо нужна для решения этой задачи. Как и не нужен readln в предпоследней строке.
2. После устранения недостатков получим, что первый цикл:
Заполняет массив сл. значениями и выводит его на экран в одной строке.
for i:=1 to 10 do
begin
a[i]:=random(21)-10;
write(a[i]);
end;
3. Следующие строки кода делают реверс 1-ой половины массива:
//надо, чтобы a[1] стало a[5], a[5] стало a[1], a[2] cтало a[4], a[4] стало a[2],
//элемент a[3] не трогаем, так как он находится посередине и его не с кем менять
n:=0; //вспомогательная переменная, которая будет увеличиваться на 1 при //каждом выполнении тела цикла
for i:=1 to 2 do
begin
k:=a[i]; // в переменной k запоминаем значение a[i]
a[i]:=a[5-n]; // теперь a[i] = a[5-n]
a[5-n]:=k; // А элемент a[5-n] = бывшему значению a[i], которое сохранили в k
n:=n+1; //Для работы со следующей парой элементов увеличиваем n на 1
end;
4. За реверс второй половины отвечает этот код:
n:=0;
for i:=6 to 8 do
begin
k:=a[i];
a[i]:=a[10-n];
a[10-n]:=k;
n:=n+1;
end;
5. Ну и последний цикл выводит получившийся массив на экран:
for i:=1 to 10 do write(a[i]);
Program programma;
var a,b,c,d,e,p,s: integer;
begin
writeln ('Введите четырехзначное число');
readln (a);
b:=a div 1000;
c:=a div 100;
c:=c mod 10;
d:=a mod 100;
d:=d div 10;
e:=a mod 10;
p:=b*d;
s:=c+e;
writeln ('Произведение первой и третьей цифры равно ',p,', сумма второй и четвертой цифры равна ',s);
end.