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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите!!! Горит курсак!!! Класс вектор в СИ++ 
V
    Опции темы
root_777
Дата 11.12.2007, 02:16 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть задание: 

"Сформировать класс вектор реализующий все математические операции с векторами (сложение, вычитание, умножение, получение модуля)"   smile 

ничерта не знаю smile . пытался, пытался и пришел к этому:

Код


#ifndef _vector_
#define _vector_
#include <iostream>
using namespace std;
class vector
{
    int size;
    int * v;
    public:
    vector(int size);
    ~vector ();
    friend vector operator+(vector v1, vector v2)
    {
        return v1+v2;
    };
    friend vector operator*(vector v1, vector v2)
    {
        return v1*v2;
    };
    friend vector operator-(vector v1, vector v2)
    {
        return v1-v2;
    };
    friend vector operator%(vector v1, vector v2)
    {
        return v1%v2;
    };
};
#endif


но даже понятия не имею правильно ли... smile 

Это сообщение отредактировал(а) root_777 - 11.12.2007, 02:38
PM MAIL   Вверх
VSergeyV
Дата 11.12.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

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



 smile  
во первых
Цитата(root_777 @  11.12.2007,  02:16 Найти цитируемый пост)
получение модуля

Модуль вектора - квадратный корень из суммы квадратов его элементов

но никак не 
Код

v1%v2





PM MAIL ICQ   Вверх
bsa
Дата 11.12.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



root_777, во-вторых, ключевое слово friend указывается для дружественных функций (которым нужен доспуп к приватной части класса), но никак не для методов класса.
В-третьих, ты в операторах вызываешь сами себя. В итоге возникнет бесконечная рекурсия.
Вот реализация класса с оператороми присваивания и сложения. Остальные сам доделай по аналогии:
Код
class Vector
{
      unsigned dim;
      double *data;
public:
      explicit Vector(unsigned d) : dim(d), data(new double[d]){}
      Vector(const Vector& v) { //конструктор копирования
           dim = v.dim;
           data = new double[dim];
           std::memcpy(data, v.data, sizeof(data)*dim);
      }
      ~Vector() { delete []data; }
      const Vector& operator=(const Vector &v) {
           if (dim != v.dim) {
               dim = v.dim;
               delete []data;
               data = new double[dim];
           }
           std::memcpy(data, v.data, sizeof(data)*dim);
           return *this;
      }
      Vector operator+(const Vector &v) const {
             if (dim < v.dim) {
                    Vector t(v.dim);
                    int i;
                    for(i = 0; i < dim; ++i)
                        t.data[i] = v.data[i] + data[i];
                    for(; i < v.dim; ++i)
                        t.data[i] = v.data[i];
                    return t;
             } else {
                    Vector t(dim);
                    int i;
                    for(i = 0; i < v.dim; ++i)
                        t.data[i] = v.data[i] + data[i];
                    for(; i < dim; ++i)
                        t.data[i] = v.data[i];
                    return t;
             }
      }
};

PM   Вверх
root_777
Дата 11.12.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



bsa:
         ты человечище!!!!
         спасибо огроменное!!!
         как буду в Москве - с меня ПИВО!!!
PM MAIL   Вверх
JackYF
Дата 11.12.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(root_777 @  11.12.2007,  13:22 Найти цитируемый пост)
ты человечище!!!!
         спасибо огроменное!!!
         как буду в Москве - с меня ПИВО!!! 

В таких случаях ставят плюс в репутацию или просят других его поставить.
Будем считать, что просьба засчитана и выполнена.

Также помечай решённой тему.


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


Новичок



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

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



Ну сто постов у меня не наберется... а вот других попросить - мысль хорошая.
будем делать...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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