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

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

Войти
Регистрация
Восстановить пароль
 
Hunger Cannibal
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 15
#1

Имеем массив структур - C++

31.05.2013, 10:24. Просмотров 280. Ответов 7
Метки нет (Все метки)

Здравствуйте. Застопорился с одним заданием, ничего не придумывается, поможите кто чем может ). Итак:
Имеем массив следующих структур

C++
1
2
3
4
5
6
7
struct spisok                  
    {
    char fullname[strsize]; 
    char title[strsize];    
    char nickname[strsize];  
    int preference;         // 0 = полное имя, 1 = титул, 2 = ник
    };
Программа запускает цикл, который даёт возможность пользователю выбирать разные альтернативы:

a. display by name b. display by title
c. display by nickname d. display by preference

Выбор "display by preference" не означает, что нужно отобразить член preference; это значит, что необходимо отобразить член структуры, который соответствует значению preference (0 = полное имя, 1 = титул, 2 = ник).

Вот с этим последним пунктом и загвоздка - как вытянуть член структуры по номеру ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 10:24     Имеем массив структур
Посмотрите здесь:

Массив структур, сохранение начала каждой из структур - C++
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch * poczatek=NULL; cin >>...

Имеем 3 одномерных материальных массива А(10), В(10), С(10) - C++
Имеем 3 одномерных материальных массива А(10), В(10), С(10). Для каждого из них с помощью процедур найти количество и сумму отрицательных...

Массив структур - C++
Доброй ночи! Есть задание c массивом структур. Надо было нaпиcaть пpoграммy ввода и удаления инфopмации o coтрyдникe c указанным вoзpастoм....

массив структур - C++
как записать массив структур в файл и как его от туда вытащить?? что прописывать???

Массив структур С++ - C++
Массив структур меcтит информацию о 30 студентов: фамилия; имя; место проживания (общежитие или дом); номер телефона (если он есть)....

Массив структур - C++
Не могу ни как сделать,помогите написать одну задачку на Си Заранее спасибо!

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Чиффа
5 / 5 / 0
Регистрация: 24.09.2012
Сообщений: 58
31.05.2013, 10:53     Имеем массив структур #2
можно использовать свитч, получается немного громоздко, но как вариант..., ещё думаю можно использовать enum, но в голову не приходит как.
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
#define strsize 250
 
struct spisok
{
char fullname[strsize];
char title[strsize];
char nickname[strsize];
int preference; // 0 = полное имя, 1 = титул, 2 = ник
};
 
int main()
{
    spisok one;
    one.fullname ;
    one.title;
    one.nickname;
    one.preference;
 
    cin >> one.fullname;
    cin >> one.title;
    cin >> one.nickname;
    cin >> one.preference;
    int per;
    cin >> per;
    switch (per)
    {
    case 0:
    cout << one.fullname;
        break;
    case 1:
    cout << one.title;
        break;
    case 2:
    cout << one.nickname;
        break;
    case 3:
        switch (one.preference)
        {
            case 0:
            cout << one.fullname;
                break;
            case 1:
            cout << one.title;
                break;
            case 2:
            cout << one.nickname;
                break;
        }
        break;        
    }
    
    return 0;
}
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
31.05.2013, 10:56     Имеем массив структур #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char *GetByPref(spisok res)
{
    if(res.preference == 0)
    {
              return res.fullname;
    }
    else if(res.preference == 1)
    {
             return res.title;
    }
    else if(res.preference == 2)
    {
             return res.nickname;
    }
}
....
 GetByPref( T )[0]  - первый символ того, что выдал по преференсе в элементе T
Hunger Cannibal
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 15
31.05.2013, 11:21  [ТС]     Имеем массив структур #4
А я по неопытности своей надеялся, что есть красивое и неведомое мне средство ))).
Всем спасибо за поддержку!!.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
31.05.2013, 11:43     Имеем массив структур #5
Т.к. все поля в структуре однотипны, можно переделать на :
C++
1
2
3
4
5
struct spisok 
{
   char field[3][strsize]; 
   int preference; // 0 = полное имя, 1 = титул, 2 = ник
};
и выводить просто:
C++
1
2
spisok* s = ... // получили нужный элемент
cout << s->field[s->preference];
Hunger Cannibal
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 15
31.05.2013, 11:56  [ТС]     Имеем массив структур #6
я до этого не дочитал ещё )))
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
31.05.2013, 11:59     Имеем массив структур #7
eocron, у Вас возвращается указатель на локальные для функции данные. Так делать нельзя, т.к. после выхода из функции res со всеми полями будет уничтожен.
Если уж делать ветвление по Вашему принципу, нужно передавать в функцию указатель или ссылку:
C++
1
2
3
4
5
6
7
8
char *GetByPref(spisok* res)
{
    if(res->preference == 0)
    {
              return res->fullname;
    }
// ... другие ветки
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2013, 19:32     Имеем массив структур
Еще ссылки по теме:

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

Массив структур - C++
Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак зодиака; дата рождения(массив из трех чисел). Написать...

Массив структур - C++
Эксперементирую тут с файлами. Что-то полная ерунда получается. ВОт я объявил массив структур, а при заполнении ерунда какая-то...

Массив структур в с++ - C++
Условие: Создать массив структур, используя данные из задания. Создать программное приложение, которое включает его обработку с...


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

Или воспользуйтесь поиском по форуму:
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
31.05.2013, 19:32     Имеем массив структур #8
Да, я много багов рождаю. Моя беда. Я бы сделал просто через метод, так как больше люблю с объектами работать, но вижу что человек не освоил это и сделал тяп ляп.
Yandex
Объявления
31.05.2013, 19:32     Имеем массив структур
Ответ Создать тему
Опции темы

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