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

Центр тяжести - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Семафоры(7 потоков) http://www.cyberforum.ru/cpp-beginners/thread350724.html
Требуется создать программу которая будет создавать 7 потоков и в каждом выполнять операцию а=а-1(изначально установить а=10). Доя решение задачи взаимного исключения использовать семафоры. Семафоры через библиотеку <windows.h>.( ReleaseSemaphore, WaitForSingleObject,CreateThread.) Кто умеет прошу помочь. Можно создать с 2-мя потоками, я думаю я пойму общий принцип. Заранее спасибо!
C++ Клиент к игре **** название abclient Добрый вечер. Вот хотел бы узнать,с помощью чего можно сделать такой клиент,и новичок способен ли его сделать? И есть ли какой урок(И) по данной сборке,т.е не именно по аб... а по созданию таких вот штук?! http://www.cyberforum.ru/cpp-beginners/thread350699.html
С Днем програмиста!!! C++
!!!!!!!
C++ Иерархия геометрических объектов
Иерархия геометрических объектов наследием: класс точка -> класс треугольник -> класс квадрат -> класс прямоугольник. на си++ и mfc , помогите пожалуйсто а то у меня даже мыслей никаких нету...(
C++ В ромбе заданы диагонали d1 и d2. вычеслить и вывести на экран другие параметры. http://www.cyberforum.ru/cpp-beginners/thread350649.html
В ромбе заданы диагонали d1 и d2. вычеслить и вывести на экран другие параметры. Пожалуйста помогите решить в чистом c++ (((
C++ В треугольнике заданы две стороны a, b и площадь S. Вычислить и вывести на экран остальные элементы треугольника. В треугольнике заданы две стороны a, b и площадь S. Вычислить и вывести на экран остальные элементы треугольника. Помогите пожалуйста, чет не могу разобраться. Находил уже здесь подобную, но там уже и if\else и т.д. Если можно - чистым С++, заранее спасибо :) Добавлено через 1 час 28 минут using namespace std; int main(void) { double a, b, c, A, B, C, S, cqr, hb; подробнее

Показать сообщение отдельно
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
12.09.2011, 21:57     Центр тяжести
Горю!
По координатам вершин многоугольника требуется найти координаты его центра тяжести. Стороны многоугольника друг с другом не соприкасаются (за исключением соседних - в вершинах) и не пересекаются. Площадь многоугольника не равна нулю.



Технические условия
Входные данные

В первой строке находится число N, в следующих N строках - пары чисел - координаты точек. Если соединить точки в данном порядке, а также соединить первую и последнюю точки, получится заданный многоугольник.

Число вершин 3 ≤ N ≤ 100000, координаты вершин в декартовой системе координат целые и по модулю не превосходят 20000.

Выходные данные

Вывести два числа с двумя знаками после запятой - координаты центра тяжести

Пример входных данных
Sample 1
4
5 0
0 5
-5 0
0 -5

Sample 2
4
1 1
11 1
11 11
1 11

Пример выходных данных
Sample 1
0.00 0.00

Sample 2
6.00 6.00

Прошёл всего 2 теста из 5ти. Пробовал ещё на всякий случай сортировать вершины в поряд обхода, вдруг в тестах не так что-то, не помогает.

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
#include <iostream>
#include <iomanip>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
 
struct pt {
  double x, y;
};
 
bool cmp (pt a, pt b) {
  return a.x < b.x || a.x <= b.x && a.x >= b.x && a.y < b.y;
}
 
bool cw (pt a, pt b, pt c) {
  return a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y) < 0;
}
 
bool ccw (pt a, pt b, pt c) {
  return a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y) > 0;
}
 
double dist(pt a, pt b)
{
return sqrt((b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y));
}
 
double geron(pt a, pt b, pt c)
{
double p,a1,a2,a3;
a1=dist(a,b);
a2=dist(b,c);
a3=dist(a,c);
p=a1+a2+a3;
p/=2;
return sqrt(p*(p-a1)*(p-a2)*(p-a3));
}
 
int main()
{
pt a[100001];
int n,i;
double s,x0,y0,x1,y1,s1;
scanf("%d",&n);
  s=0; x0=0; y0=0;
  for (i=0; i<n; i++)
   {
    scanf("%lf%lf",&a[i].x,&a[i].y);
   }
  for (i=1; i<n; i++)
   {
    s1=geron(a[0],a[i-1],a[i]);
    s+=s1;
    x1=a[0].x+a[i-1].x+a[i].x;
    y1=a[0].y+a[i-1].y+a[i].y;
    x0+=((x1*s1)/3.0);
    y0+=((y1*s1)/3.0);
   }
  cout << fixed << setprecision(2) << x0/s << " " << y0/s << endl;
return 0;
}
Помогите найти ошибку!

Добавлено через 1 час 8 минут
Пишите кто знает как решается задача!

Добавлено через 2 часа 7 минут
КТО НИБУДЬ ЕСТЬ ТУТ???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru