');
sound(zvuk); delay(del); nosound;
readln; close(g);
halt;
End;
Procedure DAt;
Begin
writeln;
textcolor(14);
writeln(' Этап пройден успешно.');
textcolor(15);
readln; clrscr;
End;
procedure initial;
begin
assign(f,'input.txt'); reset(f);
assign(g,'output.txt'); rewrite(g);
{1-initial}
clrscr; textcolor(15);
writeln(' 1 этап -Инициализация...');
c:=['0'..'9'];
bukva:=['a'..'z'];
BUKVA2:=['A'..'Z'];
writeln; writeln('> Из файла считана строка:'); writeln;
while not(eof(f)) do
begin
read(f,s);
write(s);
dlina:=length(s);
end; if dlina=0 then nett;
writeln;
writeln;
textcolor(14);
writeln(' Этап пройден успешно.');
textcolor(15);
readln; clrscr;
end;
procedure trans;
Begin
writeln(' 2 этап- Транслитерация... ');
writeln('> Проверка на присутствие недопустимых символов');
writeln('(Допустимо - a..z A..Z = . ; + .. ::= )'); writeln;
while i<>dlina do begin
inc(i);
b[i]:=s[i];
end;
writeln('> Анализ строки: ');
for n:=1 to i do write(b[n],' ');
for i:=1 to dlina do
Begin
if (b[i]<>'+')
and(b[i]<>'.')
and (b[i]<>'=')
and (b[i]<>';')
and (b[i]<>' ')
and (b[i]<>'-')
and (b[i]<>'[')
and (b[i]<>']')
and (not(b[i] in c))
and (not(b[i] in bukva))
and (not(b[i] in BUKVA2)) then NETt;
End; {for}
{создаем массивы из букв,знаков, цифр}
for i:= 1 to dlina do begin
if (b[i] in bukva) or (b[i] in BUKVA2) then mb[i]:=b[i];
if b[i] in c then mc[i]:=b[i];
if
(b[i]='=') or
(b[i]='+') or
(b[i]='-') or
(b[i]='.') or
(b[i]='[') or
(b[i]=']') or
(b[i]=';') then mz[i]:=b[i];
end;
writeln;
writeln('');
writeln('буквы:');
for i:= 1 to dlina do sb:=sb+mb[i]; {получаем строку из переменных и ключевых слов}
write(sb); writeln;
writeln('');
writeln('цифры:');
for i:= 1 to dlina do write(mc[i]); writeln;
writeln('');
writeln('знаки:');
for i:= 1 to dlina do write(mz[i]); writeln;
writeln('');
DAt;
end;
Пусть ΔABC - равнобедренный, АВ = с - его основание, АС = ВС = b - боковые стороны. По условию треугольник симметричен относительно горизонтальной оси, так что его основание АВ должно быть перпендикулярно горизонтальной оси и при этом АО = ОВ, а вершина С попадет на горизонтальную ось. Разместим ΔABC так, чтобы основание попало на вертикальную ось.
Окружность, описанная вокруг треугольника, пройдет через все три его вершины. Точка М - центр описанной окружности, - лежит на пересечении перпендикуляров, проведенных из середин сторон треугольника. Поскольку ΔABC равнобедренный, то ОС - его высота и отрезок МС, равный радиусу окружности R, также лежит на горизонтальной оси.
Найдем высоту ОС, обозначив её через h, по теореме Пифагора.
ОС - это катет ΔAOC, AO ⊥ OC.
Площадь ΔABC находим по формуле
Для нахождения радиуса R = MC рассмотрим прямоугольные ΔAOC и ΔMDC, имеющие общий угол АСО = α
Теперь легко сделать необходимое построение.
Для этого откладываем от начала координат по горизонтальной оси отрезок ОМ и проводим из него, как из центра, окружность радиуса R. Соединяем между собой три точки пересечения окружностью осей координат и получаем треугольник с длинами сторон, равными заданным.
Ниже приводится программа на языке Microsoft QBasic, позволяющая рассчитать длину отрезка ОМ (Mx - координату х точки М) и радиус описанной окружности R по заданной длине основания с и длине боковой стороны b.
INPUT "Основание: ", c
INPUT "Боковая сторона: ", b
h = SQR(b ^ 2 - (c / 2) ^ 2)
R = b ^ 2 / (2 * h)
Mx = h - R
PRINT "Радиус равен "; R, "Координата центра равна "; Mx
Тестовое решение:
Y:\qbasic>QBASIC.EXE
Основание: 6
Боковая сторона: 5
Радиус равен 3.125 Координата центра равна .875
Чтобы продолжить, нажмите любую клавишу
var x: integer; { введенное число } n: byte := 0; { количество цифр в числе } i, j: byte; { счетчики } xi: array[1..5] of integer;{массив цифр, из которых состоит число}
begin { Ввод исходного числа } readln(x); writeln; x := abs(x); // рассматриваем модуль числа { Разбиение числа на цифры } while (x > 0) do begin n := n + 1; // увеличиваем количество цифр xi[n] := x mod 10; // вычисляем цифру (остаток от деления на 10) if xi[n] = 8 then // если встретилась 8, begin writeln('да'); // то число "бесконечное" readln; exit; // выход из программы end; x := x div 10; // изменяем число (целое от деления на 10) end; { Поиск цифр, встречающихся больше одного раза} for i := 1 to n - 1 do for j := i + 1 to n do if xi[i] = xi[j] then // если числа begin writeln('да'); // то число "бесконечное" readln; exit; // выход из программы end; { Число не явлется "бесконечным" } writeln('нет');end.