===== PascalABC.NET =====
begin
var n := ReadInteger('Длина последовательности:');
ReadSeqInteger('Вводи:', n).SortedDescending.Println
end.
Это. очень смешно. папа. съел все. апельсины
program raf105;
var
s,p,n: real;
i,let: integer;
begin
write('Введите положенную сумму: ');
readln(s);
write('Введите ежегодный прирост (%): ');
readln(p);
write('Введите желаемую сумму: ');
readln(n);
while s < n do
begin
let+= 1;
s+= s/100*p;
end;
writeln('Первоначальная сумма увеличится до желаемой через ',let,' л.');
end.
<h3><em><u>Язык PascalABC</u></em></h3>
Немного теории:
Любой доступ к элементу массива, осуществляемый с помощью операции индексирования может быть осуществлен при помощи указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x - указатель на первый элемент массива. А его значение как *(x+i)
Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он "сдвигается" не на i байтов, а на i элементов этого типа.
int a[]={7,8,9}; - инициализация массива.
int b*=a - в этой строчке ошибка. Правильно: int *b=a; - объявляем указатель на нулевой элемент массива.
b++; - операция постфиксного инкремента(так как значение b в этой строчке нигде не используется, то данное выражение равносильно b=b+1). Теперь в b находится адрес первого элемента массива.
*(b+1)=*b - присваиваем второму элементу массива значение первого элемента(эта запись равносильна a[2]=a[1])
b[1] равносильно a[2] (не забываем, что в b[0] теперь адрес первого элемента, а не в нулевого. Адрес нулевого элемента будет в b[-1], а второго элемента - в b[1]).
В итоге значение b[1] равно 8
Ответ: 8