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

Задача на классы в C++ - C++

Восстановить пароль Регистрация
 
CigaroMan
Сообщений: n/a
15.06.2012, 00:43     Задача на классы в C++ #1
Добрый день.
Пытаюсь решить задачу:
Кликните здесь для просмотра всего текста
Создать абстрактный тип данных - класс вектор, который имеет указатель на float, число элементов и переменную состояния. Определить конструктор без параметров, конструктор с параметром, конструктор с двумя параметрами. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с одним параметром, - размер вектора, - выделяет место и инициализирует номером в массиве, конструктор с двумя параметрами выделяет место (первый аргумент) и инициализирует вторым аргументом. Деструктор освобождает память. Определить функцию, которая присваивает элементу массива некоторое значение (параметр по умолчанию), функцию которая получает некоторый элемент массива. В переменную состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы массива. Определить функцию печати. Определить функции сложения, умножения, вычитания, которые производят эти арифметические операции с данными этого класса и встроенного float. Определить методы сравнения: больше, меньше или равно. Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу этого класса.



Вот что написал:
Кликните здесь для просмотра всего текста
#include <iostream>
#include <stdio.h>
using namespace std;

class vector
{
public:
vector();
vector(int);
vector(int, int*);
~vector();
vector VecSum(vector&,vector&);
void VecSub(vector,vector);
void VecMul(vector,vector);
int& operator[](int);
void VecPrint();


private:
int num;
int *array;
};

vector::vector(){}

vector::vector(int n)
{
num=n;
array= new int[num];
}

vector::vector(int n, int *a)
{
num=n;
a=new int[num];
int i;
for(i=0;i<=num;i++)
array[i]=a[i];
}

vector::~vector()
{
delete array;
}

int& vector::operator[](int n)
{
return array[n];
}

void vector::VecPrint()
{
int i;
for(i=0;i<=num;i++)
cout<<array[i]<<" ";
cout<<endl;
}

vector vector::VecSum(vector& a, vector& b)
{
vector tmp(num);
int i;
for (i=0;i<=num;i++)
tmp[i]=a[i]+b[i];
return tmp;
}






int main()
{
int a[5];
int b[5];
freopen("input.txt","r",stdin);
int i;
for (i=0;i<=5;i++)
cin>>a[i];
for (i=0;i<=5;i++)
cin>>b[i];

//for (i=0;i<=5;i++)
// cout<<a[i]<<" ";

vector vec(5,a);
vector vec1(5,b);
//vector vec2(5);

//vec2.VecSum(vec1,vec2);
//vec.VecPrint();
return 0;
}


Вектор создается и заполняется элементами из массива.
Пытаюсь описать функцию сложения VecSum(vector, vector). На данный момент программа вылетает на (я подозреваю) заполнении вектора из существующего массива.

Помогте найти ошибки пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2012, 00:43     Задача на классы в C++
Посмотрите здесь:

C++ Классы, задача с классами
C++ [C++]Задача на классы
C++ [C++]Задача на классы
C++ Массивы и классы C++. Задача.
C++ Задача на классы
Задача на классы C++
Задача на классы (Rectangle) C++
Задача на классы и статические указатели C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
15.06.2012, 00:48     Задача на классы в C++ #2
посмотри внимательно на

return tmp;

tmp создана в стеке, и как только ты выходишь из ф-ии, память, которую она занимала, начинает затираться чем-то другим (я так себе думаю).
LittleGirl
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 5
15.06.2012, 01:22     Задача на классы в C++ #3
Проблема в конструкторе, нужно выделить память для array, а не для a:

vector::vector(int n, int *a)
{
num=n;
int i;
array= new int[num];
for(i=0;i<num;i++)
array[i]=a[i];
}

Так вроде работает.
Yandex
Объявления
15.06.2012, 01:22     Задача на классы в C++
Ответ Создать тему
Опции темы

Текущее время: 20:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru