Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2015, 20:25   #1
Nyash
Пользователь
 
Регистрация: 28.01.2015
Сообщений: 11
По умолчанию Конструктор глубокого копирования (С++)

Необходима помощь с глубоким копированием, реализовать конструктор глубоко копирования, чтобы результатом программы был вывод на экран двух массивов: один с удаленным элементом, а второй исходный


Код:
#include <iostream.h>
#include <iomanip>
#include <windows.h>

class Mas{
int size;
char *Hon;
int *mas_liter;
public:


Mas(){    //конструктор в котором заполняется массив литер
cout<<"Введите кол-во литер: ";
cin>>size;

Hon=new char[size];
mas_liter=new int[26];   //англ алфавит
for (int i=0; i < size; i++) {
cout<<"Hon["<<i<<"]=";
cin>>Hon[i];
mas_liter[i]=0;
}


system("cls");
}

void Show(){
system("cls");
for (int i = 0; i < size; i++) {
cout<<Hon[i]<<" ";
}cout<<endl;
system("pause");
system("cls");
}

void Find(){
system("cls");
for (int i = 0; i < 26; i++) {
	for (int kol = 0; kol < size; kol++) {
		if (Hon[kol]=='a'+i) {
			mas_liter[i]++;
}}}
}

void Show2(){
system("cls");
for (int i = 0; i < 26; i++) {
	char h='a'+i;
	cout<<setw(0)<<h<<" ";
	}cout<<endl;
for (int i = 0; i < 26 ; i++) {
	cout<<setw(0)<<mas_liter[i]<<" ";
}
cout<<endl;
system("pause");
system("cls");
}

void Delete(){
int k;
system("cls");
cout<<"Введите номер элемента: ";
cin>>k;
if ( k > size || k < 1){
cout << "Ошибка удаления" << endl;
}
for(int ix = k - 1; ix < size - 1; ix++){
Hon[ix] = Hon[ix + 1];
}
size--;
system("pause");
system("cls");
}

void Correct(){
system("cls");
int a;
char y;
cout<<"Введите номер элемента: ";
cin>>a;
cout<<"Введите новый элемент: ";
cin>>y;
Hon[a]=y;
system("pause");
system("cls");
}

};

void Temp(){
cout<<"1-->Поиск повторений"<<endl;
cout<<"2-->Вывести массив на экран"<<endl;
cout<<"3-->Вывести таблицу повторений"<<endl;
cout<<"4-->Удаление элемента"<<endl;
cout<<"5-->Редактирование"<<endl;
}


int main(){
SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
int i;
Mas a;      //заполняем массив
do{
Temp();
cin>>i;
switch (i) {

case 1:
a.Find();
break;

case 2:
a.Show();   //Выводим массив
break;

case 3:
a.Show2();  //Выводим скок раз повторяется каждая буква
break;

case 4:
a.Delete(); //удаляем элемент из массива
break;

case 5:
a.Correct();
break;

}
}
while(i!=0);



system("pause");
return 0;
}
Nyash вне форума Ответить с цитированием
Старый 08.12.2015, 23:36   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Конструктор глубокого копирования
Это что за зверь такой?

Отформатируйте код, пожалуйста.
Я думаю многие, в том числе и я, не станут его читать в таком виде.
Базиля вне форума Ответить с цитированием
Старый 09.12.2015, 01:40   #3
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Цитата:
Конструктор глубокого копирования
Ого,впервые слышу о таком.
spectrum988 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор копирования Сtrl Общие вопросы C/C++ 6 31.03.2011 10:18
Конструктор копирования DartDayring Общие вопросы C/C++ 4 16.11.2010 17:46
Конструктор копирования. 123er4 Общие вопросы C/C++ 4 13.06.2010 01:27
Конструктор копирования Superlotles Общие вопросы C/C++ 2 24.05.2010 17:39
Конструктор копирования Djaconda Общие вопросы C/C++ 3 11.06.2008 18:54