Створити похідний клас - «Сфера». Визначити функції друку, конструктори, обчислення площі кола і сфери, обсягу сфери, перепризначення координат центрів окружності і сфери. c++
// PascalABC.NET 3.2, сборка 1356 от 04.12.2016 // Внимание! Если программа не работает, обновите версию!
type Point=record x,y:real; name:char end; Vector=record x,y,l:real; end;
function CreatePoint(px,py:real):Point; begin With Result do begin x:=px; y:=py; end end;
function CreateVector(A,B:Point):Vector; begin With Result do begin x:=B.x-A.x; y:=B.y-A.y; l:=Sqrt(x*x+y*y) end end;
function IsNormal(A,B:Vector):=Abs(B.x*A.x+B.y*A.y)<=1e-6;
begin var x,y:real; Write('Введите координаты x и y точки A: '); Read(x,y); var A:=CreatePoint(x,y); Write('Введите координаты x и y точки B: '); Read(x,y); var B:=CreatePoint(x,y); var AB:=CreateVector(A,B); Write('Введите координаты x и y точки C: '); Read(x,y); var C:=CreatePoint(x,y); var BC:=CreateVector(B,C); if Abs(AB.l-BC.l)>1e-6 then begin Writeln('Стороны AB и BC не равны'); Exit end; if not IsNormal(AB,BC) then begin Writeln('Стороны AB и BC не перпендикулярны'); Exit end; Write('Введите координаты x и y точки D: '); Read(x,y); var D:=CreatePoint(x,y); var CD:=CreateVector(C,D); if Abs(AB.l-CD.l)>1e-6 then begin Writeln('Стороны AB и CD не равны'); Exit end; var AD:=CreateVector(D,A); if Abs(AB.l-AD.l)>1e-6 then Writeln('Стороны AB и ADC не равны') else Writeln('Точки образуют квадрат с точностью не ниже 0.000001') end.
Пример Здесь заданы координаты квадрата, сдвинутого относительно осей координат и повернутого на угол 30 градусов против часовой стрелки. Поэтому числа такие "некруглые".
Введите координаты x и y точки A: -0.4641 -4.4641 Введите координаты x и y точки B: 3.5359 2.4641 Введите координаты x и y точки C: 10.4641 -1.5359 Введите координаты x и y точки D: 6.4641 -8.4641 Точки образуют квадрат с точностью не ниже 0.000001
var
s: string[6];
n: integer;
begin
s := 'отлично';
n := length(s);
writeln(length('отлично'));
writeln(n);
end.
Изначально выставлен тип string[6], значит если присвоить строку больше, то ее обрежет по 6 символов, вот и весь прикол
ответ 6
2) рисунок
3)var
s, s1: string;
n: integer;
begin
s := 'информатика';
s1 := copy(s, 3, 5);
n := pos(s, s1);
writeln('s=', s);
writeln('s1=', s1);
writeln('n=', n);
end.
Вывод
s=информатика
s1=форма
n=0
Все верно, в s1 не содержится s, а наоборот