Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
bublikss
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 19
#1

Указатели - Проверить) - Pascal

24.08.2010, 16:12. Просмотров 349. Ответов 3
Метки нет (Все метки)

Всем здраствуйте!
В общем вот задачка - По трем известным вершинам координат (x1,y1), (x2,y2), (x3,y3) прямоугольника найти четвертую. Использовать только динамические переменные. Почему то озник вопрос нужно ли здесь находить длину стороны?))и вообще правильно ли я ее решила?
Вот мои наработки:
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
unit Unit1; 
 
interface 
 
type ref=^real; 
 
procedure form(var x4,y4:ref); 
 
implementation 
procedure form(var x4,y4:ref); 
var x1,x2,x3,y1,y2,y3:real; 
begin 
new(x4); 
new(y4); 
x1:=random(50)/3; 
x2:=random(50)/3; 
x3:=random(50)/3; 
y1:=random(50)/3; 
y2:=random(50)/3; 
y3:=random(50)/3; 
writeln(x1:0:2,'; ',x2:0:2,'; ',x3:0:2,'; ',y1:0:2,'; ',y2:0:2,'; ',y3:0:2,'; '); 
x4^:=x1+x3-x2; 
y4^:=y1+y3-y2; 
end; 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2010, 16:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатели - Проверить) (Pascal):

Указатели - Pascal
Найти произведение отрицательных элементов массива A={a}, удовлетворяющих условию c<=a<=d. Использовать динамическое выделение памяти. ...

Указатели - Pascal
program Project1; {$APPTYPE CONSOLE} uses SysUtils; type Tlist=^List; List=record inf:byte; next:Tlist;

Указатели - Pascal
Написать программу используя указатели на переменные .Дана последовательность чисел, среди которых имеется один нуль. Вывести на печать все...

Указатели - Pascal
Ребят, помогите плиз разобраться с задачкой) В список из 3 книг в ДРП(динамически распределяемой памяти) вставить еще одну.

Динамические указатели - Pascal
Найти, сколько положительных, отрицательных и нулевых элементов в массиве A={a} удовлетворяют условию c<=a<=d. Использовать динамическое...

Указатели, матрица - Pascal
Дана матрица А(n,m). Поменять местами первую и последнюю строку а каждый элемент этих строк увеличить в 2 раза! Задача должна быть решана...

3
Puporev
Модератор
52823 / 40634 / 13883
Регистрация: 18.05.2008
Сообщений: 94,253
24.08.2010, 16:54 #2
Во-первых нужно бы уточнить условие. Стороны прямоугольника параллельны осям или нет?
Кроме того задавать координаты рандомно нельзя, должен при вводе получаться прямой угол, поэтому координаты перед вводом нужно подобрать. Если стороны не параллельны осям то это довольно сложная задача на геометрию.
0
bublikss
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 19
24.08.2010, 16:57  [ТС] #3
Ммммм...в условии которое мне дали насчет параллельны ли стороны или нет ничего не написано, поэтому даже не знаю, буду уточнять, спасибо. исправлю рэндом)
0
Puporev
Модератор
52823 / 40634 / 13883
Регистрация: 18.05.2008
Сообщений: 94,253
24.08.2010, 17:29 #4
В принципе неважно как расположен прямоугольник. Вроде так будет. Потестируйте, если неверно, напишите, только данные вводите аккуратно. Еще бы проверку на прямой угол написать. Это через косинус угла при первой вершине, если косинус равен или почти равен с допустимой точностью нолю.

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
uses crt;
var x1,y1,x2,y2,x3,y3,x4,y4:^real;
begin
clrscr;
writeln('Введите координаты вершины, образующей прямой угол:');
new(x1);
new(y1);
readln(x1^,y1^);
writeln('Введите координаты вершины слева:');
new(x2);
new(y2);
readln(x2^,y2^);
writeln('Введите координаты вершины справа:');
new(x3);
new(y3);
readln(x3^,y3^);
new(x4);
x4^:=x3^+x2^-x1^;
new(y4);
y4^:=y3^+y2^-y1^;
write('Координаты четвертой вершины ',x4^:0:2,'  ',y4^:0:2);
dispose(x1);
dispose(y1);
dispose(x2);
dispose(y2);
dispose(x3);
dispose(y3);
dispose(x4);
dispose(y4);
readln
end.
Добавлено через 5 минут
Еще проверить прямой угол можно по Пифагору, найти длины двух сторон и гипотенузу и проверить c^2=a^2+b^2. С учетом вещественных чисел так
if abs(c*c-a*a-b*b)<0.001 then угол прямой
1
24.08.2010, 17:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2010, 17:29
Привет! Вот еще темы с ответами:

Типизированные указатели - Pascal
помогите, пожалуйста, с решением задачи по динамическим структурам. вот что у меня получилось: uses crt; type rtrre=^real; ...

Указатели и динамическая память. - Pascal
1. Составить программу, которая удаляет из списка L за каждым вхождением элемента E один элемент, если таковой имеется и он отличен от E.

Динамическая память и указатели - Pascal
Всем привет! Помогите пожалуйста с задачкой)) &quot;Дан список из 3 записей. Встасить ещё одну в динамическую память&quot;. Спасибо!

Динамическая память (указатели) - Pascal
Вводится данное кол-во элементов массива, необходимо выделить память под динамический массив указать размер, в него ввести числа и найти...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.