#include <iostream>
#include <conio.h>
#define SIZE 4
using namespace std;
//---------------------------------------------------------------------------
class Array
{
private:
int *pArray;
int m_Max;
public:
Array();
~Array();
void InArray();
void OutArray();
void MinArray();
friend void Exchange(Array &oArray_1, Array &oArray_2);
};
//---------------------------------------------------------------------------
Array::Array()
{
pArray = new int[SIZE];
}
//---------------------------------------------------------------------------
Array::~Array()
{
delete []pArray;
}
//---------------------------------------------------------------------------
void Array::InArray()
{
cout << "Enter Array:" << endl;
cout << "------------" << endl;
for (int i = 0; i < SIZE; i++)
{
cout << i << "-element: ";
cin >> pArray;
}
cout << endl;
}
//---------------------------------------------------------------------------
void Array::OutArray()
{
cout << "Array: ";
for (int i = 0; i < SIZE; i++)
{
cout << pArray;
}
cout << endl;
}
//---------------------------------------------------------------------------
//Нахождение max элемента массива
void Array::MinArray()
{
for (int i = 0, max = pArray[0]; i < SIZE; i++)
{
if (pArray > max)
max = pArray;
}
m_Max = max;
}
//---------------------------------------------------------------------------
//Обмен местами векторов
void Exchange(Array &oArray_1, Array &oArray_2)
{
int temp = oArray_1.m_Max;
oArray_1.m_Max = oArray_2.m_Max;
oArray_2.m_Max = temp;
}
//---------------------------------------------------------------------------
int main()
{
Array oArray_1;
Array oArray_2;
oArray_1.InArray();
oArray_2.InArray();
oArray_1.OutArray();
oArray_2.OutArray();
cout << endl;
oArray_1.MinArray();
oArray_2.MinArray();
Exchange(oArray_1, oArray_2);
oArray_1.OutArray();
oArray_2.OutArray();
cout << endl << "Press any key ";
while(!_kbhit());
return 0;
}
(С++) Обмен max элементов векторных объектов местами
Найти в каждом объекте MAX значение элемента векторов и поменять их местами.
Содержимое объектов (их векторов) до и после обмена вывести на экран.
Помогите плиз...почему то не работает...вроде все правильно со ссылками сделал:confused:
...или может какие предложения будут что исправить?:)
Код:
Сделай так методом класса
Код:
public:
...
void Exchange(Array &oArray_1,Array &oArray_2);
...
...
void Exchange(Array &oArray_1,Array &oArray_2);
...
Измени саму ф-ию так
Код:
void Array::Exchange(Array &oArray_1,Array &oArray_2)//
{
int temp;
for (int i = 0; i < SIZE; i++){
if(pArray == oArray_1.m_Max){
temp = pArray;
pArray = oArray_2.m_Max;
}
}
}
{
int temp;
for (int i = 0; i < SIZE; i++){
if(pArray == oArray_1.m_Max){
temp = pArray;
pArray = oArray_2.m_Max;
}
}
}
И потом вызывай отдельно для каждого вектора в main так
Код:
...
oArray_1.Exchange(oArray_1,oArray_2);
oArray_2.Exchange(oArray_2,oArray_1);
...
oArray_1.Exchange(oArray_1,oArray_2);
oArray_2.Exchange(oArray_2,oArray_1);
...
Все работает.
Спасибо большое! Все работает!