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

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

Войти
Регистрация
Восстановить пароль
 
Лилеша
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 4
#1

Как передать элемент структуры, как параметр функции - C++

19.05.2014, 12:16. Просмотров 1149. Ответов 2
Метки нет (Все метки)

Помогите, пожалуйста. Есть структура, необходимо создать функцию сортировки, но при этом, чтобы можно было передавать элемент структуры, как параметр функции.
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
struct Subscriber
{
    char name[20];
    char surname[20];
    char phone_number[14];
    Date date_of_birth;
    char address[40];
} YourBook[100]
 
void Sort(Subscriber *book, int count, char* element, int sort_number);
 
void main()
{
char N_S_P;
                cout << "Do you want to sort the subscribers by name, surname or phone number?\n";
                cout << "Enter N - to sort by name\nEnter S - to sort by surname\nEnter P - to sort by phone number\nPress any different key to cancel\n\n";
                N_S_P = _getch();
                if(N_S_P=='n'|| N_S_P=='N'|| N_S_P=='s'|| N_S_P=='S'|| N_S_P=='p'|| N_S_P=='P')
                {
                    switch(N_S_P)
                    {
                        case 'n':
                    Sort(YourBook, count, YourBook->name, 3);  
                            break;
                        case 'N':
                    Sort(YourBook, count, YourBook->name, 3);
                            break;
                        case 's':
                    Sort(YourBook, count, YourBook->surname, 3);
                            break;
                        case 'S':
                    Sort(YourBook, count, YourBook->surname, 3);
                            break;
                        case 'p':
                    Sort(YourBook, count, YourBook->phone_number, 13);
                            break;
                        case 'P':
                    Sort(YourBook, count, YourBook->phone_number, 13);
                            break;
                    } 
                                }
}
void Sort(Subscriber *book, int count, char* element, int sort_number)
{
    Subscriber *tempsort = new Subscriber[count];
    for (int i = 0; i < count ; i++)
    {
        for (int j = i+1; j < count; j++)
            {
                if (_strnicmp(book[i].element, book[j].element, sort_number)>0) 
                {
                    tempsort[i] = book[i];
                    book[i] = book[j];
                    book[j] = tempsort[i];
                }
        }
    }
    delete[]tempsort;
}
На данный момент функция неверна, так как я не могу обратиться к несуществующему элементу book.element. Как по другому можно написать данную функцию?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2014, 12:16     Как передать элемент структуры, как параметр функции
Посмотрите здесь:
Можно ли передать указатель на функцию как параметр другой функции? C++
C++ Задать элемент массива функций как параметр функции
C++ Как передать параметр?
C++ Как передать параметр в функцию?
Как передать параметр в функцию? C++
C++ Передать функцию как параметр
Передать метод класса как параметр C++
C++ Передать метод, как параметр, в функцию
Как в макросе передать параметр в строковый литерал? C++
Как передать параметр в собственный манипулятор с параметром? C++
Как в функцию передать параметр - двухмерный массив C++
Как передать второй параметр DialogBox()& C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 1
19.05.2014, 13:24     Как передать элемент структуры, как параметр функции #2
Цитата Сообщение от Лилеша Посмотреть сообщение
YourBook[100];
YourBook у Вас массив (; в исходном тексте потеряна).
Поэтому обращаться к элементам надо так:
YourBook[i].surname и т.п.
Цитата Сообщение от Лилеша Посмотреть сообщение
обратиться к несуществующему элементу book.element
book[0].element
Лилеша
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 4
19.05.2014, 13:55  [ТС]     Как передать элемент структуры, как параметр функции #3
; случайно пропущена при копировании.

Я знаю, что обращаться надо YourBook[i].name, но в функции если обратиться к book[i].element выдает ошибку, так как book типа subscriber и не имеет элемент element

Добавлено через 6 минут
Как вариант у меня был N_S_P передавать как параметр в функцию, и свитч соотвественно с main перенести в функцию и уже в зависимости от N_S_P проверять book[i].name, book[i].surname и book[i].phone_number. Но тогда функция получается огромная, 6 раз прописывается одинаковый цикл, только меняется элемент структуры. Но хочется как-то упростить и сделать код короче.
Ответ Создать тему
Опции темы

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