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

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

Восстановить пароль Регистрация
 
sweetguru
1 / 1 / 1
Регистрация: 10.02.2013
Сообщений: 21
10.02.2013, 16:30     Класс ArrayController, нужно создать функцию Sort(direction d) #1
Добрый день, мне нужно создать в классе функцию 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 };
написала в заголовочном файле, перед определением класса, правильно? или нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 16:30     Класс ArrayController, нужно создать функцию Sort(direction d)
Посмотрите здесь:

нужно функцию с параметром создать C++
Абстрактный класс и std::sort C++
Что нужно знать, чтобы создать класс String? C++
C++ Нужно создать класс С,наследующий классы A и B
Создать класс, в котором можно сохранить любой вызываемый объект или функцию C++
Нужно создать самый простой класс (С++) C++
Нужно создать класс и то что будет его выполнять, не очень сложный C++
C++ Нужно создать класс шаблона для работы c массивом 2х2
C++ Дали курсач,создать морской бой. Нужно создать функцию
Нужно создать класс для чтения из файла C++
Создать класс Rectangle и написать функцию масштабирования прямоугольника C++
C++ Нужно создать функцию по изменению чисел из двоичной в десятичную систему счисления

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rivory
10.02.2013, 16:50
  #2

Не по теме:

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

Lonkar
5 / 0 / 1
Регистрация: 10.02.2013
Сообщений: 7
10.02.2013, 17:18     Класс ArrayController, нужно создать функцию Sort(direction d) #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;
}
sweetguru
1 / 1 / 1
Регистрация: 10.02.2013
Сообщений: 21
10.02.2013, 17:49  [ТС]     Класс ArrayController, нужно создать функцию Sort(direction d) #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;
}
Lonkar
5 / 0 / 1
Регистрация: 10.02.2013
Сообщений: 7
10.02.2013, 18:16     Класс ArrayController, нужно создать функцию Sort(direction d) #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);
sweetguru
1 / 1 / 1
Регистрация: 10.02.2013
Сообщений: 21
11.02.2013, 00:23  [ТС]     Класс ArrayController, нужно создать функцию Sort(direction d) #6
Да, у меня и так он был в друзьяx)
но место я поменяла, сейчас другое дело, программа выводит массив, но в таком виде - 00F54ECO :/
ничего не понимаю, почему адрес? "&" здесь не нужен ведь, да и не помогает,, что неправильно?

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

Спасибо большое Lonkar)
Yandex
Объявления
11.02.2013, 00:23     Класс ArrayController, нужно создать функцию Sort(direction d)
Ответ Создать тему
Опции темы

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