Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом — минимальный - Pascal ABC

  1. Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой, минимальный. Вычисление угла оформить в виде функции по формуле a=arctg(x/y) . Вызвать функцию в программе 3 раза.


textual

Код:

uses crt;
function ugol(x,y:real):real;
begin
if x=0 then ugol:=90
else ugol:=abs(arctan(y/x))
end;
 
 
var x1,x2,y1,y2,z1,z2,u1,u2,u3,mn,xmn,ymn:real;
begin
repeat
writeln('Введите координаты трех точек x и y одновремено не равны 0');
read(x1,x2,y1,y2,z1,z2);
until((x1<>0)or(x1<>0))and((y1<>0)or(y2<>0))and((z1<>0)or(z2<>0));
u1:=ugol(x1,x2);
writeln('Угол 1=',u1:0:2);
u2:=ugol(y1,y2);
writeln('Угол 2=',u2:0:2);
u3:=ugol(z1,z2);
writeln('Угол 3=',u3:0:2);
if u1<u2 then
 begin
  mn:=u1;
  xmn:=x1;
  ymn:=x2;
 end
else
 begin
  mn:=u2;
  xmn:=y1;
  ymn:=y2;
 end;
if u3<mn then
 begin
  xmn:=z1;
  ymn:=z2;
 end;
writeln('Координаты точки: ',xmn:0:2,'  ',ymn:0:2);
end.


Похожие ответы
  1. Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству:слово симметрично

  1. Даны отрезки a,b,c,d. Для каждой тройки этих отрезков , из которых можно построить треугольник, напечатать площадь данного треугольника. Определить процедуру Plo(x,y,z), печатающую площадь треугольника со сторонами , если такой треугольник существует.

  1. Добрый день. На плоскости заданы своими координатами n точек.Составить программу ,определяющуюю определяющую ,между какими из пар точек самое большое расстояние.Указание.Координаты точек занести в массив.

  1. Pascal1 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 program student; type stud=record    grup:string[15];    predmet1, predmet2, predmet3, predmet4, predmet5, imia, fam:string[15];    ocenka1, ocenka2, ocenka3, ocenka4, ocenka5 :integer;    end;    myfile=file of stud; var f1:myfile;     i, n:integer;     c1:stud;   begin  writeln('Введите кол-во студентов');  readln(n);  assign(f1, 'd:\student.txt');  rewrite(f1);  for i:=1 to n do    begin    writeln('Введите группу студента:');    readln(c1.grup);    writeln('Введите Имя студента:');    readln(c1.imia);    writeln('Введите Фамилию :');    readln( c1.fam);    writeln('Введите ПРЕДМЕТ1:');    readln(c1.predmet1);    writeln('Введите ОЦЕНКУ1:');    readln(c1.ocenka1);    writeln('Введите ПРЕДМЕТ2:');    readln(c1.predmet2);    writeln('Введите ОЦЕНКУ2:');    readln(c1.ocenka2);    writeln('Введите ПРЕДМЕТ3:');    readln(c1.predmet3);    writeln('Введите ОЦЕНКУ3:');    readln(c1.ocenka3);    writeln('Введите ПРЕДМЕТ4:');    readln(c1.predmet4);    writeln('Введите ОЦЕНКУ4:');    readln(c1.ocenka4);    writeln('Введите ПРЕДМЕТ5:');    readln(c1.predmet5);    writeln('Введите ОЦЕНКУ5:');    readln(c1.ocenka5);    write(f1, c1);    end;  close(f1);  end.Вывести файл на печать. Напечатать группу, и фамилию студентов, у которых больше трёх троек. Посчитать средний бал. Вывод файла есть:Pascal1 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 program student; type stud=record    grup:string[15];    predmet1, predmet2, predmet3, predmet4, predmet5, imia, fam:string[15];    ocenka1, ocenka2, ocenka3, ocenka4, ocenka5 :integer;    end;    myfile=file of stud; var f1:myfile;     i, n:integer;     c1:stud;   begin  writeln('Введите кол-во студентов');  readln(n);  assign(f1, 'd:\student.txt');  reset(f1);  writeln('Группа    Имя    Фамилия   Предмет1      Оценка1      Предмет2   Оценка2  Предмет3   Оценка3   Предмет4           Оценка4    Предмет5   Оценка5');    for i:=1 to n do    begin    read(f1, c1);    write(c1.grup:6, c1.imia:7, c1.fam:8, c1.predmet1:17, c1.ocenka1:5, c1.predmet2:17,  c1.ocenka2:6, c1.predmet3:15, c1.ocenka3:7, c1.predmet4:22, c1.ocenka4:10, c1.predmet5:12, c1.ocenka5:10 );    writeln;    end;      close(f1);  end.Как теперь вывести этих студентов. Чисто фактически, я понимаю что нужен цикл поиска 3-ки среди других оценок (if, for, then, else и другая беда), но как это записать не понимаю.

  1. Напечатать все элементы массива s, индексы которых являются числами Фибоначчи (1, 2, 3, 5, 8, 13, …).

  1. Напечатать в порядке убывания все цифры, входящие в запись данного натурального числа.

  1. Дана строка произвольного текста. Напечатать в алфавитном порядке буквы текста, входящие в него не менее двух раз, и их ASCII-коды.

  1. Найти координаты пунктов пересечения двух окружностей радиусами и с центрами в пунктах (;) и (;) соответственно.

  1. Дан двумерный массив, элементами которого являются отдельные символы.Напечатать слова, образованные нечетными элементами каждого столбца массива. Помогите пожалуйста, нужна написать на Паскале ABC.Добавлено через 8 минут Как переделать эту программу под мой случай задание для этой программы:написать слова, образованные четными элементами каждой строки массива const n=5; var a:array[1..n] of string;//массив строк s:array[1..n,1..20]of string;//двумерный массив слов i,j,k,p:integer; begin for i:=1 to n do begin write('Str ',i,':');//вводим строки readln(a[i]); end; i:=1;p:=0; repeat k:=1; for j:=1 to length(a[i]) do begin if a[i][j]=' ' then k:=k+1 //разбираем очередную строку на слова и считаем их else s[i,k]:=s[i,k]+a[i][j]; end; for p:=1 to k do if p mod 2=0 then write(s[i,p],' ');//четные слова в каждой строке выводим на экран i:=i+1; until i>n; readln end.

  1. Даны три пункта с координатами (; ); (; ), (, ), которые являются вершинами некоторого прямоугольника со сторонами, параллельными осям координат. Найти координаты четвертого пункта.