dpodstrel85
?>

беремин акпаратты улкен бирликтен киши бирликке байттан битке ауыстыру процеси калай орындалады ?​

Информатика

Ответы

serge-lysoff

Білмедім өзімде іздеп жатырмые

Мағанда керек

shkola8gbr
Для начала задачу нужно решить чисто математически, решения приведены на листочках. 
Поскольку задача школьная, то вариант совпадения точек не рассматривается
Алгоритмического языка не знаю, но поскольку это вариант псевдокода, то думаю алгоритм вполне понятен

алг Круг_по_двум_точкам_и_радиусу(арг действ Ax, арг действ Ay, арг действ Bx, арг действ By, арг действ r)
   дано | A,B,r
   надо | нарисовать окружность
нач
    ввод Ax, Ay, Bx, By, r

    действ dAB = ((Ax - Bx)^2 + (Ay - By)^2)^(0.5) // длина АВ
    действ h = (r^2-dAB^2/4)^(0.5) // высота и длина вектора ОМ

    // М середина АВ
    действ Mx = (Ax + Bx) / 2 
    действ My = (Ay + By) / 2

    //первый круг
    действ Ox = Mx + (Ay - By) * h/dAB
    действ Oy = My - (Ax - Bx) * h/dAB
    нарисовать_круг(Ox, Oy, r)

    //второй круг
    Ox = Mx - (Ay - By) * h/dAB
    Oy = My + (Ax - Bx) * h/dAB
    нарисовать_круг(Ox, Oy, r)
кон
Запишите на алгоритмическом языке алгоритм построения окружности заданного радиуса r, проходящий чер
Запишите на алгоритмическом языке алгоритм построения окружности заданного радиуса r, проходящий чер
kotofei147516

ответ:Вариант №1 (не совсем удачный, как было отмечено в комментариях).

//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)

var n,i,m:integer;

flag:boolean;

begin

 readln(n);

 flag:=false;

 if (n mod 2<>0)then i:=n-1 else i:=n;

 while i>0 do begin  

   if power(2,i)<=n then begin

     write(power(2,i),' '); flag:=true;

   end;

   i:=i-2;

end;

if not flag then writeln(0);

end.

Тест №1

1025

1024 256 64 16 4

Тест №2

1

0

Вариант №2

var a,i,n: integer;

begin

 a:=1;readln(n);

 i:=trunc(log2(n)); //получим степень двойки для n

 //если i нечетное,

 //то первое искомое число получаем путем сдвига влево на i-1 в

 //двоичном представлении числа иначе сдвиг на i

 if (i mod 2)=1 then a:=a shl(i-1) else a:=a shl i;

 //далее получаем числа сдвигая вправо на 2 разряда

 //в двоичном представлении числа

 while a>=2 do begin

   write(a,' ');

   a:=a shr 2;

 end;

end.

Тестовое решение:

2147483647

1073741824 268435456 67108864 16777216 4194304 1048576 262144 65536 16384 4096 1024 256 64 16 4

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

беремин акпаратты улкен бирликтен киши бирликке байттан битке ауыстыру процеси калай орындалады ?​
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Тихонова
snabomp
Maksim Lokhov
Tatyanaaarzieva72
Doronin755
Ter-Pogosov_Vasilevna
Igorevich_Aleksandrovna1599
borisrogovpr3407
MAXIM76748
pavlovm8316
Shurshilina850
vmnk38
dima0218687
Andreeva
artem