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; }