Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ZADACA 1 */
- /*
- Да се креира генеричка класа Array за работа со низи. Класата треба во себе да ги вклучи:
- покажувач кон елементи од соодветниот тип
- број на елементи во рамките на низата
- Елементите во рамките на објектот треба динамички да се алоцираат. Класата треба да ги поддржува следниве методи:
- -----
- void Erase() - ги брише сите елементи од низата
- Т operator[](int i) - за пристап до соодветниот елемент во низата (вклучувајќи и проверка дали индексот е во границите)
- int GetLength() - го враќа бројот на елементите во низата
- -----
- Да се преоптовари operator<< (ostream) за работа со класата (да се претпостави дека елементите од низата го имаат преоптоварено операторот <<).
- Надвор од класата да се напишат следниве функции:
- -----
- void BubbleSort(Array<T> t&) - ги сорира елементите користејќи го BubbleSort алгоритмот (да се претпостави дека операторот > e преоптоварен за елементите од класата).
- Т Sum(Array<T> &) - ги сумира елементите (да се претпостави дека операторот += e преоптоварен за елементите од класата).
- Т Average(Array<T>&) - користејќи ја функцијата за сума пресметува просечна вредност на елементите ( операторот / е преоптоварен за елементите)
- bool Equal (Array<T>&, Array<M>&) - проверува дали низите се еднакви (се претпоставува дека операторот == е преоптоварен за соодветните класи)
- bool Equal (Array <T>&, Array<double>& ) - која ќе изврши пацијална специјализација и ќе смета дека:
- - два елементи се исти ако и само ако се разликуваат за помалку од 0.1
- - разликата од просечната вредност на низите мора да е помала од 0.5.
- Sample input:
- 0.05
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- Sample output:
- The arrays:
- Array[0] = 1, Array[1] = 2, Array[2] = 3, Array[3] = 4, Array[4] = 5, Array[5] = 6, Array[6] = 7, Array[7] = 8, Array[8] = 9, Array[9] = 10, Array[10] = 11
- and
- Array[0] = 1, Array[1] = 2, Array[2] = 3, Array[3] = 4, Array[4] = 5, Array[5] = 6, Array[6] = 7, Array[7] = 8, Array[8] = 9, Array[9] = 10, Array[10] = 11
- ARE same!
- The Average of the array adArray is: 6.05
- The arrays:
- Array[0] = 1, Array[1] = 2, Array[2] = 3, Array[3] = 4, Array[4] = 5, Array[5] = 6, Array[6] = 7, Array[7] = 8, Array[8] = 9, Array[9] = 10, Array[10] = 11
- and
- Array[0] = 1.05, Array[1] = 2.05, Array[2] = 3.05, Array[3] = 4.05, Array[4] = 5.05, Array[5] = 6.05, Array[6] = 7.05, Array[7] = 8.05, Array[8] = 9.05, Array[9] = 10.05, Array[10] = 11.05
- ARE same!
- */
- #include <iostream>
- #include <cmath>
- #include <cstdlib>
- using namespace std;
- template <typename T>
- class Array{
- private:
- T* pole;
- int size;
- public:
- Array<T>(int ssize){
- size=ssize;
- pole = new T[size];
- }
- void Erase(){
- for(int i=0;i<size;i++)
- delete []pole;
- pole=new T[size];
- }
- T &operator[](int a){
- return pole[a];}
- int GetLength(){return size;}
- friend ostream &operator<<(ostream &out,const Array<T> &a){
- for (int i=0;i<a.size;i++){
- if(i==a.size-1) cout<<"Array["<<i<<"] = "<<a.pole[i];
- else out<<"Array["<<i<<"] = "<<a.pole[i]<<", ";}
- }
- };
- template <typename T>
- void BubbleSort(Array<T> &t){
- T pom;
- for(int i=0;i<t.GetLength();i++)
- for(int j=i;j<t.GetLength()-1;j++)
- if(t[i]>t[j]){
- pom=t[i];
- t[i]=t[j];
- t[j]=pom;}
- }
- template <typename T>
- T Sum(Array<T> &t){
- T zbir=0;
- for(int i=0;i<t.GetLength();i++)
- zbir+=t[i];
- return zbir;}
- template <typename T>
- double Average(Array<T> &t){
- return Sum(t)/t.GetLength();
- }
- template <typename T,typename M>
- bool Equal(Array<T>& a , Array<M>&b){
- if(a.GetLength()==b.GetLength()){
- bool flag=true;
- for(int i=0;i<a.GetLength();i++)
- if(a[i]!=b[i]){
- flag=false;
- break;}
- if(flag)
- return true;
- else return false;
- }
- else return false;}
- template <typename T>
- bool Equal (Array <T>&t, Array<double>&d){
- if(t.GetLength()==d.GetLength()){
- bool flag=true;
- for(int i=0;i<t.GetLength();i++)
- if(fabs(t[i]-d[i])>0.1){
- flag=false;
- break;}
- if(fabs(Average(t)-Average(d))>0.5)
- flag=false;
- if(flag)
- return true;
- else return false;
- }
- else return false;}
- int main(){
- int n;
- double r;
- cin>>r;
- cin>>n;
- Array<int> anArray(n);
- Array<double> adArray(n);
- Array<int> intArray2(n);
- for (int nCount = 0; nCount < n; nCount++){
- cin>>anArray[nCount];
- adArray[nCount] = anArray[nCount] + r;
- }
- BubbleSort(anArray);
- intArray2 = anArray;
- cout<<"The arrays: "<<endl;
- cout<<anArray;
- cout<<endl<<"and "<<endl;
- cout<<intArray2;
- cout<<endl;
- cout<<((Equal(anArray,intArray2))?" ARE":" ARE NOT")<<" same!"<<endl;
- cout<<"The Average of the array adArray is: "<<Average(adArray)<<endl;
- cout<<"The arrays: "<<endl;
- cout<<anArray;
- cout<<endl<<"and "<<endl;
- cout<<adArray;
- cout<<endl;
- cout<<((Equal(anArray,adArray))?" ARE":" ARE NOT")<<" same!";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement