Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

(С++) Обмен max элементов векторных объектов местами

18K
10 июня 2007 года
Maniac.by
19 / / 20.03.2007
Создать 2 объекта разработанного класса - динамический вектор.
Найти в каждом объекте MAX значение элемента векторов и поменять их местами.
Содержимое объектов (их векторов) до и после обмена вывести на экран.

Помогите плиз...почему то не работает...вроде все правильно со ссылками сделал:confused:
...или может какие предложения будут что исправить?:)
Код:
#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;
}
320
11 июня 2007 года
m_Valery
1.0K / / 08.01.2007
Проблема в ф-ии Exchange(Array &oArray_1,Array &oArray_2).
Сделай так методом класса
 
Код:
public:
...
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;
        }
    }
}

И потом вызывай отдельно для каждого вектора в main так
 
Код:
...
             oArray_1.Exchange(oArray_1,oArray_2);
    oArray_2.Exchange(oArray_2,oArray_1);
...

Все работает.
18K
11 июня 2007 года
Maniac.by
19 / / 20.03.2007
Спасибо большое! Все работает!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог