With the addition of subtraction displays no nonsense
Создаем вектор получаем элемент массива Выводим элемент на экран: 2 0 1 2 3 4 Сложение: 12 13 14 15 16 Вычитание: 4 5 6 7 8 Умножение: but when multiplying the error
Process finished with exit code -1073741819 (0xC0000005) Vector.h
#include <cstdio> #include <iostream>; class Vector{ public: //конструктор без параметров Vector(){ length=1; vector = new int*[length];//выделяем место для одного элемента vector[0]= (int *) 0;//и инициализирует его в ноль }; //конструктор с параметром Vector(int len){ if (! len < 1) { length = len; vector = new int *[length];//выделяет место аргументом for (int i = 0; i < length; i++) vector[i] = (int *) i;//инициализирует номером элемента в массиве }else{ printf("Не верное значение длинны массива"); } }; //конструктор с двумя параметрами Vector(int len,int value){ if (! len < 1) { length = len; vector = new int *[length];//выделяет место первым аргументом for (int i = 0; i < length; i++) vector[i] = (int *) value;//инициализируем вторым аргументом }else{ printf("Не верное значение длинны массива"); } }; //присваивает элементу массива некоторое значение (определить номер и новое значение элемента) int SetVectorItem(int item, int value){ if (item >=0 && item < length) vector[item] = (int *) value; } //функция которая получает некоторый элемент массива int GetVectorItem(int i){ if(i>0&&i<length){ return (int)vector[i-1]; }else{ printf("За пределами массива"); } return i; }; //Определить функцию печати. void PrintAllItems(){ for (int i = 0; i < length; i++) std::cout<<(int)vector[i]<<" "; printf("\n"); } void PrintItem(int i){ if(i>0&&i<length) printf("%i\n", vector[i-1]); } //Определить функции сложения void Add(int value){ for (int i = 0; i < length; i++) vector[i] += value;//с данными этого класса и целым числом } //Определить функции вычитания void Sub(int value){ for (int i = 0; i < length; i++) vector[i] -= value;//с данными этого класса и целым числом } //Определить функции умножения void Mul(int value){ for (int i = 0; i < length; i++) vector[i] = (int *) (*vector[i] * value);//с данными этого класса и целым числом } //Деструктор освобождает память. ~Vector(){ delete vector;// память освобождается vector = NULL;// указатель заменяется на 0 (нуль-указатель) } private: int length = 0; int **vector; int states; }; main.cpp
#include <Windows.h> #include "Vector.h" int main() { SetConsoleCP(65001);// установка кодировки для ввода SetConsoleOutputCP(65001);// установка кодировки для вывода printf("Создаем вектор\n"); Vector *v1 = new Vector(5); printf("получаем элемент массива\n"); int value = v1->GetVectorItem(3); printf("Выводим элемент на экран: %i \n", value); v1->PrintAllItems(); printf("Сложение: "); v1->Add(3); v1->PrintAllItems(); printf("Вычитание: "); v1->Sub(2); v1->PrintAllItems(); printf("Умножение: "); // v1->Mul(2); // v1->PrintAllItems(); delete v1; // system("pause"); return 0; }