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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
vironika
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 3
#1

Построение ломаной с использование graphics.h - C++

10.11.2009, 20:40. Просмотров 1767. Ответов 0
Метки нет (Все метки)

добрый день всем! мне этот сайт порекомендовала подруга в том что вы можете решить проблему и дать совет в розроботке программы на с++.. так вот, у меня возникли проблемы с курсовой работой: условие звучит так:
В файле заданы координаты центров и радиусы окружностей. В другом файле заданы координаты одной из вершин вложенного квадрата для каждой окружности. Вывести на экран окружности и вписанные в них квадраты. Центры окружностей, в которые вписаны квадраты, имеющие площадь в пределах между средней площадью окружностей и средней площадью квадратов, соединить ломаной, отрезки которой не пересекаются между собой
оригинал
У файлі задано координати центрів та радіуси кіл. В іншому файлі задано координати однієї з вершин вписаного квадрата для кожного кола. Вивести на екран кола та вписані у них квадрати. Центри кіл, в яких вписані квадрати, що мають площу у межах між середньою площею кіл та середньо площею квадратів, з єднати ламаною, відрізки якої не перетинаться між собою.

не могу дописать до конца(((!!!
вот моя программа, [при запуске вкл. графику]:
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
void initgr()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
};
struct Point{
long x,y;
};
 
class Circle{
Point p;
long r;
public:
Circle(){};
Circle(int a,int b,int c)
{p.x=a; p.y=b; r=c;}
void draw(int col)
{
setcolor(col);
circle(p.x,p.y,r);
}
long gx(){return p.x;};
long gy(){return p.y;};
long gr(){return r;};
};
 
Point Triangel(Point p1,Point p2)
{
float R,k,D;
Point per1,per2;
if (p1.y==p2.y)
{
per1.x=(p1.x+p2.x+1)/2;
per2.x=(p1.x+p2.x+1)/2;
per1.y=p1.y+abs(per1.x-p2.x);
per2.y=p1.y-abs(per1.x-p2.x);
}
else
{
long x2,y2;
x2=p2.x-p1.x;
y2=p2.y-p1.y;
k=(x2*x2+y2*y2)/2;
R=sqrt(2*k)/sqrt(2);
D=4*k*k*x2*x2-8*k*(k*k-R*R*y2*y2);
per1.x=(2*k*x2+sqrt(D))/(4*k)+p1.x+1/2;
per2.x=(2*k*x2-sqrt(D))/(4*k)+p1.x+1/2;
per1.y=(k-(per1.x-p1.x)*x2)/(y2)+p1.y;
per2.y=(k-(per2.x-p1.x)*x2)/(y2)+p1.y;
}
if (per1.x>0 && per1.x<640 && per1.y>0 && per1.y<480)
{
return per1;
}
else if (per2.x>0 && per2.x<640 && per2.y>0 && per2.y<480)
{
return per2;
}
else
{
clrscr();
printf("Ne to");
}
}
 
class Kvadrat{
Point p1,p2,p3,p4;
public:
Kvadrat (){};
Kvadrat (Point a, long x1, long y1)
{
p1=a;
p3.x=2*x1-p1.x;
p3.y=2*y1-p1.y;
p2=Triangel(p1,p3);
p4.x=2*x1-p2.x;
p4.y=2*y1-p2.y;
 
}
void draw(int col)
{
setcolor(col);
line(p1.x,p1.y,p2.x,p2.y);
line(p1.x,p1.y,p4.x,p4.y);
line(p3.x,p3.y,p2.x,p2.y);
line(p4.x,p4.y,p3.x,p3.y);
}
};
 
int main(void)
{
initgr();
FILE *fp;
if ((fp = fopen("input.txt", "r"))
== NULL)
{
fprintf(stderr, "Cannot open input file.\n");
}
int trr,n=0;
while ((trr=getc(fp))!=EOF)
if (trr=='=')
n++;
n=n/3;
rewind(fp);
Circle *c;
char str[100];
c=new Circle[n];
fgets(str,100,fp);
int R,X,Y;
for(int i=0;i<n;i++)
{
fscanf(fp,"%s%s%2s%d%s%2s%d%s%2s%d%s",str,str,str,&X,str,str,&Y,str,str,&R,str);
c[i]=Circle(X,Y,R);
}
 
fclose(fp);
FILE *f;
if ((f = fopen("input.txt", "r"))
== NULL)
{
fprintf(stderr, "Cannot open input file.\n");
}
/*
Kvadrat *kv;
kv=new Kvadrat[n];
char str[100];
fgets(str,100,fp);
int X;
for(int i=0;i<n;i++)
{
fscanf(fp,"%s%s%2s%d%s",str,str,str,&X,str);
kv[i]=Kvadrat(X);
}
 
fclose(fp);
*/
for(i=0;i<n;i++)
c[i].draw(3);
 
Point q;
q.x=c[0].gx()-c[0].gr()/sqrt(2);
q.y=c[0].gy()-c[0].gr()/sqrt(2);
Kvadrat kv;
kv=Kvadrat(q,(c[0].gx()),(c[0].gx()));
kv.draw(3);
 
for(i=0;i<2;i++)
getch();
closegraph();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2009, 20:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Построение ломаной с использование graphics.h (C++):

Построение спирали (graphics.h) - C++
ПОМОГИТЕ РАЗОБРАТЬСЯ С ЦИКЛОМ, НЕ ПОНИМАЮ КАК ПРОИСХОДИТ ПОСТРОЕНИЕ СПИРАЛИ,И ЗАЧЕМ НАМ НУЖНО ЧИСЛО ПИ))) #define _USE_MATH_DEFINES...

Построение с использованием заголовочного файла graphics.h - C++
Построить n-лепестковую розу используя заголовочный файл graphics.h. Для построения использовать уравнение p=asinn фи, при а=2, значение...

Где скачать Borland С++ с поддержкой graphics.h. Уроки по библеотеке graphics.h - C++
Подскажите, нужен Borland С++ с поддержкой graphics.h. Я видел только 1 борланд и выглядело все там не так как мне нужно. Есть новый...

Длина Ломаной - C++
Помогите пожалуйста написать программку, вот задание : ломаная задана координатами своих вершин.Найти ее длину.Использовать функцию для...

Класс ломаной линии - C++
Разработать класс ломанной линии CZigzagLine.В классе CZigzagLine линия должнабыть описана совокупностью координат точек на...

расстояние от окружности к ломаной? - C++
написать функцию: даны координаты 20 точек ломаной, найти три круга, которые находятся дальше от нее и три ближайших окружности. есть...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2009, 20:40
Привет! Вот еще темы с ответами:

Задача нахождения длины ломаной - C++
Условие: Ввод из: Стандартный ввод Время выполнения на одном тесте: 1 с Вывод в: Стандартный вывод Ограничение памяти программы на...

Определить длину ломаной по координатам - C++
Здравствуйте. Проблема с решением задачи &quot;Ловушки&quot;. Алгоритм ясен, ломаная образует многоугольник, начальная и конечная вершина...

Найти длину кратчайшей ломаной - C++
Даны координаты N точек на плоскости. Найти длину кратчайшей ломаной, соединяющей эти точки. совсем нет идей как это сделать, приходит...

Определить расстояние от данной точки до ломаной - C++
Есть задача. Вот ее краткий пересказ. На плосткости дана точка с координатами x и у. Дано n. На плоскости дано n точек, попарно...


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

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

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