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

код реализации класса вектор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ решение судоку http://www.cyberforum.ru/cpp-beginners/thread36819.html
Судоку размера n называется квадрат со стороной n2, разделенный на n2 средних квадратов со стороной n, каждый из которых разделен на n2 маленьких квадратов. В каждом маленьком квадрате записано число от 1 до n2. Судоку называется правильным, если в каждом столбце, каждой строке и каждом среднем квадрате встречаются все числа от 1 до n2. Недавно Вася нарисовал Судоку размера n. Ваша задача –...
C++ программка с динамическими массивами 1. Ввести размер массива; 2.Сформировать массив с помощью операции new или библиотечных функций malloc (calloc); 3.Заполнить массив (можно с помощью датчика случайных чисел); 4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы); 5.Напечатать массив(ы)-результат(ы); 6.Удалить динамические массивы с помощью операции delete или библиотечной функции free. Сформировать... http://www.cyberforum.ru/cpp-beginners/thread36795.html
C++ Перегрузка функций в Си++
Задачка легкая...но я вообще никак не дружу с си. Написать перегруженные функции и основную программу, которая их вызывает. а) для сложения десятичных дробей; б) для сложения обыкновенных дробей.
C++ Минимальный элемент массива
Напишите кто может , как после ввода элементов массива найти минимальный элемент этого массива , без использования функции min.
C++ Односвязанные и двух-связанные списки http://www.cyberforum.ru/cpp-beginners/thread36758.html
Должны быть следующие функции: 1) Ввод количества элементов и заполнение списка случайными значениями 2) Вывод списка на экран 3) сортировка списка. 4) Добавление элемента в конец списка 5) Удаление элемента с заданным значением 6) Обмен между элементами. Сравнить скорость сортировки односвязного списка, двух-связного списка и массива. Для сравнения времени выполнения можно использовать функцию...
C++ Как вытащить массив структур? Вот собственно код: struct CandyBar { char name; float weight; int colorie; }; подробнее

Показать сообщение отдельно
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
15.06.2009, 13:36  [ТС]     код реализации класса вектор
вообщем разобраться не могу(((( есть код нашел
#include<fstream>
using namespace std;
class vector
{
private:
double *mas; //объявлен массив с именем mas по указателю
int N; //N количество элементов массива

public:
vector(); //создан пустой конструктор
vector(double *,int );
~vector(); //деструктор
void push_back(double); //функция для добавления элемента в конец
void pop_back(ofstream&); //функция для удаления последнего элемента
void insert(double,int); //функция для вставки в любое место
void erase(double,int); //произвольное удаление
void show_vector(ofstream&);
};
vector::vector(double *M,int k)
{
N=k;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=M[i];

}
vector::vector()
{
N=0;
mas=0;
}
vector::~vector() //деструктор
{
delete[]mas; //удаление массива
}
void vector::show_vector(ofstream& ooo)
{
for(int i=0;i<N;i++)
ooo<<mas[i]<<' ';
ooo<<endl;
}
int vector::size()
{
return N;
}
void vector:ush_back(double x) //добавление нового элемента в конец массива
{

if(N==0)
{
N=N+1;
mas=new double[1];
mas[0]=x;
}
else
{
double *mas2=new double[N];
for(int i=0;i<N;i++)
mas2[i]=mas[i];
delete[]mas;
N=N+1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
mas[N-1]=x;
delete[]mas2;

}

}
void vector:op_back(ofstream& ooo)
{
if(N!=0)
{
double *mas2=new double[N-1];
for(int i=0;i<N-1;i++)
{
mas2[i]=mas[i];
}
delete[]mas;
N=N-1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
delete[]mas2; //удаление промежуточного массива
}
else
ooo<<"вектор пуст";

}
void vector::insert(double x,int k)
{
if(N==0)
{
mas=new double[1];
k=0;
mas[k]=x;
N=N+1;
}
else
{
double *mas2=new double[N+1];
for(int i=0;i<k;i++)
mas2[i]=mas[i];
mas2[k]=x;
for(int i=k+1;i<N+1;i++)
mas2[i]=mas[i-1];
delete[]mas;
N=N+1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
delete[]mas2;
}


}
void vector::erase(double x,int k)
{
if((N!=0)&&(k<=N))
{
double *mas2=new double[N-1];
for(int i=0;i<k;i++)
mas2[i]=mas[i];
for(int i=k;i<N-1;i++)
mas2[i]=mas[i+1];
delete[]mas;
N=N-1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
delete[]mas2;
}
}
void main()
{
ifstream in("input.txt");
ofstream out("output.txt");
vector A;
A.push_back(10);
A.push_back(5);
A.push_back(4);
A.show_vector(out);
A.pop_back(out);
A.pop_back(out);
A.show_vector(out);
A.insert(2,1);
A.insert(25,0);
A.show_vector(out);
double B[20];
int n;
in>>n;
for(int i=0;i<n;i++)
in>>B[i];
vector C(B,n);
C.show_vector(out);
}
ну вот токо проблема возникает во первых
1)нужна функция которая в случии если вектор заполнен не полнасть, то что-то с ним делала
2)я выше писал void vector:: pop_back(double y) //удаление последнего элемента
мне нужно знать что мы посылаемЮ, здесь double y моя догадка, и сам метод нужен, и если есть, то описание

Добавлено через 36 секунд
-вот этот смайл меняем на : p
 
Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru