С Новым годом! Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 8
1

Посчитать количество точек, что находятся в каждом из треугольников

19.05.2014, 17:05. Показов 1181. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана случайное множество точек и диагонали экрана. Посчитать количество точек, что находятся в каждом из треугольников, получившийся на пересечении диагоналей.
Прошу помочь, так как уже вообще не знаю что с ней делать(((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2014, 17:05
Ответы с готовыми решениями:

Просуммировать количество точек в наборе домино, где количество точек на каждом конце может быть от 1 до n
Посмотрев на ряд костяшек, расположенный в лексикографическом порядке, видна формула этой суммы:...

Подсчитать количество точек, которые находятся в кругу радиусом R с центром в начале координат. Координаты точек заданы массивами X (100), Y (100)
Подсчитать количество точек, которые находятся в кругу радиусом R с центром в начале координат....

Посчитать количество треугольников
Пусть n треугольников заданы координатами своих вершин. Посчитайте количество треугольников,...

Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек , лежащих внутри и вне m-угольника , минимально различа
Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек ,...

11
Заблокирован
20.05.2014, 08:47 2
Вот код, решающий вашу задачу
Диагонали образуют 4 треугольника
Число точек распределяется так: k1 - верхний треугольник
k2 - нижний, k3 - правый, k4 - левый, k5 - точка на диагонали
(этот случай маловероятен, то есть k5=0)
(программа проверена)
QBasic/QuickBASIC
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
DEFSNG X-Y
DEFINT I-K
OPTION BASE 1
RANDOMIZE TIMER
CLS
INPUT "Vvedite N"; n
DIM x(n)
DIM y(n)
 
FOR i = 1 TO n
   x(i) = 20 * RND - 10
   y(i) = 20 * RND - 10
NEXT i
 
k0 = 0
k1 = 0
k2 = 0
k3 = 0
k4 = 0
FOR i = 1 TO n
   IF ABS(x(i)) < y(i) THEN k1 = k1 + 1
   IF ABS(x(i)) < -y(i) THEN k2 = k2 + 1
   IF ABS(y(i)) < x(i) THEN k3 = k3 + 1
   IF ABS(y(i)) < -x(i) THEN k4 = k4 + 1
   IF ABS(y(i)) = ABS(x(i)) THEN k5 = k5 + 1
NEXT i
 
PRINT "k1 = "; k1
PRINT "k2 = "; k2
PRINT "k3 = "; k3
PRINT "k4 = "; k4
PRINT "k5 = "; k5
END
Удачи вам!
1
Заблокирован
20.05.2014, 08:52 3
gehh, а где сказано, что экран квадратный?
1
Заблокирован
20.05.2014, 09:29 4
Спасибо!
В программу, где условия надо только добавить коэффициент.
Например, если ширина экрана вдвое больше высоты, то при
X надо поставить множитель два (во всех 5-ти условиях)
Ещё раз вам Спасибо. Я полагал, что такую мелочь знает каждый.
(точнее, я даже не думал об этом)
Спасибо!
0
Заблокирован
20.05.2014, 09:52 5
Цитата Сообщение от Karagen Посмотреть сообщение
Дана случайное множество точек и диагонали экрана
Экранная система координат не похожа на декартову (начало координат в левом верхнем углу, ось Y смотрит вниз)
Цитата Сообщение от gehh Посмотреть сообщение
если ширина экрана вдвое больше высоты, то при
X надо поставить множитель два
Или при Y?
1
Заблокирован
20.05.2014, 14:43 6
Вы ещё раз правы. Надо было просто взять размеры
экрана 640*480. Насчёт коэффициента тоже верно
(при y!!). Основа программы та же.
Спасибо вам ещё раз!
0
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 8
08.06.2014, 15:14  [ТС] 7
Можно попросить еще у вас объяснение как работает программа по шагам, а то мне немного не понятно, заранее спасибо.

Добавлено через 32 минуты
И если можно программу с графическим режимом, надо бы что б она точки, которые посчитала, показывала, как прямоугольник сделать и диагонали я знаю, а вот точки оно почему то показывать не хочет.
Если можно, объясните что означает эта строка
FOR i = 1 TO n
x(i) = 20 * RND - 10
y(i) = 20 * RND - 10
0
Заблокирован
08.06.2014, 15:15 8
Я выделил из программы самую сложную часть. Итак
Предположив, что экран квадратный я сразу получил уравнения
диагоналей: y=x и y=-x.
Рассмотрим для примера самый правый треугольник.
Чтобы точка лежала в этом треугольнике, она должна быть выше
Главной диагонали (левый верхний угол - правый нижний угол) и ниже
второй диагонали, тоесть должны выполняться неравенство x > |y|
Аналогично составляются и остальные неравенства. В каждом из
четырёх основных условий идёт свой подсчет точек, независимо от
других. Ну а сама программа простая
1) объявляются массивы для координат точек
2) массивы заполняются случайными точками (инициализируются)
3) точки подсчитыватся
4) выдается результат

QBasic/QuickBASIC
1
2
3
4
5
6
7
FOR i = 1 TO n
* *IF ABS(x(i)) < y(i) THEN k1 = k1 + 1 ' верхний
* *IF ABS(x(i)) < -y(i) THEN k2 = k2 + 1 ' это левый треугольник
* *IF ABS(y(i)) < x(i) THEN k3 = k3 + 1 ' правый
* *IF ABS(y(i)) < -x(i) THEN k4 = k4 + 1 ' нижний
* *IF ABS(y(i)) = ABS(x(i)) THEN k5 = k5 + 1 ' точка на диагонали
NEXT i
Удачи вам!
0
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 8
08.06.2014, 15:57  [ТС] 9
Большое спасибо, понял.
Но мне нужно еще графически это показать, все получилось, только точки оно показывать не хочет!
QBasic/QuickBASIC
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
CLS
DEFSNG X-Y
DEFINT I-K
OPTION BASE 1
INPUT "Vvedite N"; n
xmin = 10
xmax = 400
ymin = 10
ymax = 400
SCREEN 12
RANDOMIZE TIMER
VIEW (10, 10)-(400, 400), , 2
WINDOW (xmin, ymin)-(xmax, ymax)
DIM x(N)
DIM y(N)
FOR i = 1 TO n
    x(I) = xmin * RND - xmax
    y(I) = ymin * RND - ymax
NEXT i
FOR i= 1 TO n
    PSET (x(i), y(i)), 1
NEXT i
LINE(10, 10)-(400, 400),2
LINE(10, 400)-(400, 10),2
k0 = 0
Я немного ее переделал, можете сказать что здесь сделать что б точки показывало?
И что значит вот это
DEFSNG X-Y
DEFINT I-K
OPTION BASE 1
???
0
Заблокирован
08.06.2014, 17:16 10
Я посмотрел вашу программу. Вот мой комментарий.
1) в программе две крупные ошибки (потому и точки
не рисуются). Надо две строки писать так:
x(i)=xmin+RND*(xmax-xmin)
y(i)=ymin+RND*(ymax-ymin)
2) OPTION BASE 1 - означает, что в массивах минимальный
номер равен 1. А по умолчанию отсчет идёт с нуля.
Конечно массив можно определить иначе, например
DIM x(1 TO N).
3) DEFSNG X-Y - означает, что все переменные начинающие
на букву x или y имеют тип SINGLE. Конечно можно в
данном случае использовать суффиксы и записать
переменную x в виде "x!". Но это не всегда удобно.
4) DEFINT I-K - указывает на переменные типа INTEGER
5) И ещё (!!)
Вы ввели в программе не симметричную систему
координат. Ошибки нет. Есть две диагонали, для которых
надо написать уравнения в вашей системе координат.
Написать все можно, но зачем усложнять себе жизнь.
Мой совет: выбирайте такую систему координат в
которой линии описываются самыми простыми уравнениями
Моя программа тому пример.
Вот пожалуй и все.
Удачи вам!
0
Кормпилятор
5032 / 1704 / 409
Регистрация: 25.04.2010
Сообщений: 4,759
Записей в блоге: 2
08.06.2014, 18:06 11
Но это не всегда удобно.
С вами бы много кто поспорил. Конечно стиль каждого кодера индивидуален, но
грубо распределять тип по диапазонам алфавита как вы делаете в КАЖДОЙ
своей проге - это ппц как печально. Можно работать без венгерской нотации, но
оно будет полезно только для вас, это если что-то крупнее 50 строк.

Касательно постфиксов - это очень удобно как раз в мелких прогах, потому что
не требуется переопределять тип переменной. А вот в больших прогах это уже
становится не очень читабельным и лучше декларить самым обычным способом,
т.к. меньше мусора и частое переопределение типа не проблема. Впрочем есть
такая фишка редактора как change, можно и с постфиксом поменять тип если
очень захотеть.
1
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 8
09.06.2014, 22:35  [ТС] 12
Большое спасибо, очень помогли.
Просто преподователь не примет без графического режима, нужно было показать))
0
09.06.2014, 22:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2014, 22:35
Помогаю со студенческими работами здесь

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

Посчитать количество нулевых битов в каждом элементе массива и вывести общее количество
дан массив из 8 байт. Посчитать кол-во нулевых битов в каждом байте и вывести общее кол-во.

Подсчитать количество равносторонних треугольников с вершинами в заданном множестве точек на плоскости
ребят помогите пожалуйста решить задания по маткаду, буду очень всем благодарна Написать...

Подсчитать количество равносторонних треугольников с вершинами в заданном множестве точек на плоскости
MathCAD 14 IV Написать программный модуль для решения следующей задачи. Подсчитать количество...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru