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

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

Войти
Регистрация
Восстановить пароль
 
sweetguru
1 / 1 / 1
Регистрация: 10.02.2013
Сообщений: 21
#1

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

10.02.2013, 16:30. Просмотров 292. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс ArrayController, нужно создать функцию Sort(direction d) (C++):

Дали курсач,создать морской бой. Нужно создать функцию - C++
Нужна функция с помощью которой можно размещать 1местные корабли #include &lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; ...

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rivory
10.02.2013, 16:50
  #2

Не по теме:

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

0
Lonkar
5 / 0 / 1
Регистрация: 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 / 1
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 00:23
Привет! Вот еще темы с ответами:

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

Создать класс Rectangle и написать функцию масштабирования прямоугольника - C++
Создать класс Rectangle. Класс имеет атрибуты length и width, каждый из которых по умолчанию равен 1. У него имеются...

Абстрактный класс и std::sort - C++
Добрый день, Не компилируется строка: std::vector&lt;mtl::io::QtFile*&gt; *vec; ... mtl::misc::Sort(vec); // ЭТА СТРОКА ...

Что нужно знать, чтобы создать класс String? - C++
Здравствуйте! Подскажите, про какие функции и разделы прочитать, чтобы сделать данное задание: &quot;Разработать класс String определив для...


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

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

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