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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CigaroMan
Сообщений: n/a
#1

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

15.06.2012, 00:43. Просмотров 1040. Ответов 2
Метки нет (Все метки)

Добрый день.
Пытаюсь решить задачу:
Кликните здесь для просмотра всего текста
Создать абстрактный тип данных - класс вектор, который имеет указатель на 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++
Я не понимаю как написать функцию чтобы она проверяла или числа с плавающей запятой! Помогите! #include &lt;iostream.h&gt; #include...

[C++]Задача на классы - C++
Путем подражания создать новый класс Лэптоп. Переопределить указанную операцию Новый член класса - марка.Создать собственные конструкторы...

Задача на классы - C++
Написал програмку. Все работает,только неправильно считает среднюю скорость. Задача: Создать класс «транспортное средство»....

Массивы и классы C++. Задача. - C++
Доброго времени суток, товарищи... Объявляю награду за выполнение след. задач.. заинтересовавшиеся в ЛС отпишитесь

Классы, задача с классами - C++
Всем доброго времени суток. Помогите пожалуйста разобраться с заданием. Я даже не знаю с чего начать, т.к. классов толком и не знаю. Читал...

Задача на классы (Rectangle) - C++
Создать класс Rectangle, который сохраняет Декартовы координаты четырех вершин прямоугольника, конструктор для инициализации закрытых...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
15.06.2012, 00:48 #2
посмотри внимательно на

return tmp;

tmp создана в стеке, и как только ты выходишь из ф-ии, память, которую она занимала, начинает затираться чем-то другим (я так себе думаю).
LittleGirl
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 5
15.06.2012, 01:22 #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];
}

Так вроде работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2012, 01:22
Привет! Вот еще темы с ответами:

Задача на классы и статические указатели - C++
Условие задачи: в любой момент времени можно получить последнего из могикан (объект класса), без использования отдельного экземпляра. Нужно...

Задача на классы, конструктор с параметром и по умолчанию - C++
Скомпилировал, запустил. Добавляю новые элементы... и все. Программа прекращает свою работу, окно закрывается. Этапы вывода новых...

Задача: написать классы Rect и Size - C++
Написать Класс Rect где точка origin верхняя левая и класс Size ширина и высота

Абстрактные классы. Виртуальные функции. Задача - C++
ПОМОГИТЕ ПОЖАЛУЙСТА РЕШИТЬ ЗАДАЧУ: #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;locale.h&gt; #include&lt;time.h&gt; #include&lt;stdlib.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru