Напишите программу для графического исполнителя Basic Графические исполнители соответствуют стандартному языку Бейсик. 1. Line (x1,y1)-(x2,y2),c - отрезок по двум точкам. 2. Line- (x,y),c - отрезок от текущей точки до точки (x,y). 3. Line (x1,y1)-(x2,y2),c,b[f] - прямоугольник [закрашенный прямоугольник]. 4. Circle (x,y),r,c - окружность радиусом r. 5. Paint (x,y),c1,c2 - закрашивание замкнутой области цветом c1 до цвета c2 6. Draw "командная строка" (u - вверх, d - вниз, l - влево, r - вправо, e - вверх и вправо, f - вниз и вправо, g - вниз и влево, h - вверх и влево, m - движение в указанную точку, n - двигаться и вернуться в исходную точку, b - движение, но не рисование, c - установка цвета).
Цвета обозначаются числами от 0 (черный) до 15 (белый).
Строка с коментарием начинается с символа ОПОСТРОФ ( ' ).
Реализована возможность использования двух видов направления оси Y.
Команда (оператор) присваивания реализована в усеченном варианте. Допускаются простейшие выражения следующих видов с использованием сложения, вычитания, умножения и деления.. 1 вид: Переменной присваивается числовое значение (x = 100). 2 вид: Переменной присваивается значение другой переменной (x = y). 3 вид: Переменной присваивается простейшее выражение (y1 = y1 +50, y = x - n).
На имена переменных наложено ограничение: Имя переменной может состоять из ОДНОЙ латинской буквы или из ОДНОЙ латинской буквы и ОДНОЙ цифры. Примеры имен переменных: x, a5, y8, d.
Пока, в этой версии программы, переменные и выражения с переменными могут использоваться только в исполнителе Line. Допускаются простейшие выражения трех видов с использованием сложения и вычитания. 1 вид: Переменная: Line- (x,y). 2 вид: Переменная + или - числовое значение: Line- (x+50, y-50). 3 вид: Переменная + или - переменная: Line- (x+n, y-n).
procedure oddDec(var a,b:integer); //подпрограмме переданы аргументы a и b //процедура для вычитания в нечётном элементе begin; a:=a-b; end;
procedure NotoddInc(var a,b:integer); //подпрограмме переданы аргументы a и b //процедура для сложения в чётном элементе begin; a:=a+b; end;
begin randomize; readln(a); //ввод a readln(b); //ввод b writeln('Array:'); for i:=1 to 10 do //весь массив begin; ar[i]:=random(-20,80); //случайные числа от -20 до 80 включительно write(ar[i]:4); //вывод if odd(i) then oddDec(ar[i],b) else NotoddInc(ar[i],a); {если нечётное, то первая процедура, иначе вторая. Обращаю внимания на то, что элементы меняются сразу после вывода} end; writeln; writeln('Final array:'); //вывод получившегося массива for i:=1 to 10 do write(ar[i]:4); end.
Пример ввода: 20 10 Пример вывода: Array: 10 16 0 60 23 4 22 -20 4 55 Final array: 0 36 -10 80 13 24 12 0 -6 75
Если число 49 записывается как 121, значит первый остаток от деления равен 1, то есть основанием системы счисления является число, кратное 48.
121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.
Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза. Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления. Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков. Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2. Остаётся число 6. Проверим
var
i,a,b:integer;
ar:array[1..10] of integer;
procedure oddDec(var a,b:integer); //подпрограмме переданы аргументы a и b
//процедура для вычитания в нечётном элементе
begin;
a:=a-b;
end;
procedure NotoddInc(var a,b:integer); //подпрограмме переданы аргументы a и b
//процедура для сложения в чётном элементе
begin;
a:=a+b;
end;
begin
randomize;
readln(a); //ввод a
readln(b); //ввод b
writeln('Array:');
for i:=1 to 10 do //весь массив
begin;
ar[i]:=random(-20,80); //случайные числа от -20 до 80 включительно
write(ar[i]:4); //вывод
if odd(i) then oddDec(ar[i],b) else NotoddInc(ar[i],a);
{если нечётное, то первая процедура, иначе вторая. Обращаю внимания на то, что элементы меняются сразу после вывода}
end;
writeln;
writeln('Final array:'); //вывод получившегося массива
for i:=1 to 10 do
write(ar[i]:4);
end.
Пример ввода:
20
10
Пример вывода:
Array:
10 16 0 60 23 4 22 -20 4 55
Final array:
0 36 -10 80 13 24 12 0 -6 75
121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.
Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза.
Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления.
Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков.
Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2.
Остаётся число 6. Проверим
49/6=8 |1
8/6 = 1 |2
1/6=0 |1
121(6)