Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
sweetguru
1 / 1 / 1
Регистрация: 10.02.2013
Сообщений: 21
1

Класс ArrayController, нужно создать функцию Sort(direction d)

10.02.2013, 16:30. Просмотров 323. Ответов 5
Метки нет (Все метки)

Добрый день, мне нужно создать в классе функцию Sort(direction d), которая получает как аргумент(лучше будет, если пользователь введет его) переменную d типа direction(создается с enum, которая выбирает сортировку по возрастанию или наоборот).
я вот функцию написала, да не знаю, как писать код для ввода этой переменной, может с помощью функции SetDirection()?? или в main?
я подумала перегрузить оператор >> для ввода direction, но не получилось,
помогите с этим, вот мой фрагмент кода:
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
void CArrController::Sort()
{
    direction d;
    cout<<"CHoose Direction: ";
    cin>>d;
    switch (d)
    {
    case progressive:
        for (int i = 0; i < length; i++)
        {
            for (int j = i+1; j < length; j++)
            {
                if(arr[i]>arr[j])
                    swap(arr[i], arr[j]);
            }
        }
        break;
    case regressive:
        for (int i = 0; i < length; i++)
        {
            for (int j = i+1; j < length; j++)
            {
                if(arr[i]<arr[j])
                        swap(arr[i], arr[j]);
            }
        }
        break;
        cout<<arr;
    };
и вот это:

C++
1
enum direction { progressive, regressive };
написала в заголовочном файле, перед определением класса, правильно? или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 16:30
Ответы с готовыми решениями:

Дали курсач,создать морской бой. Нужно создать функцию
Нужна функция с помощью которой можно размещать 1местные корабли #include...

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию)
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.)
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и...

Нужно создать класс С,наследующий классы A и B
class A { int x; int a; A() { x=1; } } class B

Нужно создать самый простой класс (С++)
Самый обыкновенный класс, любой.

5
Rivory
10.02.2013, 16:50
  #2

Не по теме:

Интересно. Но в голову приходят только какие-то быдлокодерские решения. Хотелось бы посмотреть на ответ опытных людей.

0
Lonkar
5 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 7
10.02.2013, 17:18 3
Я бы сделал так
C++
1
2
3
4
5
6
void CArrController::Sort()
{
    int d;
    cout<<"CHoose Direction (0 - progressive, 1 - regressive): ";
    cin>>d;
...
Ну а если хочется оператор, то он выглядит как-то так
C++
1
2
3
4
5
istream& operator >> (istream& strm, direction& dir )
{
   strm >> (int&)dir;
   return strm;
}
0
sweetguru
1 / 1 / 1
Регистрация: 10.02.2013
Сообщений: 21
10.02.2013, 17:49  [ТС] 4
Спасибо, а как потом вывести конечный array? я перегрузила << для массива, но в выше написанном коде cout<<arr не выводит на экран,, может потому что arr приватный член класса? и как получить доступ для вывода?

кстати, вот код перегрузки:
C++
1
2
3
4
5
6
ostream& operator<<(ostream &out,  CArrController& ar)
{
    for (int i = 0; i < ar.length; i++)
        out<<ar.arr[i]<<" ";
    return out;
}
0
Lonkar
5 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 7
10.02.2013, 18:16 5
В выше написанном коде строчка cout<<arr никогда не вызывается. Её нужно вынести за switch
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void CArrController::Sort()
{
    int d;
    cout<<"CHoose Direction: ";
    cin>>d;
    switch (d)
    {
    case progressive:
...
        break;
    case regressive:
...
        break;
    };
    cout<<arr;
Если оператор << скомпилировался, то значит данные не приватные
Для обращение к приватным данным необходимо добавить оператор в друзья, дописав в описание класса строчку
C++
1
friend ostream& operator<<(ostream &out,  CArrController& ar);
0
sweetguru
1 / 1 / 1
Регистрация: 10.02.2013
Сообщений: 21
11.02.2013, 00:23  [ТС] 6
Да, у меня и так он был в друзьяx)
но место я поменяла, сейчас другое дело, программа выводит массив, но в таком виде - 00F54ECO :/
ничего не понимаю, почему адрес? "&" здесь не нужен ведь, да и не помогает,, что неправильно?

Добавлено через 11 минут
aaa нет, все отлично, я поняла,, я перегрузила << для типа CArrController, а не для типа массив,, с помощью for все получается

Спасибо большое Lonkar)
0
11.02.2013, 00:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 00:23

Создать класс Matrix и функцию сложения матриц
Задача: создать класс Matrix на базе vector&lt;vector&lt;int&gt; &gt;, определить...

Нужно создать класс для чтения из файла
Нужно создать класс для чтения из файла.

нужно функцию с параметром создать
нужно функцию с параметром создать. глобальные переменные передавать как эти...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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