Форум программистов, компьютерный форум CyberForum.ru

немного графики+векторы. по смыслу понимаю, а как реализовать - запуталась - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Тип char* к LPCTSTR возможно ли? http://www.cyberforum.ru/cpp-beginners/thread799869.html
А возможно ли преобразовать тип char* к LPCTSTR? Если да то как?
C++ Бинарные деревья Здравствуйте, помогите найти ошибку(всё компилируется): Найти и удалить (правым удалением) среднюю по значению вершину из вершин дерева, у которых количество потомков в левом поддереве не равно количеству потомков в правом поддереве. Выполнить прямой (левый) обход полученного дерева. #include <iostream> #include <fstream> using namespace std; struct TreeNode{ int key; int depth; ... http://www.cyberforum.ru/cpp-beginners/thread799864.html
C++ Оператор new и char
char * test = new char; Не работает данный код, да и вообще любая операция new на char не работает. Ошибок не выдает, но в дебаггере пишет, что невозможно прочесть память и что присвоена вот такая строка: "Нээээ««««««««юою". С чем это связано? И такое только в VS, в других компиляторах такого нет и работает все нормально.
Функция, определяющия количество цифр в дробной и целой частях числа C++
Как написать эту функцию?
C++ Компилируется но при выполнении ошибка http://www.cyberforum.ru/cpp-beginners/thread799831.html
Не могу понять в чем ошибка программа компилируется но крашится посля выполнения нескольких строчек кода P.S в данном коде открываю файл считываю в строки условия и действия , Возможно намудрил с условиями или с открытием файла #include <iostream> #include <string> #include <fstream> #include <stdio.h> using namespace std; int main() {
C++ Вектор вектора Доброго времени суток формучане! Очень надеюсь на вашу помощь. Вопрос вроде простой, но у меня в синтаксисе векторов дела плохи. В общем есть код. #include <iostream> #include <vector> using namespace std; vector <vector <int> > g; int main() подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6173 / 2902 / 284
Регистрация: 04.12.2011
Сообщений: 7,727
Записей в блоге: 3
05.03.2013, 04:09     немного графики+векторы. по смыслу понимаю, а как реализовать - запуталась
Милашечка, если речь не о прямоугольниках, а произвольных четырехугольниках, то задача достаточно муторная. Не сложная а нудная. Если у кого-то есть готовое решение... или пара часов. Поэтому вопрос остаётся открытым: - прямоугольники или нет?
Если нет, то решение может быть таким. Решаем для точки, отрезка, треугольника. Вырожденные случаи просты, но они понадобятся для предотвращения неприятностей в дальнейшем.
Для четырехугольника, у которого все вершины совпадают весь алгоритм состоит, например, в выводе сообщения вроде "прямоугольник - точка, может быть размещен в любой окружности".
Для отрезка легко справитесь сами.
Для треугольника (произвольного опять же), - находим точку пересечения двух серединных перпендикуляров (записываем и решаем систему 2-х линейных уравнений). Радиус - расстояние от центра до любой вершины.
Для четырехугольника есть четыре способа исключая вершину получить треугольник. Решаем задачу для каждого (см. выше) и проверяем попала ли оставшаяся точка в полученную окружность. По крайней мере в одном случае попадёт обязательно. Эта окружность и есть искомая. Все что крупнее подойдёт. И при разборе обязательно проверять на вырожденность фигур (функции обработки этих случаев же уже готовы). Что бы не попытаться решить линейно-зависимую систему, например.

Добавлено через 8 часов 58 минут
Милашечка, нашёл магическое слово в условии и это слово - квадрат! Странно, что я его не заметил. И оно единожды встречается в тексте, а далее только четырехугольник. Но если квадрат то считаем сторону, делим на корень из 2-х и сравниваем с радиусом. Всё, что написано про четырехугольники - зря.
Теперь, если окажется, что и треугольник прямоугольный, то вообще красота. Посмотрите своё задание и скажите.

Добавлено через 3 часа 30 минут
Милашечка, раз Вы не хотите признаваться прямоугольный ли или произвольный треугольник, надеюсь у Вас есть веские причины это скрывать. Вот вариант для произвольного треугольника. Графику я заремил так как не имею такой библиотеки. Я постарался не не трогать то что смог не потрогать, чтобы Вам было проще использовать имеющийся код.
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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//#include <graphics.h> // я на MVS и нет уменя этой библиотеки С/С++ Borland'a
#include<stdio.h>
#include <conio.h>      // opisanie fynkcii vvoda-vivoda s konsoli(dlja getch())
#include <math.h> 
void okr(int& a, int& b, int& c)
{printf("vvedite koordinati centra i radius okru*nosti: Xc, Yc, Rokr\n");
 scanf("%d %d %d", &a, &b, &c);  
 printf("\n");
 //circle(a,b,c);
}
void vvod_4ygol(int& a1, int& a2, int& b1, int& b2, int& c1, int& c2, int& d1, int& d2)
{
printf("vvedite koordinati vershin 4etirexygol'nika:\n");
printf("X1, Y1\t");
 scanf("%d%d",&a1, &a2);   printf("\n");
printf("X2, Y2\t");
 scanf("%d%d",&b1, &b2);   printf("\n"); 
 printf("X3, Y3\t");
 scanf("%d%d",&c1, &c2);   printf("\n");
 printf("X4, Y4\t");
 scanf("%d%d",&d1, &d2);   printf("\n");
/*
moveto(a1,a2);
lineto(b1,b2);
lineto(c1,c2);
lineto(d1,d2);
lineto(a1,a2);
*/
}
void treyg(int& x1,int& x2,int& x3,int& y1,int& y2,int& y3)
{
printf("vvedite koordinati vershin treygol'nika:\n");
printf("x1, y1\t");
 scanf("%d%d",&x1, &y1);   printf("\n");
printf("x2, y2\t");
 scanf("%d%d",&x2, &y2);   printf("\n"); 
 printf("x3, y3\t");
 scanf("%d%d",&x3, &y3);   printf("\n");
/* 
moveto(x1,y1);
lineto(x2,y2);
lineto(x3,y3);//risuet linii - storoni treygol'nika
lineto(x1,y1);
*/ 
}
double distansOfCoord(double X1, double Y1, double X2, double Y2){
return sqrt((X1-X2)*(X1-X2) + (Y1-Y2)*(Y1-Y2));
}
double RadiusOpisannoy(double X41, double Y41, double X42, double Y42){//kvadrat
double R=0;
if(X41!=X42||Y41!=Y42){
R=distansOfCoord(X41,  Y41,  X42,  Y42)/sqrt(2.0);
}else{
printf("2-e vershini quadrata sovpadaut. Program aborting, HDD formating, nicht chisen!\n");
getch();
R=-1.0;
}
return R;
}
double RadiusOpisannoy(double X31, double Y31, double X32, double Y32 , double X33, double Y33){//treug
double R=0;
double a=0;
double b=0;
double c=0;
double p=0;
int well=1;
int alliswell=0;
if(X31!=X32||Y31!=Y32){
a=distansOfCoord(X31,  Y31,  X32,  Y32);
if(X32!=X33||Y32!=Y33){
b=distansOfCoord(X32,  Y32,  X33,  Y33);
if(X33!=X31||Y33!=Y31){
c=distansOfCoord(X33,  Y33,  X31,  Y31);
}else well=0;
}else well=0;
}else well=0;
if(well){
p=(a+b+c)/2.0;
R=a*b*c/(4.0 * sqrt(  p*(p-a)*(p-b)*(p-c) ) );
}else{
printf("2-e vershini treugolnika sovpadaut. Program aborting, HDD formating, nicht chisen!\n");
getch();
    R=-1.0;
}
return R;
}
int main ()
{
 // int gdriver = DETECT, gmode;
  //initgraph(&gdriver, &gmode, "");      
  //setbkcolor(2);                                      
  //setcolor(5);
int  Xc,  Yc,  R;
 okr(Xc,  Yc,  R);
 double Rokr=(double) R;
int X41, X42, X43, X44;
int Y41, Y42, Y43, Y44;
vvod_4ygol(X41, Y41, X42, Y42, X43, Y43, X44, Y44);
double Rqud=RadiusOpisannoy(X41, Y41, X42, Y42);
if(Rqud>0){
    if(Rqud<=Rokr){
printf("qudrat pomestilsya! \n");
    }else{
printf("qudrat ne pomestilsya! \n");
    }
printf("Rqud=\t");
printf("%f", Rqud);
printf("\n");
int X31, X32, X33;
int Y31, Y32, Y33;
treyg(X31, X32, X33, Y31, Y32, Y33);
double Xtr1=(double) X31;
double Xtr2=(double) X32;
double Xtr3=(double) X33;
double Ytr1=(double) Y31;
double Ytr2=(double) Y32;
double Ytr3=(double) Y33;
double Rtr=RadiusOpisannoy(Xtr1, Ytr1, Xtr2, Ytr2, Xtr3, Ytr3);
printf("Rtr=\t");
printf("%f", Rtr);
printf("\n");
if(Rtr>0){
if(Rtr<=Rokr){
printf("treugolnic pomestilsya! \n");
    }else{
printf("treugolnic ne pomestilsya! \n");
    }
}
}
  getch();                 
  //closegraph();        
  return 0;
}
 
Текущее время: 22:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru