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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2014, 20:51   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Создать шаблонный класс - двумерный динамический массив

Задание:Создать шаблонный класс - двумерный динамический массив. Тип элементов массива определяется параметром шаблона. Предусмотреть функции для выполнения следующих операций: введение элементов в массив, создания копии массива по строкам, создания копии массива по столбцам, копирование выбранной строки или столбца, вывод массива на экран.
Есть проблема с копированием выбранной строки,почему-то при выводе,в скопированном массиве не выводится первый элемент,второй и третий-выводятся,а вот первый не хочет

Код:
/*Створити шаблонний клас – двовимірний динамічний масив. 
Тип елементів масиву визначається параметром шаблона. 
Передбачити функції для виконання таких операцій: введення елементів у масив, 
створення копії масиву по рядках, створення копії масиву по стовпцях, копіювання
вибраного рядка або стовпця, виведення масиву на екран.*/
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
#define K 5
template <typename T>
class array
{
private:
	int **p;
	int size;
	int row,column;
	int mtx[K][K];
public:

	array(int a,int b)
	{
		row=a;column=b;
		//cout<<" a= "<<a;
		p=new int *[a*b];
		for(int i=0;i<(a*b);i++)
		{
			p[i]=new int[(a*b)];

		
		}
/*		for(int i=0;i<row;i++)
		  for( int j=0;j<column;j++)
		  {  
				p[i][j]=a*b;
					cout<<" "<<p[i][j];
		
		}*/
	}


//	~array(){for(int i=0;i<row*column;i++) delete [] p[i]; };
	void enter();
	void copycolumn();
	void copyrow();
	void choose();
	void show();
};

int main()
{
	array <int> myArray(2,3);
	cout << "Enter numbers for matrix: \n";
     myArray.enter();
    cout << "Matrix: \n";
	myArray.show();
	myArray.copycolumn();
	myArray.copyrow();
	myArray.choose();
 
}

template <typename T>
void array<T>::choose()
{
	char str[10];
	int n,m;

	int **d=new int*[column*row];
	for(int i=0;i<(column*row);i++)
		{
			d[i]=new int[column*row];
		
		}
	cout<<"What do you want to choose: column or row? (write word)\n";
	a:cin>>str;
	if(strcmp(str,"row")==0)
	{	
		cout<<"row"<<row;
		cout<<"\nEnter number of "<<str<<" ";
			v:cin>>m;
			if(m>row)
			{
				cout<<"It's number more than limit,enter one more time\n";
				goto v;
			}
		int j=m;
		for(int i=0;i<column;i++)
		{	
			d[i]=p[i]; // проблема здесь,здесь копирую один массив в другой
	
			cout<<" "<<d[j][i]; //например если я ввожу m=1,в качестве первого элемента выводит мусор
	
		}		
	
	}
	else if(strcmp(str,"column")==0)
	{	
		cout<<"column";
		cout<<"\nEnter number of "<<str<<" ";
			b:cin>>n;
			if(n>column)
			{
				cout<<"It's number more than limit,enter one more time\n";
				goto b;
			}
	int j=n;
	for(int i=0;i<row;i++)
	{	
		d[i]=p[i];
		cout<<d[i][j]<<" ";
		cout<<"\n";
	}
		
	
	}
	else if(1)
	{
		cout<<"Error,enter one more time\n";
		goto a;

	}
	
	
	

	
}

template <typename T>
void array<T>::copyrow()
{
	cout<<"\n";
	int **r=new int*[column*row];
	for(int i=0;i<(column*row);i++)
		{
			r[i]=new int[column*row];

		
		}
	int j=0;
	for(int i=0;i<column;i++)
	{	
		r[i]=p[i];
		cout<<r[j][i]<<" ";
		//cout<<endl;
	}

}
template <typename T>
void array<T>::copycolumn()
{
	int **c=new int*[column*row];
	for(int i=0;i<(column*row);i++)
		{
			c[i]=new int[column*row];

		
		}
	int j=0;
	for(int i=0;i<row;i++)
	{	
		c[i]=p[i];
		cout<<c[i][j]<<" ";
		cout<<"\n";
	}

}
template <typename T>
void array<T>::enter()
	{
	
		for(int i=0;i<row;i++)
		  for( int j=0;j<column;j++)
		  {  
				cin>>p[i][j];
					//cout<<" "<<p[i][j];
		
		}
	}

template <typename T>
void array<T>::show()
{
	int temp;
	for(int i=0;i<row;i++)
				{
		          	for(int j=0;j<column;j++)
				
					cout<<p[i][j]<<" ";
					cout<<"\n";
				
				}
				
}
Вероника99 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
класс Динамический массив на C++ mixon-21 Помощь студентам 11 07.08.2013 16:39
Двумерный динамический массив Markuss Общие вопросы C/C++ 5 07.12.2010 00:40
создать динамический Стек через класс шаблон Petruha-nsk Общие вопросы C/C++ 1 08.11.2009 12:41
Двумерный динамический массив IceExecutioner Общие вопросы Delphi 1 04.06.2009 08:41