Data structures: Rare arrays - Applications solved


1) Basic operations with rare arrays.
#include<stdio.h>
#include<conio.h>
#include <iostream>
using namespace std;
 
template <class T>
class element
{
public:
	int lin;
	int col;
	int val;
	element()
	{
		lin=0;
		col=0;
		val=0;
	}
	element(int a, int b, int c)
	{
		lin=a;
		col=b;
		val=c;
	}
 
};
 
//in this list we memorized rare arrays
template <class T>
class arrays
{
	int nr_lin;
	int nr_col;
	int nr_elem;
	element<T> data[10];
public:
	arrays();
	void assignment(arrays<T> ob);
	arrays<T> creation();                    //creating rare arrays 
	void print();                             //display rare arrays
	void addElement(element<T> e);    //add an item
	void erase(element<T> e);         //delete an item
	void modifyElement(element<T> e);  //modify element
	void addition(arrays<T> ob1, arrays<T> ob2);  //addition of two rare arrays 
	//void multiplication(arrays<T> ob1, arrays<T> ob2); //multiplication of two rare arrays 
	//void multConst(int cst);             //multiplication of one rare arrays with a constant      
	arrays<T> transposed(arrays<T> a);               //calculation transposed
};
 
 
template <class T>
arrays<T>::arrays()
{
	nr_col=0;   //number of lines
	nr_lin=0;   //number of columns
	nr_elem=0;  //number of null elements
}
 
template <class T>
void arrays<T>::assignment(arrays<T> ob)
{
	nr_lin=ob.nr_lin;
	nr_col=ob.nr_col;
	nr_elem=ob.nr_elem;
	for(int i=0; i<nr_elem; i++)
		data[i]=ob.data[i];
}
 
 
template <class T>
arrays<T> arrays<T>::creation()
{
	cout <<"Number of lines arrays= ";
	cin >>nr_lin;
	cout <<"Number of columns arrays= ";
	cin >>nr_col;
	cout <<"Number of null elements in arrays= ";
	cin >>nr_elem;
	
	cout <<"Enter items: " <<endl;
	for(int i=1; i<=nr_elem; i++)
	{
		cout <<"element " <<i+1 <<endl;
        cout<<"line= ";
		cin >>data[i].lin;
		cout<<"column= ";
		cin >>data[i].col;
		cout <<"value= ";
		cin >>data[i].val;
	}
	return *this;
}
 
template <class T>
void arrays<T>::print()
{
	for(int i=1; i<=nr_lin; i++)
	{
		for (int j=1; j<=nr_col; j++)
		{
			int ok=1;
            for(int k=1; k<=nr_elem; k++)
			     if((data[k].lin==i) && (data[k].col==j))
				 {
						cout<<data[k].val <<" ";
						ok=0;
				  }
 
			if(ok==1)
				cout <<"0 ";
		}
		cout <<endl;
	}
}
 
template <class T>
void arrays<T>::addElement(element<T> e)
{
	int ok=1;
    for(int i=0; i<nr_elem; i++)
		if((data[i].lin == e.lin) &&  (data[i].col == e.col))
		{
			data[i].val += e.val;
			ok=0;
		}
	if(ok==1)
	{
            nr_elem++;
			data[nr_elem-1].lin=e.lin;
			data[nr_elem-1].col=e.col;
			data[nr_elem-1].val=e.val;
	}
}
 
template <class T>
void arrays<T>::erase(element<T> e)
{
   for(int i=1; i<nr_elem; i++)
   {
	   if((data[i].lin == e.lin) && (data[i].col == e.col) &&  (data[i].val == e.val))
	   {
			data[i].val -= e.val;
	   }
   }
}
 
template <class T>
void arrays<T>::modifyElement(element<T> m)
{
   for(int i=0; i<nr_elem; i++)
   {
	   if((data[i].lin == m.lin) && (data[i].col == m.col))
	   {
			data[i].val= m.val;
	   }
   }
 
}
template <class T>
void arrays<T>::addition(arrays<T> ob1, arrays<T> ob2)
{
	assignment(ob1);
    for(int i=0; i<ob2.nr_elem; i++)
		addElement(ob2.data[i]);
}
 
//linile devin coloane
template <class T>
arrays<T> arrays<T>::transposed(arrays<T> a)
{
   nr_lin=a.nr_col;
   nr_col=a.nr_lin;
   nr_elem=a.nr_elem;
   for(int i=0;i<=nr_elem;i++)
     {data[i].val=a.data[i].val;
      data[i].lin=a.data[i].col;
      data[i].col=a.data[i].lin;
     }
   return *this;
}
 
void main()
{
	arrays<int>ob1; arrays<int>ob2; arrays<int>ob3;
	element<int>e; element<int>s; element<int>m;
 
	cout <<"Creating arrays 1 " <<endl;
	ob1.creation();
    cout <<"Display arrays 1 " <<endl;
	ob1.print();
 
    cout<<"Transposed arrays is: "<<endl;
    ob2.transposed(ob1);
    ob2.print();
 
	cout <<"Creating arrays 2 " <<endl;
	ob2.creation();
    cout <<"Display arrays 2 " <<endl;
	ob2.print();
 
	cout <<"Assembly of two arrays"  <<endl;
	ob3.addition(ob1, ob2);
	ob3.print();
 
	cout <<"Add item in arrays" <<endl;
	cout <<"line= ";
    cin >>e.lin;
	cout <<"column= ";
	cin >>e.col;
	cout <<"value= ";
	cin >>e.val;
    ob1.addElement(e);
	ob1.print();
 
	cout <<"Delete an item from the array" <<endl;
	cout <<"line= ";
    cin >>s.lin;
	cout <<"column= ";
	cin >>s.col;
	cout <<"value= ";
	cin >>s.val;
    ob1.erase(s);
	ob1.print();
 
	cout <<"Modify an item from the array" <<endl;
	cout <<"line= ";
    cin >>m.lin;
	cout <<"column= ";
	cin >>m.col;
	cout <<"New value= ";
	cin >>m.val;
    ob1.modifyElement(m);
	ob1.print();
 
	int g;
	cin >>g;
}
Cookies help us deliver our services. By using our services, you agree to our use of cookies.