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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] классы 
:(
    Опции темы
Elinochka
Дата 5.12.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста с этим заданием =((((((
Создать класс “POINT”,  в котором хранятся два числа –  координаты точек. В классе создать следующие методы: (1) конструктор, при помощи которого подаются начальные значения, 
(2) деструктор, который сообщает о ликвидации объекта, 
(3) метод “CHANGE” с двумя параметрами, которые изменяют значения координат точки на соответствующие количество (а не меняет), 
(4) метод “PRINT”, который выводит на экран координаты данной точки, 
(5) метод „DISTANCE” с двумя аргументами – координатами другой точки, которые выводят расстояние между этими двумя точками. 

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


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Скорее всего, тебе в Центр Помощи.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
baldina
Дата 5.12.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Как же я люблю студентов  smile 

Код

#include <iostream>
#include <cmath>

class POINT {

public:
   POINT (double, double); //конструктор
   ~POINT (); //деструктор
   void CHANGE(double,double);
   void PRINT () const;
   double DISTANCE (const POINT&) const;
private:
   double x_,y_;
};

POINT::POINT (double x, double y) : x_(x), y_(y) {}

POINT::~POINT () 
{ 
  std::cout << "Сообщаю о разрушении объекта\n"; 
}

void POINT::CHANGE (double dx, double dy)
{
   x_ += dx;
   y_ += dy;
}

void POINT::PRINT() const
{
   std::cout << "Point at (" << x_ << "," << y_ << ")\n"; 
}

double POINT::DISTANCE (const POINT& p) const
{
   double dx = x_ - p._x;
   double dy = y_ - p._y;

   return sqrt (dx*dx + dy*dy);
}



не очень понятно про два аргумента функции DISTANCE, но если не предполагается, что это нестатический метод класса, то может быть так:

class POINT {
...
  static double DISTANCE (const POINT& p1, const POINT& p2)
  {
   double dx = p1.x_ - p2._x;
   double dy = p1.y_ - p2._y;

   return sqrt (dx*dx + dy*dy);
  }
...
};


Это сообщение отредактировал(а) baldina - 6.12.2007, 01:42
PM MAIL   Вверх
DonJuansMagicPants
Дата 5.12.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <iostream>
#include <math.h>
using namespace std;

class point 
{
private:
    int x,y;
public:
    point(): x(0),y(0)
    {}
    ~point()
    {cout<<"delete"<<endl;}
    
    int change (int n1, int n2)
    {
        x+=n1;
        y+=n2;
        return (x,y);
    }

    void print () 
    {
        cout<<"("<<x<<","<<y<<")"<<endl;
    }

    double distance (int pax, int pay)
    {
        double dist = (x-pax)^2+(y-pay)^2;
        return (sqrt(dist));
    }
};


Затык в методе distance от чего-то возвращает обратно значения x и y , должен квадратный корень из dist, посмотрите умудренные опытом почему так ?
    
PM MAIL   Вверх
JackYF
Дата 6.12.2007, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(DonJuansMagicPants @  5.12.2007,  23:35 Найти цитируемый пост)
double dist = (x-pax)^2+(y-pay)^2;

бейсиком надо меньше заниматься smile

"^" в С++ - операция побитового xor. Для степени есть функция pow.
Или здесь уже
Код

double dist = (x-pax)*(x-pax)+(y-pay)*(y-pay);



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Earnest
Дата 6.12.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
...
PM   Вверх
Elinochka
Дата 7.12.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как выглядит main часть этой программы? Напишите пожалуйста =((((((


PM MAIL   Вверх
baldina
Дата 8.12.2007, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вы издеваетесь?
У вас задание - "создать класс". Класс у вас есть. Функция main здесь совершенно ни к чему.
Понимаю, вам нужно написать законченную программу с использованием этого класса, что-то вроде тестирования. Ну так придумайте что-нибудь сами, создайте пару объектов типа POINT и повызывайте для них методы.
PM MAIL   Вверх
Elinochka
Дата 8.12.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



baldina, я не издеваюсь, я всего лишь попросила помощи. C классами я столкнулась первый раз, потому и не знаю как их сделать правильно вместе с main частью программы :((((
PM MAIL   Вверх
baldina
Дата 8.12.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Код

int main ()
{
  POINT p (1,2);
 
  p.PRINT ();

  POINT p2 = p;
 
  p.CHANGE (3,4);

  p.PRINT ();

  double distance = p.DISTANCE (p2);

  std::cout << "Distance between these points is " << distance << std::endl;

  return 0;
}

PM MAIL   Вверх
Elinochka
Дата 9.12.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



baldina, Спасибо огромное =))
PM MAIL   Вверх
Elinochka
Дата 9.12.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



baldina, скажите пожалуйста, можно ли как то написать эту строчку проще?

POINT::POINT (double x, double y) : x_(x), y_(y) {}

PM MAIL   Вверх
baldina
Дата 10.12.2007, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Да уж куда проще...

Так

Код

POINT::POINT (double x, double y)
{
   x_ = x;
   y_ = y;
}


понятней?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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