Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многомерные массивы, Нужна небоьшая помощь 
:(
    Опции темы
J0ker
Дата 11.12.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(GoldFinch @  11.12.2008,  13:57 Найти цитируемый пост)
точка ближайшая к центру масс, т.е. к среднему арифметическому координат точек. 

среднеарифметическое и центр масс необязательно совпадают, потому, что это разные вещи


--------------------
user posted image
PM MAIL   Вверх
GoldFinch
Дата 11.12.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



J0ker, при одинаковых массах совпадают. Я привел такую формулировку для удобного перехода от более очевидного физического подхода к формулировке задачи к менее очевидному математическому.

upd: убрал очипятку) поспешишь....

Это сообщение отредактировал(а) GoldFinch - 11.12.2008, 21:00
PM MAIL ICQ   Вверх
Снежанна
Дата 11.12.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.12.2008

Репутация: нет
Всего: нет



  Спасибо, bsa,  Dmi3ev (хотя я не совсем представляю, как воспользоваться <mypoint.h>). Также, мне необхадимо указать все некорректные ситуации. Что это значит?
PM MAIL   Вверх
J0ker
Дата 11.12.2008, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(GoldFinch @  11.12.2008,  18:57 Найти цитируемый пост)
J0ker, при одинаковых саммах совпадают

при одинаковых массах точек
тогда да

Добавлено через 1 минуту и 55 секунд
но это интуитивное решение... надо-бы как-то подкрепить док-вом... впрочем я думаю оно легко выводится и так оно и будет


--------------------
user posted image
PM MAIL   Вверх
bsa
Дата 11.12.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Снежанна @ 11.12.2008,  20:24)
Также, мне необхадимо указать все некорректные ситуации. Что это значит?

Это значит, что ты должна указать все ситуации, когда твоя программа будет работать некорректно. Например, если есть более одной искомой точки (частные варианты: все точки в одном месте, всего 2 точки, все точки в вершинах правильных N-угольков), или всего одна точка в массиве.
PM   Вверх
Dmi3ev
Дата 11.12.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Столько споров, давайте посмотрим, я набросал решение (оно не идеально, но...):
Код

//---------------------------------------------------------------------------
#include <mypoint.h>
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

//---------------------------------------------------------------------------


int main()
{
MyPoint A[10];
double min;
double sr[10];
randomize();
for (int i=0; i<10; i++)
 {
  A[i].Set((random(100)-50), (random(100)-50));
  cout<<"A["<<i<<"]"<<"("<<A[i].Getx()<<", "<<A[i].Gety()<<")"<<endl;
 }
for (int i=0; i<10; i++)
 {
  sr[i]=0;
  for (int j=0; j<10; j++)
   {
    if (j!=i)
     {
      sr[i]+=sqrt(pow((A[i].Getx()-A[j].Getx()),2)+pow((A[i].Gety()-A[j].Gety()),2));
     }
   }
 }
min=sr[0];
int mi=0;
for (int i=1; i<10; i++)
 {
  if (sr[i]<min)
   {
    min=sr[i]; mi=i;
   }
 }
cout<<endl<<"Answer: "<<endl;
cout<<"A["<<mi<<"]"<<"("<<A[mi].Getx()<<", "<<A[mi].Gety()<<")"<<endl;
cout<<"Summ for this point="<<min;
return 0;
}
//---------------------------------------------------------------------------

Центр масс имеет место быть ))) По-моему мнению. А вото mypoint.h
Код

#ifndef MYPOINT_H
#define MYPOINT_H
class MyPoint
{
public:
MyPoint(double a=0.0, double b=0.0){x=a; y=b;};
void Set(double a, double b){x=a; y=b;};
double Getx(){return x;};
double Gety(){return y;};
~MyPoint(){};
private:
double x, y;
};
#endif


Добавлено через 7 минут и 27 секунд
хотя алгоритм нахождения центра масс фигуры, а потом сравнивание этого центра с каждой точкой (какая ближе)...
хз, по-моему, так проще, хотя, может, прав не я...  smile 


--------------------

PM MAIL   Вверх
Dmi3ev
Дата 11.12.2008, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Вообщем, как говорится, ЧТД
Решил двумя способами, 1-сумма расстояний, 2-расстояние до центра масс, ответы совпадают )))
Код

//---------------------------------------------------------------------------
#include <mypoint.h>
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

//---------------------------------------------------------------------------


int main()
{
MyPoint A[10];
MyPoint Cm;
double xcm, ycm;
double min;
double sr[10];
double srcm[10];
double mincm;
int micm;
randomize();
for (int i=0; i<10; i++)
 {
  A[i].Set((random(100)-50), (random(100)-50));
  cout<<"A["<<i<<"]"<<"("<<A[i].Getx()<<", "<<A[i].Gety()<<")"<<endl;
 }
for (int i=0; i<10; i++)
 {
  xcm+=A[i].Getx();
  ycm+=A[i].Gety();
 }
xcm/=10;
ycm/=10;
Cm.Set(xcm, ycm);
for (int i=0; i<10; i++)
 {
  sr[i]=0;
  for (int j=0; j<10; j++)
   {
    if (j!=i)
     {
      sr[i]+=sqrt(pow((A[i].Getx()-A[j].Getx()),2)+pow((A[i].Gety()-A[j].Gety()),2));
     }
    srcm[i]=sqrt(pow((A[i].Getx()-Cm.Getx()),2)+pow((A[i].Gety()-Cm.Gety()),2));
   }
 }
min=sr[0];
int mi=0;
mincm=srcm[0];
micm=0;
for (int i=1; i<10; i++)
 {
  if (sr[i]<min)
   {
    min=sr[i]; mi=i;
   }
  if (srcm[i]<mincm)
   {
    mincm=srcm[i]; micm=i;
   }
 }
cout<<endl<<"Answer 1: "<<endl;
cout<<"A["<<mi<<"]"<<"("<<A[mi].Getx()<<", "<<A[mi].Gety()<<")"<<endl;
cout<<"Summ for this point="<<min<<endl;
cout<<endl<<"Answer 2: "<<endl;
cout<<"C ("<<Cm.Getx()<<", "<<Cm.Gety()<<")"<<endl;
cout<<"A["<<micm<<"]"<<"("<<A[micm].Getx()<<", "<<A[micm].Gety()<<")"<<endl;
cout<<"A--->C"<<mincm<<endl;
return 0;
}
//---------------------------------------------------------------------------




--------------------

PM MAIL   Вверх
J0ker
Дата 12.12.2008, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(Dmi3ev @  11.12.2008,  23:48 Найти цитируемый пост)
Вообщем, как говорится, ЧТД
Решил двумя способами, 1-сумма расстояний, 2-расстояние до центра масс, ответы совпадают )))

это не может считаться док-вом, т.к. верно на ограниченом множестве проверенным с помощью вашей программы например


--------------------
user posted image
PM MAIL   Вверх
Dmi3ev
Дата 12.12.2008, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



J0ker, Вы не юрист? или математик? просто эти люди любят к словам докапываться. Хорошо, не чтд. Скажу так, данная программа выдает из 10(0) раз одинаковые решения обоими способами, я задавал множество и побольше размером, точно все также... Вобщем, на доказательство не претендую, но ... Мне кажется все стало ясно... Себе я доказал, что хотел... Решил поделиться с другими своими изысканиями... Но другие слишком умные... Можно еще не только целые координаты задавать(у меня они только целые в программе)... Я согласен с тем, что это доказательство не может считаться неопровержимым. Да я и не в том смысле говорил чтд. Я имел в виду, что догадки GoldFinch да и ваши тоже оказались подкреплены и программой...  


--------------------

PM MAIL   Вверх
J0ker
Дата 12.12.2008, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



я бы на месте препода точно-бы докопался  smile

Добавлено через 1 минуту и 12 секунд
Цитата(Dmi3ev @  12.12.2008,  01:50 Найти цитируемый пост)
Да я и не в том смысле говорил чтд

ну звиняйте
для меня чтд означает "что и требовалось доказать"   smile 


--------------------
user posted image
PM MAIL   Вверх
Dmi3ev
Дата 12.12.2008, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

я бы на месте препода точно-бы докопался  smile

я ж говорю, шибко умный ВЫ smile  у меня с математикой неплохо, я все это прекрасно знаю, что такое ЧТД и даже еще кое-что  smile но медальками не звеню, в отличии от ВАС  smile Ладно, боюсь сказать лишнего, а то ВЫ определениями задавите smile 


--------------------

PM MAIL   Вверх
GoldFinch
Дата 12.12.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(Dmi3ev @  12.12.2008,  04:10 Найти цитируемый пост)
у меня с математикой неплохо, я все это прекрасно знаю, что такое ЧТД и даже еще кое-что 

чето незаметно
PM MAIL ICQ   Вверх
Kallikanzarid
Дата 12.12.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 240
Регистрация: 9.11.2008

Репутация: 2
Всего: 3



Добавлю, что лучше в таком случае считывать x- и y-координаты в бинарные деревья, чтобы потом быстро найти точку, ближе всего лежащую к среднему арифметическому.
PM MAIL   Вверх
Dmi3ev
Дата 12.12.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата


чето незаметно 

GoldFinch! Докажи обратное))) Если бы ты сидел со мной рядом и я бы тебе сказал, что точки принадлежащие одной прямой не лежат в одной плоскости, или, что шар квадратный, ты вряд ли бы стал спорить))) А кричать о том, что ты умный, не значит быть умным))) Скорее это значит обратное))) Что конкретно в программной реализации тебя не устраивает??? По делу говори, а не посты зарабатывай...))) заметно, незаметно... Удачи...


--------------------

PM MAIL   Вверх
Ln78
Дата 12.12.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Цитата(J0ker @  11.12.2008,  20:27 Найти цитируемый пост)
но это интуитивное решение... надо-бы как-то подкрепить док-вом... впрочем я думаю оно легко выводится и так оно и будет 


Цитата(Dmi3ev @  12.12.2008,  01:50 Найти цитируемый пост)
J0ker, Вы не юрист? или математик? просто эти люди любят к словам докапываться. Хорошо, не чтд. Скажу так, данная программа выдает из 10(0) раз одинаковые решения обоими способами, я задавал множество и побольше размером, точно все также... Вобщем, на доказательство не претендую, но 


Dmi3ev, это инженерное доказательство, но не математическое. Если математическое, то примерно так:

user posted image

В производной здесь опечатка, понятно, что если дифференцируем по x, то игрековой части не будет. Лень перерисовывать.

Это сообщение отредактировал(а) Ln78 - 12.12.2008, 20:28
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.