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

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

Войти
Регистрация
Восстановить пароль
 
-Arabella-
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 233
#1

Вызов функции несколько раз - C++

20.12.2013, 00:31. Просмотров 375. Ответов 0
Метки нет (Все метки)

Здравствуйте. Задача найти площадь многоугольника с n вершинами, но неизвестно выпуклый он или нет. Сначала нужно проверять каждые четыре точки, строить прямые и находить точки пересечения, потом из 4 точек найти max и min и полученные точки пересечения должны лежать между max и min, тогда многоугольник можно построить и найти площадь. У меня проблема с вызовом функции и посыланием в нее этих "четверок", их надо посылать какое - то количество раз, все остальное вроде правильно. Подскажите, пожалуйста, как эти четверки отправлять.

C++ (Qt)
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
#include<stdio.h>
#include<math.h>
int** create_xy(int n)
{
int** xy=new int*[n];
for(int i=0;i<n;i++)
xy[i]=new int[2];
return xy;
}
 
 
void Line(float x1,float y1,float x2,float y2, float x3, float y3, float x4, float y4,float *x, float *y)
{
float A1,A2,B1,B2,C1,C2;
A1=y3-y1;A2=y4-y2;
B1=x1-x3;B2=x2-x4;
C1=x3*y1-x1*y3;
C2=x4*y2-x2*y4;
*x=(B1*C2-B2*C1)/(A1*B2-A2*B1);
*y=(C1*A2-C2*A1)/(A1*B2-A2*B1);
}
 
 
 
int proverka(float x,float y,float x1,float y1,float x2,float y2, float x3, float y3, float x4, float y4)
{
float maxx,maxy,minx,miny;
maxx=x1;
maxy=y1;
minx=x1;
miny=y1;
 
if(x2>x1 && x2>x3 && x2>x4)
maxx=x2;
if(x2<x1 && x2<x3 && x2<x4)
minx=x2;
if(x3>x1 && x3>x2 && x3>x4)
maxx=x3;
if(x3<x1 && x3<x2 && x3<x4)
minx=x3;
if(x4>x1 && x4>x3 && x4>x2)
maxx=x4;
if(x4<x1 && x4<x3 && x4<x2)
minx=x4;
if(y2>y1 && y2>3 && y2>y4)
maxy=y2;
if(y4>y1 && y4>3 && y4>y2)
maxy=y4;
if(y3>y1 && y3>y2 && y3>y4)
maxy=y3;
if(y2<y1 && y2<y3 && y2<y4)
miny=y2;
if(y3<y1 && y3<y2 && y3<y4)
miny=y3;
if(y4<y1 && y4<y3 && y4<y2)
miny=y4;
 
if(x>minx && x<maxx && y>miny && y<maxy)
return 1;
else return 0;
}
 
 
 
 
void massive(int** xy,int n)
{
printf("Vvedi n - kollichestvo vershin mnogougolnika \n");
scanf("%d",&n);
printf("Vvedite koordinaty vershin:\n");
for(int i=0; i<n; i++)
 {
   scanf("%f",&xy[i][0]);
   scanf("%f",&xy[i][1]);
 }
for(int k=0; k<n; k++)
printf("Koordinats: x[%d] = %5.2f;  y[%d] = %5.2f \n",i+1, xy[k][0], i+1, xy[k][1]);
for(int j=0;j<n;j++)
delete [] xy[j];
delete [] xy;
}
 
 
 
 
int main
{
int** points;
points=create_xy(n);
massive(points,n);
getch();
 
for(int k=0;k<n,k++) // нужно вызвать функцию определенное количество раз и посылать ей "четверки" по четыре 
                     // элемента массива (координаты) проблема с этим     
 
{
if(Proverka(xy[k][2],xy[k+1][2],xy[k+2][2],xy[k+3][2],x,y)==1)  // x[k][[0] - координата x, а x[k][[1] - y, а я посылаю сразу и x и y
float S,S1=0;
for(i=0; i+1<n; i++)
{
S1=S1+0.5*((xy[i][0]-xy[i+1][0])*(xy[i][1]+xy[i+1][1]));
if(i==n-1)
{
S1=S1+(xy[i][0]-xy[0][0])*(xy[i][1]+xy[0][1]);
}
}
S=abs(S);
printf("S mnogougolnika = %5.2f ",S);
else printf("Oshibka v vode koordinats");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 00:31     Вызов функции несколько раз
Посмотрите здесь:

Программа осуществляющая вызов функции несколько раз с различными параметрами - C++
Даны действительные числа s,t. Получить g(1.2s)+g(2s-1,st), где g(a,b)=\frac{{a}^{2}+{b}^{2}-4*a*b}{{a}^{2}+5*a*b+3*{b}^{2}+4*a-b} ...

Вызов виртуальной функции vs несколько dynamic_cast подряд: что быстрее? - C++
Нужно максимально оптимизировать программу вот и пал выбор: лучше сделать чтобы вызывались виртуальные функции или же чтобы было четыре...

Вывод результата несколько раз отработанной функции в одну строку - C++
Очень интересный момент нашел я для себя сегодня в С++. А точнее в выводе средствами iostream Прошу Вас объяснить, что происходит. ...

Как запретить вызов конструктора 2-ой раз - C++
Как можно сделать чтобы конструктор не вызывался 2-раз #include &lt;iostream&gt; #include &quot;Model.h&quot; int main() ...

goto проходит несколько раз - C++
Есть код: int main() { char pwd; pwd: printf(&quot;&gt; &quot;); getline(pwd,15); if(strstr(pwd,&quot;1234567&quot;)) {if(pwd!=ch-1+'0')...

Увеличение чисел в несколько раз - C++
Здравствуйте. Сразу же извиняюсь за свой &quot;тупой&quot; вопрос, я в С++ недавно так что помогите. Как увеличить число в 2 раза. Например я ввожу...

Как вывести на экран несколько раз - C++
В задании надо чтобы целое значение (b) вводилось с клавиатуры 4 раза, соответственно потом (x) и (y) выводятся на экран после каждого...

Повернуть треугольник на 90 градусов несколько раз - C++
// triangle.cpp : Defines the entry point for the console application. // #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include...

Повторить строку вектора несколько раз - C++
Ну вот что со мной не так?)) #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;ctime&gt; using namespace std; int...

Увеличение переменной раз в несколько итераций - C++
Как сделать так, чтобы переменная n раз в 5 итераций увеличивалась на 1? Ну и чтобы цикл 25 раз продолжался, но j максимально до 5...

Можно ли несколько раз делитить область памяти? - C++
Собственно, чреват ли ошибками код: int *a; a = new int; a = 1; a = 2; delete a; delete a;

Удалить из массива те элементы, которые повторяются несколько раз - C++
Задан массив чисел а1,...,а60. Подразумевается, что в нем может быть равные между собой элементы. Удалить из него те элементы, которые...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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