щетая краску бесконечной
опустить кисть - оп
поднять кисть - по
покрасить жёлтым - пж
покрасить красным - пк
1.оп; 2.пж; 3.по; 4.вправо; 5.оп 6.пк 7.по 8.вправо и т.д весь рисунок
Var s,i:integer;
begin
write('s = ');
readln(s);
for i:=100 to 999 do
if (i div 100 + i div 10 mod 10 + i mod 10 < s)
then write(i,' ');
end.
Пример:
<span>s = 5
100 101 102 103 110 111 112 120 121 130 200 201 202 210 211 220 300 301 310 400 </span>
Немного теории:
Любой доступ к элементу массива, осуществляемый с помощью операции индексирования может быть осуществлен при помощи указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого 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
Byte, Short, Integer, Long, Single, Double