0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
1

Программа должна находить площадь произвольного многоугольника

08.01.2014, 02:19. Показов 3743. Ответов 40
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Моя программа должна находит площадь произвольного многоугольника, с предварительной проверкой, можно ли построить его вообще. Если вводит количество сторон = 4, то пишет, что построить нельзя и соответственно ничего не считает, хотя координаты правильные. А для 5,6,7,8 и т.д. сторон вообще ничего не выдает, на вводе координат ее работа заканчивается. Если не сложно, помогите, пожалуйста, найти ошибку. Я думаю она в основной функции Void main(), там я вызываю подфункцию Proverka и проверяю ее значение, т.е. все ее вызову должны быть равны 1 для подсчитки площади, и которая с xy[k]... вызывается несколько раз, может я со скобками напутала? Все подпрограммы я составляла по формулам, должно быть все правильно.
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
#include<stdio.h>
#include<math.h>
float** create_xy(int n)
{
float** xy=new float*[n];
for(int i=0;i<n;i++)
xy[i]=new float[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>y3 && y2>y4)
maxy=y2;
if(y2<y1 && y2<y3 && y2<y4)
miny=y2;
if(y4>y1 && y4>y3 && y4>y2)
maxy=y4;
if(y4<y1 && y4<y3 && y4<y2)
miny=y4;
if(y3>y1 && y3>y2 && y3>y4)
maxy=y3;
if(y3<y1 && y3<y2 && y3<y4)
miny=y3;
 
 
if(x>minx && x<maxx && y>miny && y<maxy)
return 1;
else return 0;
}
 
void massive(float** xy,int n)
{
printf("Vvedite koordinaty vershin:\n");
 
for(int k=0; k<n; k++)
{
   scanf("%f",&xy[k][0]);
   scanf("%f",&xy[k][1]);
 
printf("Koordinats: x[%d] = %5.2f;  y[%d] = %5.2f \n",k+1, xy[k][0], k+1, xy[k][1]);
}
}
void main()
{
float **xy;
int n,k,i;
float S,x,y,S2;
float S1=0;
 
printf("Vvedi kollichestvo vershin = ");
scanf("%d",&n);
 
float** points;
points=create_xy(n);
massive(points,n);
 
for(k=0;k+3<n;k++)
if(Proverka(xy[k][0],xy[k][1],xy[k+1][0],xy[k+1][1],xy[k+2][0],xy[k+2][1],xy[k+3][0],xy[k+3][1],x,y)==1)
{
if(Proverka(xy[n-3][0],xy[n-3][1],xy[n-2][0],xy[n-2][1],xy[n-1][0],xy[n-1][1],xy[0][0],xy[0][1],x,y)==1)
for(i=0;i+1<n;i++)
{
S1=S1+((xy[i][0]-xy[i+1][0])*(xy[i][1]+xy[i+1][1]));
}
S2=S1+(xy[n-1][0]-xy[0][0])*(xy[n-1][1]+xy[0][1]);
S=0.5*abs(S2);
printf("S mnogougolnika = %5.2f",S);
}
else printf("Oshibka v vode koordinats");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2014, 02:19
Ответы с готовыми решениями:

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

Вычислить площадь произвольного многоугольника, нарисованного на форме
Требуется: вычислить площадь произвольного многоугольника нарисованного на форме. Дано: на форме...

Программа должна находить наибольшую цифру во вводимом числе
Дан код, нужно найти и исправить ошибку. Program Prog1; var m, x, ost: integer; begin ...

Программа должна находить минимальный элемент в столбцах матрицы которые упорядочены
var a:array of integer; var i,j,n,m,t,min,f,f1,f2:integer; begin write('M='); read(m);...

40
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 20:28 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от -Arabella- Посмотреть сообщение
А ее вызов должен так выглядеть?
Цитата Сообщение от -Arabella- Посмотреть сообщение
Line(x,y); // Вызов Line
На это похоже?
C++
1
void Line(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,float *x,float *y)
Если последние аргумены связаны с x, y, которые объявлены в main(), то, при вызове функции, нужно передавать их адреса:
C++
1
]Line(/* другие параметры*/, &x, &y);
1
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
24.01.2014, 20:55  [ТС] 22
alsav22,
Цитата Сообщение от alsav22 Посмотреть сообщение
На это похоже?
Здесь я ее описываю. А в функции Proverka Line вызывать не нужно, да?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 21:03 23
Цитата Сообщение от -Arabella- Посмотреть сообщение
Здесь я ее описываю.
И что? Функция принимает 10 параметров, а вы вызываете её с двумя, и всё нормально?
1
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
24.01.2014, 22:22  [ТС] 24
alsav22, Нет) Я поправила, теперь нормально вызывает Line и даже считает площадь, только неправильно и пишет 2 раза "Ошибка в воде координат"
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
void main()
{
 
int n,k,i;
float S,S2,x,y,j;
float S1=0;
 
printf("Vvedi kollichestvo vershin = ");
scanf("%d",&n);
 
float** xy;
xy=create_xy(n);
massive(xy,n);
 
for(j=0;j<n;j++)
Line(xy[j][0],xy[j][1],xy[j+1][0],xy[j+1][1],xy[j+2][0],xy[j+2][1],xy[j+3][0],xy[j+3][1],&x,&y);
 
 
for(k=0;k+3<n;k++)
 
if(Proverka(xy[k][0],xy[k][1],xy[k+1][0],xy[k+1][1],xy[k+2][0],xy[k+2][1],xy[k+3][0],xy[k+3][1],x,y)==1)
{
if(Proverka(xy[n-3][0],xy[n-3][1],xy[n-2][0],xy[n-2][1],xy[n-1][0],xy[n-1][1],xy[0][0],xy[0][1],x,y)==1)
 
for(i=0;i+1<n;i++)
{
S1=S1+((xy[i][0]-xy[i+1][0])*(xy[i][1]+xy[i+1][1]));
}
S2=S1+(xy[n-1][0]-xy[0][0])*(xy[n-1][1]+xy[0][1]);
S=0.5*abs(S2);
printf("S mnogougolnika = %5.2f ",S);
}
else printf("Oshibka v vode koordinats");
}
Миниатюры
Программа должна находить площадь произвольного многоугольника  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 23:25 25
-Arabella-, весь код выложите, который пробуете.
0
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
24.01.2014, 23:58  [ТС] 26
alsav22,
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
112
#include<stdio.h>
#include<math.h>
float** create_xy(int n)
{
float** xy=new float*[n];
for(int i=0;i<n;i++)
xy[i]=new float[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 x1,float y1,float x2,float y2, float x3, float y3, float x4, float y4, float x, float y)
{
float maxx,maxy,minx,miny;
maxx=x1;
maxy=y1;
minx=x1;
miny=y1;
 
if(x2>x1 && x2>x3 && x2>x4)
maxx=x2;
else minx=x2;
if(x3>x1 && x3>x2 && x3>x4)
maxx=x3;
else minx=x3;
if(x4>x1 && x4>x3 && x4>x2)
maxx=x4;
else minx=x4;
if(y2>y1 && y2>y3 && y2>y4)
maxy=y2;
else miny=y2;
if(y4>y1 && y4>y3 && y4>y2)
maxy=y4;
else miny=y4;
if(y3>y1 && y3>y2 && y3>y4)
maxy=y3;
else miny=y3;
 
 
 
if(x>minx && x<maxx && y>miny && y<maxy)
return 1;
else return 0;
}
 
 
 
 
 
 
 
void massive(float** xy,int n)
{
 
printf("Vvedite koordinaty vershin:\n");
 
for(int k=0; k<n; k++)
{
   scanf("%f",&xy[k][0]);
   scanf("%f",&xy[k][1]);
 
printf("Koordinats: x[%d] = %5.2f;  y[%d] = %5.2f \n",k+1, xy[k][0], k+1, xy[k][1]);
}
}
 
void main()
{
 
int n,k,i;
float S,S2,x,y,j;
float S1=0;
 
printf("Vvedi kollichestvo vershin = ");
scanf("%d",&n);
 
float** xy;
xy=create_xy(n);
massive(xy,n);
 
for(j=0;j<n;j++)
Line(xy[j][0],xy[j][1],xy[j+1][0],xy[j+1][1],xy[j+2][0],xy[j+2][1],xy[j+3][0],xy[j+3][1],&x,&y);
 
 
for(k=0;k+3<n;k++)
 
if(Proverka(xy[k][0],xy[k][1],xy[k+1][0],xy[k+1][1],xy[k+2][0],xy[k+2][1],xy[k+3][0],xy[k+3][1],x,y)==1)
{
if(Proverka(xy[n-3][0],xy[n-3][1],xy[n-2][0],xy[n-2][1],xy[n-1][0],xy[n-1][1],xy[0][0],xy[0][1],x,y)==1)
 
for(i=0;i+1<n;i++)
{
S1=S1+((xy[i][0]-xy[i+1][0])*(xy[i][1]+xy[i+1][1]));
}
S2=S1+(xy[n-1][0]-xy[0][0])*(xy[n-1][1]+xy[0][1]);
S=0.5*abs(S2);
printf("S mnogougolnika = %5.2f ",S);
}
else printf("Oshibka v vode koordinats");
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.01.2014, 01:16 27
В какой среде делаете?
0
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
25.01.2014, 11:25  [ТС] 28
alsav22, Borlanc C++ 3.1
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.01.2014, 17:09 29
Цитата Сообщение от -Arabella- Посмотреть сообщение
Borlanc C++ 3.1
Это ваш выбор?
Этот код не должен компилироваться. Индексы массива не могут быть типа float (j).
0
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
26.01.2014, 01:11  [ТС] 30
alsav22,
Цитата Сообщение от alsav22 Посмотреть сообщение
Это ваш выбор?
Мне эта программа не очень нравится, но учимся на ней
Цитата Сообщение от alsav22 Посмотреть сообщение
Этот код не должен компилироваться. Индексы массива не могут быть типа float (j).
Я поменяла j на int, все так же работает и выдает 2 раза Ошибка в воде координат
C++ (Qt)
1
2
3
4
5
6
7
8
....
void main()
{
 
int n,k,i,j;
float S,S2,x,y;
float S1=0;
....
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.01.2014, 06:50 31
Цитата Сообщение от -Arabella- Посмотреть сообщение
Я поменяла j на int, все так же работает
А до того, как поменяли, всё компилировалось и работало (но криво)?
Цитата Сообщение от -Arabella- Посмотреть сообщение
и выдает 2 раза Ошибка в воде координат
Что вводите? Пример ввода, при котором два раза выдаёт.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
26.01.2014, 14:51 32
Найти площадь треугольника ABC можно, вычислив векторное произведение векторов AB и AC. Оно равно +2*S или -2*S.
Разобьём многоугольник на треугольники - см. рис.
Вычислим векторные произведения A0A1 на A0A2, A0A2 на A0A3, и т.д.
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
#include <stdio.h>
 
struct point
{
    float x, y;
};
 
// n - число сторон, A[] - координаты вершин 
float square_of_polygon( const int n, const point A[] )
{
    if( n <= 0  || A == 0 )
        return 0.0;
 
    typedef point vect;
    vect * diag = 0;
    diag = new vect[n];
    if( ! diag ) 
        return 0.0;
 
    // diag[i] это векторы A0A0, A0A1, A0A2, A0A3, ...
    for( int i=0; i<n; ++i ) 
    {
        diag[i].x = A[i].x - A[0].x;
        diag[i].y = A[i].y - A[0].y;
    }
 
    // вычисление площади 
    float S = 0.0;
    for( int i=2; i<n; ++i ) 
    {
        // площадь параллелограмма, стороны 
        // которого - векторы diag[i], diag[i-1]
        //
        // вычисляем векторное произведение diag[i] и diag[i-1]
        //
        S += diag[i].x * diag[i-1].y  -  diag[i].y * diag[i-1].x ;
    }
    S /= 2.0;
    if( S < 0 ) S = -S;
 
    // освобождаем память 
    delete[] diag;
 
    return S;
}
int main()
{
    point P[] = { { 4, 2 }, { 6, 3 }, { 5, 5 }, { 3, 4 } };
    int n = sizeof( P ) / sizeof( P[0] );
 
    float sq = square_of_polygon( n, P );
    printf( "\n square of polygon :  %10.3f \n", sq );
 
    getchar();
    return 0;
}
Миниатюры
Программа должна находить площадь произвольного многоугольника  
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
26.01.2014, 15:54 33
Цитата Сообщение от Alex5 Посмотреть сообщение
Разобьём многоугольник на треугольники - см. рис.
прямоугольник по условию произвольный. по моим представлениям (не выпуклый) https://www.cyberforum.ru/cgi-bin/latex.cgi?\in (произвольные).
а вообще говоря, дорогой ТС, эта задача решается очень лаконично.
пусть vertex[1,...,n,1] - список вершин многоугольника (первую вершину запишем дважды для удобства). тогда общую площадь найдем так:
C++
1
2
3
4
5
6
7
8
9
double area(vertex v1, vertex v2) {
   return (v2.x - v1.x) * (v1.y + v2.y);
}
 
Area = 0;
for(int i=0; i < n; ++i)
   Area += area(vertex[i], vertex[i+1]);
Area /= 2;
Area = abs(Area); (тут лежит ответ)
суть состоит в том, что мы складываем ориентированные площади трапеций. за счет учета знака метод работает для произвольных многоугольников. порисуйте на бумажке - вам станет понятно.
0
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
26.01.2014, 22:44  [ТС] 34
alsav22,
Цитата Сообщение от alsav22 Посмотреть сообщение
А до того, как поменяли, всё компилировалось и работало (но криво)?
Да, как и после изменения, так и до, ничего не поменялось при смене j с float на int
Alex5, Спасибо за пример, но я очень плохо разбираюсь в програмировании и мне сложно будет перестроиться с одного на другое, я площадь нахожу по формуле площади многоугольника для любого произвольного многоугольника, выпуклого и невупуклого
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.01.2014, 22:52 35
Цитата Сообщение от -Arabella- Посмотреть сообщение
Да,
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Что вводите? Пример ввода, при котором два раза выдаёт.
0
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
27.01.2014, 00:20  [ТС] 36
alsav22, Вот, я пробую на примере шестиугольника https://www.cyberforum.ru/atta... 1390587749
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.01.2014, 00:42 37
У меня, при таком вводе (1-й скрин), такой результат.
Миниатюры
Программа должна находить площадь произвольного многоугольника   Программа должна находить площадь произвольного многоугольника  
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
27.01.2014, 13:04 38
Цитата Сообщение от -Arabella- Посмотреть сообщение
Вот, я пробую на примере шестиугольника https://www.cyberforum.ru/atta... 1390587749
-Arabella-, площадь многоугольника у Вас здесь вычислена правильно.

Что касается сообщения "Oshibka v vode ... ", ошибка на самом деле не в вводе, а в
фунции Proverka, раз правильные данные она расценивает как ошибочные.

Цитата Сообщение от -Arabella- Посмотреть сообщение
Моя программа должна находит площадь произвольного многоугольника, с предварительной проверкой, можно ли построить его вообще
Что значит "можно ли построить его"? Любой многоугольник можно построить

Добавлено через 39 минут
Цитата Сообщение от Alex5 Посмотреть сообщение
ошибка на самом деле не в вводе, а в
фунции Proverka, раз правильные данные она расценивает как ошибочные
Я неверно выразился. Ошибка в структуре функции main()

Добавлено через 6 минут
Вот как выглядит main, если отформатировать код
Цитата Сообщение от -Arabella- Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* фрагмент функции main() */
/* этот код скопирован из #26, добавлено форматирование */
 
    for(j=0;j<n;j++)
        Line(xy[j][0],xy[j][1],xy[j+1][0],xy[j+1][1],xy[j+2][0],xy[j+2][1],xy[j+3][0],xy[j+3][1],&x,&y);
    /* цикл for( j... ) завершается до входа в цикл for( k ... ) Поэтому дальше используются
      значения x, y, вычисленные при j == n-1 */
 
    for(k=0;k+3<n;k++)
 
        if(Proverka(xy[k][0],xy[k][1],xy[k+1][0],xy[k+1][1],xy[k+2][0],xy[k+2][1],xy[k+3][0],xy[k+3][1],x,y)==1)
        {
            if(Proverka(xy[n-3][0],xy[n-3][1],xy[n-2][0],xy[n-2][1],xy[n-1][0],xy[n-1][1],xy[0][0],xy[0][1],x,y)==1)
 
                for(i=0;i+1<n;i++)
                {
                    S1=S1+((xy[i][0]-xy[i+1][0])*(xy[i][1]+xy[i+1][1]));
                }
                S2=S1+(xy[n-1][0]-xy[0][0])*(xy[n-1][1]+xy[0][1]);
                S=0.5*abs(S2);
                printf("S mnogougolnika = %5.2f ",S);
        }
        else printf("Oshibka v vode koordinats");
1
0 / 0 / 1
Регистрация: 20.10.2013
Сообщений: 233
28.01.2014, 00:40  [ТС] 39
alsav22,
Может это изза того, что у меня старая программа и она не замечает какие-то ошибки?
Alex5,
Цитата Сообщение от Alex5 Посмотреть сообщение
Что значит "можно ли построить его"? Любой многоугольник можно построить
Я как всегда не совсем правильно выразилась Программа проверяет можно ли построить по данным координатам
Цитата Сообщение от Alex5 Посмотреть сообщение
/* цикл for( j... ) завершается до входа в цикл for( k ... ) Поэтому дальше используются
* * * значения x, y, вычисленные при j == n-1 */
Вы имеете в виду, что мне нужно цикл по k засунуть в цикл по j? При такой постановке скобок, у меня вылезает ошибка missplaced else, значит я не так поставила, я думаю, что цикл по k должен заканчиваться после посылке Proverka([k].....), но опять при закрытии скобки после первой Proverka ошибка о else
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  for(j=0;j<n;j++)
      [COLOR="Red"]{[/COLOR]  Line(xy[j][0],xy[j][1],xy[j+1][0],xy[j+1][1],xy[j+2][0],xy[j+2][1],xy[j+3][0],xy[j+3][1],&x,&y);
    
 
 for(k=0;k+3<n;k++)
 
        if(Proverka(xy[k][0],xy[k][1],xy[k+1][0],xy[k+1][1],xy[k+2][0],xy[k+2][1],xy[k+3][0],xy[k+3][1],x,y)==1)
        {
            if(Proverka(xy[n-3][0],xy[n-3][1],xy[n-2][0],xy[n-2][1],xy[n-1][0],xy[n-1][1],xy[0][0],xy[0][1],x,y)==1)
                  
                for(i=0;i+1<n;i++)
                {
                    S1=S1+((xy[i][0]-xy[i+1][0])*(xy[i][1]+xy[i+1][1]));
                }
                S2=S1+(xy[n-1][0]-xy[0][0])*(xy[n-1][1]+xy[0][1]);
                S=0.5*abs(S2);
                printf("S mnogougolnika = %5.2f ",S);
        } [COLOR="Red"]}[/COLOR]
        else printf("Oshibka v vode koordinats");
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
28.01.2014, 11:49 40
-Arabella-, во всяком случае, площадь Ваша программа вычисляет правильно. Ну а проверка данных должна выполняться перед вычислением площади.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    // ввод данных 
    // ... 
    int n;
    float** xy;
 
    bool b = PolnayaProverka( xy, n ); /* можно все циклы с проверкой поместить в отдельной функции */
 
    if( b )
    {
        // вычисляем площадь 
    }
 
    // вывод результатов 
    // ... 
}
1
28.01.2014, 11:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2014, 11:49
Помогаю со студенческими работами здесь

программа должна находить минимальный элемент массива среди элементов с нечетными индексами!
лЮДИ ХЕЛП! Массив заполняется с клавиатуры!

Программа должна находить сумму членов массива, но ещё на первом круге значение sum может стать -NAN
Доброго времени суток. Программа должна находить сумму членов массива, но ещё на первом круге...

Программа должна показывать содержимое текстового файла в окне произвольного размера
Тут друг меня попросил сделать задачу такую: Программа должна показывать содержимое текстового...

Программа должна находить в вводимом тексте цифры и вписывать их после слова "цифры"
Добрый день! Написал вот такую программму: #define _CRT_SECURE_NO_WARNINGS #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru