Решение задачи №1255
Условие задачи №1255:
Массив записей (данные про точки в плоскости)Поля:
х: риал
у: риал
Составить процедуру, проверяющую сортировку по возрастанию расстояния от этой точки до начала координат, если не сортирован - сортировать. Основная программы: ввести исходный массив, вывести преобразованный массив.
Решение
Описание отсутствуетДан массив записей о точках на плоскости. Проверить, расположены ли расстояния от точек до начала координат в порядке возрастания, если нет - отсортировать.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | program toch; {$APPTYPE CONSOLE} uses SysUtils; type tochki=record x:real; y:real;end; tmas=array[1..20] of tochki; {massiv tochek} var n,m:integer; t:tmas; i:integer; procedure vvod(n1:integer;var t1:tmas);var i:integer; beginfor i:=1 to n1 do beginwriteln('Vvedite koordinaty X',i);readln(t1[i].x);writeln('Vvedite koordinaty Y',i);readln(t1[i].y);end;end; procedure vivod(n1:integer;t1:tmas);beginfor i:=1 to n1 dowriteln(t1[i].x:2:0,' ',t1[i].y:2:0);end; function rast(x1:real;y1:real):real;var q:real;begin q:=sqrt(sqr(x1)+sqr(y1)); rast:=q;end; procedure proverka(n1:integer;var m1:integer; var t1:tmas);var p,j:integer; ra:array[1..20] of real; buf:tochki;begin for i:=1 to n1 do ra[i]:=rast(t1[i].x,t1[i].y); p:=1;for i:=1 to n1-1 doif ra[i]>ra[i+1] then p:=0; if p=0 then m1:=0else m1:=1; if p=0 thenfor i:=1 to n1-1 do beginfor j:=1 to n1-i doif rast(t[j].x,t[j].y)>rast(t[j+1].x,t[j+1].y) then begin buf.x:=t[j].x; buf.y:=t[j].y; t[j].x:=t[j+1].x; t[j].y:=t[j+1].y; t[j+1].x:=buf.x; t[j+1].y:=buf.y;end; end;end; begin {osn programma}writeln('Vvedite kol-vo tochek');readln(n); vvod(n,t); proverka(n,m,t);if m=0 then writeln('Net. Ots. massiv: '); vivod(n,t);if m=1 then writeln('DA'); readln;end. |