Короче у меня большие проблемы с ООП. Собственно, вопроса пока тока два - как вызвать из main метод add и правильно написана add?
void add() – создаем массив и добавляем в него элемент.
void sort() – сортировка массива
float mid() – среднее арифметическое всех элементов в массиве
Пользователь вводит количество векторов. Потом определяет тип вектора(1-integer,2-float), далее вызывается add и формируется массив. С этим массивом уже выполняем sort и mid.
Пример, как все это должно выглядеть:
Enter the number of vector: 2
Enter type of 1 vector (1-integer, 2-float): 1
Enter length of vector: 3
Enter the vector: 9 2 5
Enter type of 2 vector (1-integer, 2-float): 2
Enter length of vector: 4
Enter the vector: 1 5 3.079 0.5
After work:
2 5 9
Middle value: 5.33333
0.5 1 3.079 5
Middle value: 2.39475
template <class T>Все, что останется сделать в наследнике - правильно инстанцировать шаблон...
class Vector {
T arr[10]; // и работай с нужным типом
...
};
#include <stdio.h>
#include <stdafx.h>
#include <iostream>
using namespace std;
class vector
{
protected:
int n;
public:
vector(int nn)
{
n=nn;
}
void virtual sort();
void virtual add()
{
n++;
}
float virtual mid()
{
return 0;
}
int virtual num()
{
return n;
}
void virtual show()
{
}
};
class intvector:public vector
{
int a[10];
public:
intvector(int nn, int* na):vector(nn)
{
int i=0;
while (i<n) *(a+i)=*(na+i++);
}
void add(int b)
{
vector::add();
*(a+n)=b;
}
void sort();
float mid()
{
int i=0;
float s=0;
vector::mid();
while (i<n)
s=s+*(a+i++);
return s/n;
}
int num()
{
return n;
}
void show()
{
int i=0;
vector::show();
while(i<n)
cout<<*(a+i++)<<" ";
}
};
class floatvector:public vector
{
float a[10];
public:
floatvector(int nn, float* na):vector(nn)
{
int i=0;
while (i<nn)
*(a+i)=*(na+i++);
}
void add(float b)
{
vector::add();
*(a+n)=b;
}
void sort();
int num()
{
return n;
}
float mid()
{
int i=0;
float s=0;
vector::mid();
while (i<n)
s=s+*(a+i++);
return s/n;
}
void show()
{
int i=0;
vector::show();
while(i<n)
cout<<*(a+i++)<<" ";
}
};
void vector::sort()
{}
void intvector::sort()
{
vector::sort();
int i,b,j;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (*(a+i)>*(a+j))
{
b=*(a+i);
*(a+i)=*(a+j);
*(a+j)=b;
}
}
void floatvector::sort()
{
vector::sort();
int i,j;
float b;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (*(a+i)>*(a+j))
{
b=*(a+i);
*(a+i)=*(a+j);
*(a+j)=b;
}
}
vector* mas[20];
void main()
{
int i=0,j,m,n,ia[10],c;
float fa[10];
cout << "Enter the number of vectors: ";
cin >> m;
while (i<m)
{
cout << "Enter the type of the " << i+1 << " vector(1-integer/2-float): ";
cin >> c;
cout << "Enter the length of the " << i+1 << " vector: ";
cin >> n;
cout << "Enter the vector: ";
if (c==1)
{
for (j=0;j<n;j++)
cin >> *(ia+j);
*(mas+i)=new intvector(n,ia);
}
else if (c==2)
{
for (j=0;j<n;j++)
cin >> *(fa+j);
*(mas+i)=new floatvector(n,fa);
}
else
{
cout << "Incorrect command!!!";
i--;
}
i++;
}
for (i=0; i<m; i++)
{
(*(mas+i))->show();
cout<<"\n";
}
cout << "After work: \n";
for (i=0; i<m; i++)
{
(*(mas+i))->sort();
(*(mas+i))->show();
cout<<"\n";
cout << "Middle value: " << (*(mas+i))->mid() << "\n";
}
getchar();
}