Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2009, 20:59   #1
p_alex
 
Регистрация: 14.10.2009
Сообщений: 6
По умолчанию MSVC++ 2008. Разработать и протестировать класс Point

Здравствуйте, извните за сумбурное изложение, елси есть вопросы пишите.
сама проблема вот в чем.
в прикрепленном архиве проект (visual C++ 2008)
задача:
Разработать и протестировать класс Point.
Создать динамический массив объектов этого класса,
задать произвольно координаты и вывести те из них,
которые попали внутрь круга с центром в точке (1, 2) и радиусом 5.
прототип класса Point описан в point.h
Разработать класс , производный от класса Point - класс cPoint цветная точка

вроде разработал, вот только не работает как нужно (((

в архиве, в папке 3.8_cPoint, есть файл result.jpg
там видно проблему, когда я ввожу координаты точек и работаю с классом Point
все ок, но когда к работе приступает производный класс cPointб я так понимаю
координаты точек кудато пропадают. происходит срезка, или что-то еще.

что с этим сделать? в чем я не прав, подскажите пожалуйста.
с уважением Alex Pavlenko
Вложения
Тип файла: zip 3.8_cPoint.zip (807.4 Кб, 25 просмотров)
p_alex вне форума Ответить с цитированием
Старый 15.10.2009, 02:43   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Создать динамический массив объектов этого класса,
вот этого я что-то не нашел... вместо того,чтобы создать N_MASS объектов класса Point или cPoint вы создаете внутри каждого массив координат

Код:
x = new int[N_MASS];
y = new int[N_MASS];
а нужно как то так

Код:
class Point
{
public:
	int x,y;
	Point() { x=0; y=0; }
           ...
};

void Point::put()		//ввод точек пользователя
{
     cout << "Put coordinates:\n";
     cout << "put x :";
     cin >> x;
     cout << "put y :";
     cin >> y;
     cout << "\n";
}

void Point::compare()		//сравнение точек
{
      if ((R*R) > (x-CX)*(x-CX)+(y-CY)*(y-CY))	//принадлежит ли точка окружности
	cout << "The point x" <<x<<",y"<<y<<" is in the Circle\n";
      else
	cout << "The point x" <<x<<",y"<<y<<" isn't in the Circle\n";
}


int main()
{
    Point *point = new Point[N_MASS];
 
    for(int i=0;i<N_MASS;i++)
    {
	point[i]->put();
	point[i]->compare();
    }
}

Цитата:
там видно проблему, когда я ввожу координаты точек и работаю с классом Point
все ок, но когда к работе приступает производный класс cPointб я так понимаю
координаты точек кудато пропадают. происходит срезка, или что-то еще.
хм... координаты из cPoint никуда не пропадают, их там просто нет, для того чтобы они туда попали необходимо вызвать метод put() для объекта типа cPoint и ввести координаты,а вы почемуто эту строку закоментировали


Код:
cPnt->SetColor();
cPnt -> put();
cPnt->compare();
counter вне форума Ответить с цитированием
Старый 18.10.2009, 22:04   #3
p_alex
 
Регистрация: 14.10.2009
Сообщений: 6
По умолчанию

Добрый вечер, вот еще одно задание, предшественник предыдущего.
так-как прошлое было сделано не правильно решиль исправить ошибки с самого начала. вот что получилось

задание:
Разработать и протестировать класс Point. Создать динамический массив объектов этого класса, задать произвольно координаты и вывести те из них, которые попали внутрь круга с центром в точке (1, 2) и радиусом 5.

в прикрепленном архиве решение.

оцените, правильно-неправильно?
спасибо, с уважением Alex Pavlenko

да counter большое спасибо за помощь
Вложения
Тип файла: zip 3.4_point.zip (629.2 Кб, 27 просмотров)
p_alex вне форума Ответить с цитированием
Старый 18.10.2009, 22:32   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

проверить вхождение точки в круг можно и так

Код:
#include <math.h>
...

if( (abs(x)-CX)<R && (abs(y)-CY)<R )
  cout << "The point x" <<x<<",y"<<y<<" is in the Circle\n";

Код:
int main()
{
	Point * alex;
	alex = new Point[N_MASS];
	Point();  // это для чего?
counter вне форума Ответить с цитированием
Старый 18.10.2009, 23:20   #5
p_alex
 
Регистрация: 14.10.2009
Сообщений: 6
По умолчанию

Point();
конструктор по умолчанию?
на счет математических библиотек полность согласен )))


(как вы поняли я еще только учусь... так что еще много где могу ошибаться)

Последний раз редактировалось p_alex; 18.10.2009 в 23:23.
p_alex вне форума Ответить с цитированием
Старый 18.10.2009, 23:25   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

конструктор по умолчанию вызывается для каждого объекта из массива в момент выделения для него памяти (создание объекта) вот в этой строке

Код:
alex = new Point[N_MASS];
а так Point(); создается еще один неподконтрольный объект
counter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу протестировать Speech Tester v 1.0 Alex Cones Софт 6 26.08.2009 21:42
Помогите протестировать программу NetSpace Софт 9 09.06.2009 08:19
Как протестировать написанную программу? Сергей089 Общие вопросы Delphi 6 05.12.2008 18:01
Как сделать XP интерфейс в MSVC++? AngelOfDeath Общие вопросы C/C++ 5 31.10.2008 01:48
ошибка при работе со структурой msvc vvviperrr Общие вопросы C/C++ 0 07.05.2008 20:34