Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
#1

Поменять местами минимальный и максимальный элементы в объектах класса - C++

18.12.2011, 22:29. Просмотров 456. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <iostream>
#include <windows.h>
using namespace std;
 
const n=5;
 
class array 
{ 
public: 
   array();   
   array(int); 
   array(const array &); 
   ~array();  
   void vvod(); 
   void print();
   void maxel();
   void minel();
   void obmen(array &mas);
private: 
   int imax,imin;
   int *mas;
}; 
array::array()
{
    mas=new int[n];
    if (mas) 
        cout<<"Massiv inicializirovan\n";
    else 
        cout<<"Ne hvataet pamyati\n";
}
array::~array()
{
    delete[] mas;
}
array::array(int)
{}
 
void array::vvod()
{   
    cout<<"\n\t Massiv " <<endl;
    for(int i=0; i<n; i++)                      
        {
        cout<<"\t a[ "<<i+1<<"]=";
        cin>>mas[i];
        }
}
 
void array::print() 
{ 
    for(int i=0; i<n; i++)                    
        {
         cout<<" "<<mas[i];
        }
} 
 
void array::maxel()
{   
    int max=mas[0];
    for(int i=0; i<n; i++) 
    {
 
        if (mas[i]>max)
        {
            max=mas[i];
        }
        imax=max;
    }
}
 
void array::minel()
{   
    int min=mas[0];
    for(int i=0; i<n; i++) 
    {
 
        if (mas[i]<min)
        {
            min=mas[i];
        }
        imin=min;
    }
}
 
void array::obmen(array &mas)
{
    int temp;
    for (int i=0; i<n; i++)
    {
        if (mas[i]==mas.imax || mas[i]==mas.imin)
        {
            temp=mas.imin;
            mas.imin=mas.imax;
            mas.imax=temp;
        }
    }
}
 
void main() 
{ 
    array mas1; 
    array mas2; 
        
    mas1.vvod();
    mas2.vvod();
 
    cout<<"Ishodnye dannye: "<<endl;
    mas1.print();
    cout<<endl;
    mas2.print();
 
    mas1.maxel();
    mas2.maxel();
 
    mas1.minel();
    mas2.minel();
 
    mas1.obmen(mas1);
    mas2.obmen(mas2);
 
    cout<<"\nResult: "<<endl;
    mas1.print();
    cout<<endl;
    mas2.print();
}
Затруднения со строкой
C++
1
if (mas[i]==mas.imax || mas[i]==mas.imin)
Мне кажется условие здесь неверное...как правильно??
И компилятор на этой строке выдает ошибку
binary '[' : 'class array' does not define this operator or a conversion to a type acceptable to the predefined operator
Что не так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 22:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять местами минимальный и максимальный элементы в объектах класса (C++):

Поменять местами максимальный и минимальный элементы - C++
А вот ету задачку поможете решить????? Поменять местами максимальный и минимальный элементы.

Поменять местами минимальный и максимальный элементы вектора - C++
ребят как написать код, чтобы в векторе V менялись местами минимальный и максимальный элементы

Поменять местами максимальный и минимальный элементы матрицы - C++
Здравствуйте. Помогите, пожалуйста, написать следующую программу: Дана матрица порядка n. Поменять местами максимальный и минимальный...

Поменять местами минимальный и максимальный элементы массива - C++
:(Поменять местами минимальный и максимальный елементы масива размером 10.Обезательно использывать функцыю

Поменять местами минимальный и максимальный элементы массива - C++
Добрый день! Проблема заключается в следующем: Дан массив a из 10 элементов,нужно найти минимальное и максимальное число и после того...

Поменять местами минимальный и максимальный элементы файла - C++
Дан файл вещественных чисел, в нём требуется поменять местами минимальный и максимальный элементы. Сам обмен понятен, не ясно как...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CEBEP
106 / 106 / 9
Регистрация: 21.03.2010
Сообщений: 440
18.12.2011, 22:39 #2
ну я же только что показывал как... почитайте что такое ссылки (int& например)... т. е. вы находите мансимальный(минимальный) элемент, выписываете его в отдельную память. дальше тоже не верно, но какая разница, если вы уже начали работать с независимой (неверной) областью памяти? Если лень, можно просто запоминать номер максимального элемента, а потом писать что-то типа cnt = mas[imax], mas[imax] = mas[imin], mas[imin] = cnt;
0
Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
18.12.2011, 23:16  [ТС] #3
CEBEP, я переделывала задачу из темы "Динамические массивы", она работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <windows.h>
using namespace std;
 
const n=5;
 
class array 
{ 
public: 
   array();   
   array(int); 
   array(const array &); 
   ~array();  
   void vvod(); 
   void print();
   void maxel();
   void obmen(array &mas1,array &mas2);
private: 
   int imax;
   int *mas;
}; 
array::array()
{
    mas=new int[n];
    if (mas) 
        cout<<"Massiv inicializirovan\n";
    else 
        cout<<"Ne hvataet pamyati\n";
}
array::~array()
{
    delete[] mas;
}
array::array(int)
{}
 
void array::vvod()
{   
    cout<<"\n\t Massiv " <<endl;
    for(int i=0; i<n; i++)                      
        {
        cout<<"\t a[ "<<i+1<<"]=";
        cin>>mas[i];
        }
}
 
void array::print() 
{ 
    for(int i=0; i<n; i++)                    
        {
         cout<<" "<<mas[i]<<"\n ";
        }
} 
void array::maxel()
{   
    int max=mas[0];
    for(int i=0; i<n; i++) 
    {
 
        if (mas[i]>max)
        {
            max=mas[i];
        }
        imax=max;
    }
}
 
void array::obmen(array &mas1,array &mas2)
{
    int temp;
    for (int i=0; i<n; i++)
    {
        if (mas[i]==mas1.imax)
        {
            temp=mas[i];
            mas[i]=mas2.imax;
        }
    }
}
 
void main() 
{ 
    array mas1; 
    array mas2; 
        
    mas1.vvod();
    mas2.vvod();
 
    cout<<"Ishodnye dannye: "<<endl;
    mas1.print();
    cout<<endl;
    mas2.print();
 
    mas1.maxel();
    mas2.maxel();
 
    mas1.obmen(mas1,mas2);
    mas2.obmen(mas2,mas1);
 
    cout<<"\nResult: "<<endl;
    mas1.print();
    cout<<endl;
    mas2.print();
}
Так, как вы писали я сделала эту, все получилось...но мне нужна функция с обменом...поэтому не могу переделать..как сделать, чтоб осталась эта функция?
0
CEBEP
106 / 106 / 9
Регистрация: 21.03.2010
Сообщений: 440
19.12.2011, 13:18 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <windows.h>
using namespace std;
 
class array 
{ 
public: 
   array();   
   array(int); 
   array(const array &); 
   ~array();  
   void print();
   void vvod();
   void swap(array&);
private: 
   int& maximum();
   int* mas;
   int n;
}; 
array::array() : mas(0)
{}
array::~array()
{
        delete[] mas;
        cout<<"Ob'ekty unichtojeny"<<endl;
}
array::array(int an)
{
        n=an;
        mas=new int[n];
        if (mas) 
                cout<<"Massiv inicializirovan\n";
        else 
                cout<<"Ne hvataet pamyati\n";
}
array::array(const array& a):
  mas(new int[a.n]),
  n (a.n)
{
    for(int i = 0; i != n; ++i)
    {
        mas[i] = a.mas[i];
    }
}
 
void array::vvod()
{       
        cout<<"\t Input N: ";
    cin>>n;
    delete[] mas;
    mas = new int[n];
    cout<<"\n\t Massiv " <<endl;
        for(int i=0; i<n; i++)                      
        {
                cout<<"\t a["<<i+1<<"]: ";
        cin>>mas[i];
        }
}
 
void array::print() 
{ 
        for(int i=0; i<n; i++)                    
        {
             cout<<" "<<mas[i];
        }
} 
int& array::maximum()
{       
    int i = 0, ret = 0;
    for(; i != n; ++i)
    {
        ret = mas[i] > mas[ret] ? i : ret;
    }
    return mas[ret];
}
 
void array::swap(array& swa)
{
        int& maxA = this->maximum();
        int& maxB = swa.maximum();
        int cnt = maxA;
        maxA = maxB;
        maxB = cnt;
}
void main() 
{ 
        array a; 
        array b; 
                
    a.vvod();
        b.vvod();
 
        cout<<"Ishodnye dannye: "<<endl;
        a.print();
        cout<<endl;
        b.print();
 
        a.swap(b);
 
        cout<<"\nResult: "<<endl;
        a.print();
        cout<<endl;
        b.print();
}
Добавлено через 39 секунд
обмен = swap
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 13:18
Привет! Вот еще темы с ответами:

Поменять местами минимальный и максимальный элементы массива - C++
68. Поменять местами минимальный и максимальный элементы массива размера 10. 81. Дан массив размера N. Найти номера двух ближайших...

Поменять местами минимальный и максимальный элементы массива - C++
Привет всем, помогите составить программку для этой задачи. Поменять местами минимальный и максимальный элементы массива. Использовать...

Поменять местами минимальный и максимальный элементы массива - C++
Необходимо написпть программу, которая меняет местами минимальный и максимальный елемент массива местами, далее не трогая текущие...

Поменять местами максимальный и минимальный элементы в массиве - C++
помогите пожалуйста, никак не получаются задачки... 2) Записать элементы массива Х, удовлетворяющие условию 1≤Xi≤2, подряд в массив Y....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.12.2011, 13:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru