0 / 0 / 0
Регистрация: 05.12.2020
Сообщений: 2
1

Перевести код с Pascal на C++

05.12.2020, 16:28. Показов 352. Ответов 2

Author24 — интернет-сервис помощи студентам
На двумерной плоскости задано N точек с координатами (X1,Y1), (X2,Y2), ..., (Xn,Yn). Написать программу, которая из этих точек выделяет вершины квадрата, содержащего максимальное число заданных точек.

ПРИМЕЧАНИЕ: предполагается, что точки, расположенные на сторонах квадрата, принадлежат ему.

У меня есть код на Pascal, но я не знаю как перевести на C++.
Помогите пожалуйста.

Pascal
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
uses crt;
const
maxn = 100;{ Максимальное число точек }
type
 xy = record x,y : real end; { Тип для записи координат точек }
var
 m : array[1..maxn] of xy; { Координаты точек множества }
 i,j,g,k,n,p : word; { вспомогательные переменные  }
 num : word; { для записи числа точек в текущем квадрате }
 rec : word; { для записи числа точек в лучшем квадрате }
 a1,b1,c1 : real; { вспомогательные переменные  }
 r,c : array[1..5] of xy;{ для записи вершин квадратов }
 f1,f2 : boolean;
 o : array[1..4] of shortint;
Function sign(a : real) : shortint;{ Функция signum }
begin
 if a<0 then sign:=-1
 else if a>0 then sign:=1
 else sign:=0
end;
{ нахождение коэффициентов прямой, 
проходящей через точки x1,y1 и x2,y2 }
procedure getabc(x1,y1,x2,y2:real; var a,b,c:real);
begin
a:=y2-y1; b:=x1-x2; c:=-(a*x1+b*y1)
end;
begin
 write('Введите число точек...'); readln(n);
 for i:=1 to n do
 begin
 write('Введите координаты ',i,'-ой точки...');
 readln(m[i].x,m[i].y); end;
 rec:=0;{ Обнуление рекорда }
for i:=1 to n do
 { Перебор всех квадратов, для которых отрезок m[i]-m[j] }
 for j:=1 to n do { является ребром }
 if i<>j then
 begin
c[1]:=m[i]; c[2]:=m[j];
 { Определение вершин квадрата } 
 c[3].x:=c[2].x+(c[1].y-c[2].y);
 c[3].y:=c[2].y+(c[2].x-c[1].x);
 c[4].x:=c[1].x+(c[1].y-c[2].y);
 c[4].y:=c[1].y+(c[2].x-c[1].x);
 c[5]:=c[1];
 num:=0;
{ Проверка на наличие всех вершин квадрата 
в исходном множестве точек }
f1:=false; f2:=false; 
for g:=1 to n do 
if (m[g].x=c[3].x) and (m[g].y=c[3].y) then f1:=true; 
for g:=1 to n do 
if (m[g].x=c[4].x) and (m[g].y=c[4].y) then f2:=true; 
 if (c[1].x=c[2].x) and (c[1].y=c[2].y) then f1:=false;
if f1 and f2 then 
{Если все вершины квадрата есть в исходном множестве}
for k:=1 to n do { то определяем число точек в квадрате}
 begin
 for g:=1 to 4 do
 begin
getabc(c[g].x,c[g].y,c[g+1].x,c[g+1].y,a1,b1,c1);
 o[g]:=sign(a1*m[k].x+b1*m[k].y+c1);
 end;
 if ((o[1]=o[2]) and (o[2]=o[3]) and (o[3]=o[4])) or
((o[1]=o[2]) and (o[2]=o[3]) and (o[4]=0)) or 
((o[1]=o[2]) and (o[2]=o[4]) and (o[3]=0)) or 
((o[1]=o[3]) and (o[3]=o[4]) and (o[2]=0)) or 
((o[2]=o[3]) and (o[3]=o[4]) and (o[1]=0)) or 
((m[k].x=c[1].x) and (m[k].y=c[1].y)) or 
((m[k].x=c[2].x) and (m[k].y=c[2].y)) or ((m[k].x=c[3].x)
 and (m[k].y=c[3].y)) or ((m[k].x=c[4].x) 
 and (m[k].y=c[4].y)) then inc(num);
 end;
 if rec<num then begin r:=c; rec:=num end;
 end;
 if rec=0 then { Не найдено ни одного квадрата }
 begin
 writeln('Не найдено ни одного квадрата.'); halt
 end;
 { Вывод результатов }
 write('Лучший квадрат : ');
for i:=1 to 3 do write('(',r[i].x:2:2);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2020, 16:28
Ответы с готовыми решениями:

Перевести код c Pascal в C++
uses Crt; function Fun(a,b,c:integer):boolean; begin if a&lt;(b+c) then Fun:=true ...

Перевести код с Pascal
var a,b,c:real; begin clrscr; writeln('Vvedite A='); readln(a); writeln('Vvedite...

Перевести код с Pascal - C++
Перевести код с Pascal на C++ var a,b: Integer; sim: String; begin Readln(a); ...

Перевести код с Pascal
пожалуйста помогите перевести код с паскаля в с++ uses crt; var N,M:longint; k:byte; begin...

2
Заблокирован
05.12.2020, 16:33 2
Цитата Сообщение от BoyFromTheEarth Посмотреть сообщение
У меня есть код на Pascal, но я не знаю как перевести на C++.
Не надо так делать. Быстрее и проще написать прогу с нуля на нужном языке.
К тому же, этот код на паскале писал какой криворукий двоечник.
1
0 / 0 / 0
Регистрация: 05.12.2020
Сообщений: 2
05.12.2020, 16:35  [ТС] 3
Verevkin, ех, хорошо, спасибо за совет
0
05.12.2020, 16:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2020, 16:35
Помогаю со студенческими работами здесь

Перевести код с Pascal
var x,y: real; begin write('Введите x, y: '); readln(x,y); if ((sqr(x)/4)+(sqr(y)/1)&lt;=1) and...

Перевести код с Pascal в С++
Program fun1; Var m: integer; a,b,h,x,y : real; begin read (a,b,m); Writeln...

Перевести код с Pascal
l:array of integer; a,b,n,i:integer; w:boolean; begin readln(n); randomize; for i:=1 to n do...

Перевести код из Pascal на C++
Нужно произвести удаление узла из сбалансированного дерева. В С++ я не бум-бум, помогите...

Перевести код из Pascal в С++
Всем привет! Нужно срочно сделать задачку, условие такое: &quot;Вычислить приближенное значение...

Перевести код из Pascal в с++
Нужно перевести из паскаля в с++ две программы, кот. интегрируют методом симсона и трапеций...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru