Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Ansi1995
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 8
1

Найти количество квадратов, имеющих общую точку с прямой

10.06.2016, 16:57. Просмотров 835. Ответов 3
Метки нет (Все метки)

В прямоугольной декартовой системе координат прямая задана двумя принадлежащими ей точками (О, W) и (100N, Е). Также заданы N2 квадратов со сторонами, параллельными осям координат. Квадрат Si,j имеет координаты углов (100i, 100j) и (100i - 100,100j - 100), i,j = 1,2,…N Требуется найти количество квадратов, имеющих общую точку с прямой. Ограничения: 1 < N< 100, 0 < W, Е< 100N, все числа целые. Ввод из файла sqline.in. В первой строке находятся три целых числа, N, Wи Е, разделенных пробелами. Вывод в файл sqline.out. Вывести одно число — количество квадратов.
Нужно реализовать с помощью С++ или С# (си шарп)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2016, 16:57
Ответы с готовыми решениями:

Найти точку пересечения прямой и окружности
Задана окружность с центром в точке O(0,0) и радиусом R0, и прямая y = ax+b....

Найти точку пересечения прямой с осью абсцисс
Найти точку пересечения прямой с осью абсцисс, если эта прямая проходит через...

Найти общую сумму покупки для N товаров, вводится N, количество и стоимость каждого из них
Доброго времени суток! :) Попалась интересная задачка на цикли, которую нужно...

Найти количество квадратов нечетных чисел
Здравствуйте. Нужна помощь в написании программы. Так как в C# я новичек, прошу...

Найти количество квадратов, размещенных на прямоугольнике
Помогите решить!! Даны положительные числа A, B, C. На прямоугольнике...

3
easybudda
Модератор
Эксперт CЭксперт С++
10147 / 6054 / 1521
Регистрация: 25.07.2009
Сообщений: 11,476
10.06.2016, 21:44 2
Цитата Сообщение от Ansi1995 Посмотреть сообщение
Нужно реализовать с помощью С++ или С# (си шарп)
Вы уж определитесь как-нибудь, это разные языки.

Не по теме:

Интересно, по какой логике это задание в разделе С оказалось?..

0
Ansi1995
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 8
10.06.2016, 22:03  [ТС] 3
Желательно си шарп консольный
0
Aael
394 / 296 / 170
Регистрация: 02.06.2016
Сообщений: 516
Завершенные тесты: 1
11.06.2016, 08:37 4
Лучший ответ Сообщение было отмечено Ansi1995 как решение

Решение

Ansi1995, Проще всего повернуть пространство чтобы заданная прямая совпала с Ox, но наверное есть другой способ учитывающий целочисленность входных данных:
C#
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
// Прямая AB которая должна проходить через квадраты
double Ax = 0, Ay = 0, Bx = 1, By = 1;
 
// Прямоугольники
double[][] squares =
{
    //{ x1, y1, x2, y2 }
    new double[]{ 0, 0, 1, 1 },
    new double[]{ 1, 0, 2, 1 },
    new double[]{ 1.1, 0, 2, 1 }, // этот немного правее прямой
};
            
// Угол наклона прямой
double angle = -Math.Atan2(By - Ay, Bx - Ax);
           
// Вторая строка матрицы поворота
double Rx = Math.Sin(angle), Ry = Math.Cos(angle);
 
// Сигнум с заданной точностью
Func<double, int> Sgn = (x) => Math.Abs(x) < 1e-15 ? 0 : Math.Sign(x);
 
// Индикатор, того, что точка в новых координатах
// Лежит выше оси Ox (или на ней)
Func<double, double, int> I = (x, y) => Sgn(Rx * x + Ry * y);
 
// Вернет true если квадрат содержит часть прямой AB
Func<double[], bool> Test = (s) =>
    Math.Abs(I(s[0], s[1]) + I(s[0], s[3]) + I(s[2], s[1]) + I(s[2], s[3])) < 4;
 
Console.WriteLine(squares.Count(Test));
Console.ReadLine();
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2016, 08:37

Найти количество полных квадратов среди чисел
Даны вещественные числа a,...,a (n=10). Найти количество полных квадратов среди...

Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника
А для C# не подскажете код?

Структуры.Определить количество женщин, имеющих наибольший рост
class Program { static void Main(string args) { ...


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

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

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