Заранее, ) напишите функцию, вычисляющую длину отрезка по координатам его концов. с этой функции напишите программу, вычисляющую периметр треугольника по координатам его вершин
1. Современное короткое, но скорее всего, мало понятное школьнику решение
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 function LineLen(a,b:(real,real)):= Sqrt(Sqr(b.Item1-a.Item1)+Sqr(b.Item2-a.Item2));
begin var a:array[1..3] of (real,real); var x,y:real; Writeln('Введите три пары координат x,y'); for var i:=1 to 3 do begin Read(x,y); a[i]:=(x,y) end; Writeln('Периметр треугольника равен ',LineLen(a[1],a[2])+ LineLen(a[1],a[3])+LineLen(a[2],a[3])) end.
Тестовое решение: Введите три пары координат x,y 3 -3.5 -6 8 4 5.2 Периметр треугольника равен 33.7449685386805
2. Традиционное, но возможно тоже не очень понятное школьнику решение
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 type Point=record x,y:real end;
function LineLen(a,b:Point):real; begin Result:=Sqrt(Sqr(b.x-a.x)+Sqr(b.y-a.y)); end;
var a:array[1..3] of Point;
begin Writeln('Введите три пары координат x,y'); for var i:=1 to 3 do Read(a[i].x,a[i].y); Writeln('Периметр треугольника равен ',LineLen(a[1],a[2])+ LineLen(a[1],a[3])+LineLen(a[2],a[3])) end.
По сути нужно найти набор букв "child" и добавить сзади "ren". 1) Начало 2) Ввод числа n и массива s(n) 2.1) k = 0 3) Цикл по i от 1 до n-4 3.1) Если (s(i)="c") и (s(i+1)="h") и (s(i+2)="i") и (s(i+3)="l") и (s(i+4)="d"), то 3.1.1) k = k + 3 3.1.2) Переопределяем размер массива на s(n+k) 3.1.3) Цикл по j от i+5 до n // Отодвигаем на 3 знака все буквы после s(i+4)="d" 3.1.3.1) s(j+3) = s(j) 3.1.3.2) Конец цикла по j 3.1.4) s(i+5)="r"; s(i+6)="e"; s(i+7)="n" 3.1.5) Конец Если 3.2) Конец цикла по i 4) Вывод массива s(n+k) 5) Конец
1) Начало 2) Ввод матрицы A(5, 10) 3) Цикл по i от 1 до 5 // по строкам 3.1) max = A(i, 1); min = A(i, 1); nmax = 1; nmin = 1; 3.2) Цикл по k от 1 до 10 // по столбцам 3.2.1) Если A(i, k) > max, то // находим максимум в строке и его номер 3.2.1.1) max = A(i, k); nmax = k; 3.2.1.2) Конец Если 3.2.2) Если A(i, k) < min, то // находим минимум в строке и его номер 3.2.2.1) min = A(i, k); nmin = k; 3.2.2.2) Конец Если 3.2.3) Конец цикла по k // по столбцам 3.2.4) A(i, nmin) = max; A(i, nmax) = min // меняем их местами 3.3) Конец цикла по i // по строкам 4) Вывод массива A(5, 10) 5) Конец. Сложность такой программы - 1 (очень простая). Всего лишь два цикла в цикле и два сравнения чисел.
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016
function LineLen(a,b:(real,real)):=
Sqrt(Sqr(b.Item1-a.Item1)+Sqr(b.Item2-a.Item2));
begin
var a:array[1..3] of (real,real);
var x,y:real;
Writeln('Введите три пары координат x,y');
for var i:=1 to 3 do begin Read(x,y); a[i]:=(x,y) end;
Writeln('Периметр треугольника равен ',LineLen(a[1],a[2])+
LineLen(a[1],a[3])+LineLen(a[2],a[3]))
end.
Тестовое решение:
Введите три пары координат x,y
3 -3.5 -6 8 4 5.2
Периметр треугольника равен 33.7449685386805
2. Традиционное, но возможно тоже не очень понятное школьнику решение
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016
type
Point=record
x,y:real
end;
function LineLen(a,b:Point):real;
begin
Result:=Sqrt(Sqr(b.x-a.x)+Sqr(b.y-a.y));
end;
var
a:array[1..3] of Point;
begin
Writeln('Введите три пары координат x,y');
for var i:=1 to 3 do Read(a[i].x,a[i].y);
Writeln('Периметр треугольника равен ',LineLen(a[1],a[2])+
LineLen(a[1],a[3])+LineLen(a[2],a[3]))
end.