Поделитесь своими знаниями, ответьте на вопрос:
Составим программу для вывода библиографических ссылок. В этом списке могут быть ссылки на книги и на журнальные статьи. Например, 1. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы – М.: Вильямс, 2000.-382с. 1. Bayer R.S., Moore J.S. A fast string searching algorithm.- Communication ACM, 20, N10, (1977), 762 – 772 const m_rev=2; type select = ( book, magazine); { тип, задающий две альтернативы} entry = record { фиксированная часть} author, title : string[100]; year : 1..2200; case tag: select of {вариантная часть} book : ( publisher, city : sstring[50]; page :1..10000); magazine : ( mag_name: string[100]; valume, issue:byte; page_low, page_up:1..10000) end; ref_list = array[1..m_ref] of entry; var x : ref_list; procedure ReadRef(var rf:ref_list); {процедура ввода данных} begin with rf[1] do begin tag := book; author :=’Ахо А., Хопкрофт Дж., Ульман Дж.’; title:=’Структуры данных и алгоритмы’; year:=2000; page:=382; pablisher :=’Вильямс’; city := ‘M.:’; end; with rf[2] do begin tag := magazine; author :=’Bayer R.S., Moore J.S.’; title:=’A fast string searching algorithm’; year:=1977; mag_name:=’Communication ACM; valume := 20; issue := 10; page_low :=762; page_up :=772; end; end; procedure WriteRef(rf:ref_list); { процедура вывода} var I: integer; begin for I:= 1 to m_ref do with rf[I] do begin writeln(I:2, auther, ‘ ‘, title, ’.’); if rf[I].tag = book then writeln(‘_’, city, publisher, ’.’, year, ’.’, page, ’c.’) else writeln(‘_’, mag_name, ’, ’, volume, ’, N’, issue, ’, (‘, year, ’), ’, page_low, ’_’, page_up) end end; Begin { основная программа} ReadRef(x); WriteRef(x); End. Найти ошибку в программе
Поскольку в задаче не ставится вопрос определения самого расстояния, достаточно для каждой точки вычислить значение L² и сравнить их.
Окончательно задача сводится к нахождению минимального из значений
var
ax, ay, bx, by, rx, ry: real;
begin
writeln('Введите координаты первой точки');
readln(ax, ay);
writeln('Введите координаты второй точки');
readln(bx, by);
rx := sqr(ax) + sqr(ay);
ry := sqr(bx) + sqr(by);
if rx < ry then writeln('Первая точка ближе')
else
if rx > ry then writeln('Вторая точка ближе')
else writeln('Обе точки равноудалены')
end.