|
Timon55 0 / -1 / 0 Регистрация: 25.07.2017 Сообщений: 10 |
||||
|
1 |
||||
По трём вершинам прямоугольника определить четвёртую28.08.2017, 05:14. Показов 3520. Ответов 3 Метки нет (Все метки)
Есть программа,которая по заданным координатам трёх вершин определяет координаты четвертой. Я не могу понять как она работает, ну то есть сам алгоритм нахождения координат четвертой вершины. Подскажите кому не трудно. Заранее благодарен. Листинг:
-0.50 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
28.08.2017, 05:14 |
|
Ответы с готовыми решениями:
По трем вершинам прямоугольника найти координаты четвертой 4. По известным…
Прокомментируйте код, находящий 4-ю вершину прямоугольника по трём заданным 3 |
|
3638 / 2970 / 918 Регистрация: 05.07.2013 Сообщений: 14,220 |
|
|
28.08.2017, 08:23 |
2 |
|
на бумажке нарисуй три точки, построй из каждой точки вектора к двум другим, для одной из точек угол между векторами будет равен 90, значит это стороны прямоугольника, осталось найти их сумму.
0 |
|
164 / 170 / 139 Регистрация: 28.11.2016 Сообщений: 301 |
|
|
28.08.2017, 09:03 |
3 |
|
Решение Условие (x3-x2)*(x2-x1)+(y3-y2)*(y2-y1) = 0 это условие перпендикулярности векторов. Миниатюры
1 |
|
0 / -1 / 0 Регистрация: 25.07.2017 Сообщений: 10 |
|
|
28.08.2017, 09:15 [ТС] |
4 |
|
Xoraxax, спасибо за помощь Добавлено через 2 минуты
0 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
28.08.2017, 09:15 |
|
Помогаю со студенческими работами здесь
По заданным вершинам определить фигуру
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given an N * M grid. It contains exactly three ‘*’ and every other cell is a ‘.’ where ‘*’ denotes a vertex of a rectangle. The task is to find the coordinates of the fourth (missing) vertex (1-based indexing).
Examples:
Input: grid[][] = {“*.*”, “*..”, “…”}
Output: 2 3
(1, 1), (1, 3) and (2, 1) are the given coordinates of the rectangle where (2, 3) is the missing coordinate.
Input: grid[][] = {“*.*”, “..*”}
Output: 2 1
Approach: Find the coordinates of the 3 vertices by iterating through the given grid. Since a rectangle consists of 2 X-coordinates and 2 Y-coordinates and 4 vertices, every X-coordinate and Y-coordinate should occur exactly twice. We can count how many times each X and Y coordinate occurs in the 3 given vertices and the 4th one will have coordinates that occur only once.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
pair<int, int> findFourthVertex(int n, int m, string s[])
{
unordered_map<int, int> row, col;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (s[i][j] == '*') {
row[i]++;
col[j]++;
}
int x, y;
for (auto tm : row)
if (tm.second == 1)
x = tm.first;
for (auto tm : col)
if (tm.second == 1)
y = tm.first;
return make_pair(x + 1, y + 1);
}
int main()
{
string s[] = { "*.*", "*..", "..." };
int n = sizeof(s) / sizeof(s[0]);
int m = s[0].length();
auto rs = findFourthVertex(n, m, s);
cout << rs.first << " " << rs.second;
}
Java
import java.util.HashMap;
import java.util.Map;
class GfG
{
static Pair<Integer, Integer> findFourthVertex(int n,
int m, String s[])
{
HashMap<Integer, Integer> row = new HashMap<>();
HashMap<Integer, Integer> col = new HashMap<>();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (s[i].charAt(j) == '*')
{
if (row.containsKey(i))
{
row.put(i, row.get(i) + 1);
}
else
{
row.put(i, 1);
}
if (col.containsKey(j))
{
col.put(j, col.get(j) + 1);
}
else
{
col.put(j, 1);
}
}
}
}
int x = 0, y = 0;
for (Map.Entry<Integer, Integer> entry : row.entrySet())
{
if (entry.getValue() == 1)
x = entry.getKey();
}
for (Map.Entry<Integer, Integer> entry : col.entrySet())
{
if (entry.getValue() == 1)
y = entry.getKey();
}
Pair<Integer, Integer> ans = new Pair<>(x + 1, y + 1);
return ans;
}
public static void main(String []args)
{
String s[] = { "*.*", "*..", "..." };
int n = s.length;
int m = s[0].length();
Pair<Integer, Integer> rs = findFourthVertex(n, m, s);
System.out.println(rs.first + " " + rs.second);
}
}
class Pair<A, B>
{
A first;
B second;
public Pair(A first, B second)
{
this.first = first;
this.second = second;
}
}
Python3
def findFourthVertex(n, m, s) :
row = dict.fromkeys(range(n), 0)
col = dict.fromkeys(range(m), 0)
for i in range(n) :
for j in range(m) :
if (s[i][j] == '*') :
row[i] += 1;
col[j] += 1;
for keys,values in row.items() :
if (values == 1) :
x = keys;
for keys,values in col.items() :
if (values == 1) :
y = keys;
return (x + 1, y + 1) ;
if __name__ == "__main__" :
s = [ "*.*", "*..", "..." ]
n = len(s);
m = len(s[0]);
rs = findFourthVertex(n, m, s);
print(rs[0], rs[1])
C#
using System;
using System.Collections.Generic;
class GfG
{
static Pair<int, int> findFourthVertex(int n,
int m, String []s)
{
Dictionary<int, int> row = new Dictionary<int, int>();
Dictionary<int, int> col = new Dictionary<int, int>();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (s[i][j] == '*')
{
if (row.ContainsKey(i))
{
row[i] = row[i] + 1;
}
else
{
row.Add(i, 1);
}
if (col.ContainsKey(j))
{
col[j] = col[j] + 1;
}
else
{
col.Add(j, 1);
}
}
}
}
int x = 0, y = 0;
foreach(KeyValuePair<int, int> entry in row)
{
if (entry.Value == 1)
x = entry.Key;
}
foreach(KeyValuePair<int, int> entry in col)
{
if (entry.Value == 1)
y = entry.Key;
}
Pair<int, int> ans = new Pair<int, int>(x + 1, y + 1);
return ans;
}
public static void Main(String []args)
{
String []s = { "*.*", "*..", "..." };
int n = s.Length;
int m = s[0].Length;
Pair<int, int> rs = findFourthVertex(n, m, s);
Console.WriteLine(rs.first + " " + rs.second);
}
}
class Pair<A, B>
{
public A first;
public B second;
public Pair(A first, B second)
{
this.first = first;
this.second = second;
}
}
Javascript
<script>
function findFourthVertex(n, m, s)
{
var row = new Map(), col = new Map();
for (var i = 0; i < n; i++)
for (var j = 0; j < m; j++)
if (s[i][j] == '*') {
if(row.has(i))
row.set(i, row.get(i)+1)
else
row.set(i, 1)
if(col.has(j))
col.set(j, col.get(j)+1)
else
col.set(j, 1)
}
var x, y;
row.forEach((value, key) => {
if (value == 1)
x = key;
});
col.forEach((value, key) => {
if (value == 1)
y = key;
});
return [x + 1, y + 1];
}
var s = ["*.*", "*..", "..." ];
var n = s.length;
var m = s[0].length;
var rs = findFourthVertex(n, m, s);
document.write( rs[0] + " " + rs[1]);
</script>
Time Complexity: O(N*M), as we are using a loop to traverse N*M times.
Auxiliary Space: O(N + M), as we are using extra space for map.
Last Updated :
31 May, 2022
Like Article
Save Article
Vote for difficulty
Current difficulty :
Basic
Главная
-
- 0
-
Даны три вершины А(1,4,2), В(2.-1,5), С(0,-2,4) прямоугольника АВСД. Найдите координаты четвертой вершины Д
Антонина Сбитенькова
Вопрос задан 22 сентября 2019 в
5 — 9 классы,
Геометрия.
-
Комментариев (0)
Добавить
Отмена
1 Ответ (-а, -ов)
- По голосам
- По дате
-
- 0
-
О — середина диагонали АС
О = 1/2(А+С) = 1/2*((1,4,2)+(0,-2,4)) = 1/2*(1;2;6) = (1/2;1;3)
И эта же точка — середина диагонали BD
O = 1/2*(B + D)
2O = B + D
D = 2O — B = 2*(1/2;1;3) — (2;-1;5) = (1;2;6) — (2;-1;5) = (-1;3;1)
Отмена
Надежда Селяненкова
Отвечено 22 сентября 2019
-
Комментариев (0)
Добавить
Отмена
Ваш ответ
Program If23;
Var
x1,y1,x2,y2,x3,y3,x4,y4:integer;
Begin
ReadLn(x1,y1,x2,y2,x3,y3);
If x1 = x2 Then x4 := x3;
If x1 = x3 Then x4 := x2;
If x2 = x3 Then x4 := x1;
If y1 = y2 Then y4 := y3;
If y1 = y3 Then y4 := y2;
If y2 = y3 Then y4 := y1;
WriteLn('Координаты четвертой вершины: ',x4,',',y4);
End.
Похожие записи/страницы:
- Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям…
- Даны координаты трех вершин треугольника: (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь, используя формулу…
- Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям…
- найти площадь выпуклого четырёхугольника по координатам его вершин А(x1,y1) B(x2,y2) C (x3,y3) D(x4,y4) -…
- Проверить истинность высказывания: «Точка с координатами (x, y) лежит внутри прямоугольника, левая верхняя вершина…
- Написать программу, определяющую наименьшую площадь из трех заданных координатами своих вершин квадратов. Написать…
- Заданы координаты трех вершин треугольника (x1,y1), (x2,y2),(x3,y3). Найти его периметр и площадь — Pascal(Паскаль)
- На плоскости заданы координаты трёх точек — вершины треугольника. Определить, равносторонним, равнобедренным или…
koo236
7 лет назад
Светило науки — 1 ответ — 0 раз оказано помощи
Сначала находим координаты вектора АВ, получится (0,6 ; -3,5). Следовательно вектор АВ должен быть равен вектору DC, значит и координаты у них будут совпадать (0,6 ; -3,5). Пишем формулу нахождения вектора DC. Координата вершины D (-0,6 ; 1,1), потому что из координат C нужно вычесть координаты D, чтобы получились координаты вектора DC.
(0 оценок)

Нахождение площади прямоугольника по его вершинам