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

Не могу разобрать задачу - C++

Восстановить пароль Регистрация
 
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
30.08.2013, 15:31     Не могу разобрать задачу #1
Кликните здесь для просмотра всего текста
Когда вы вступите в Благотворительный Орден Программистов ( БОП ) , к вам могут обращаться на заседаниях БОП по вашему настоящему имени, по должности либо секретному имени БОП. Напишите программу, которая может выводить списки членов по настоящим именам, должностям, секретным именам либо по предпочтению самого члена. В основу положите следующую структуру:

Структура имен Благотворительного Ордена Программистов

C++
1
2
3
4
5
6
7
struct bор
{
char fullname [ s t r s i z e ] ;// настоящее имя
char title [ s t r s i z e ] ;// должность
char bopname [ s t r s i z e ] ;//секретное имя БОП
int preference ;// О = полное имя , 1 = титул , 2 = имя БОП
} ;
В этой программе создайте небольшой массив таких структур и инициализируйте
его соответствующими значениями. Пусть программа запустит цикл , который
даст возможность пользователю выбирать разные альтернативы:

а . отображать по именам
b . Отображать по должностям
с . отображать по именам БОП
d . отображать по предпочтениям
q . выйти


Обратите внимание , что "отображать по предпочтениям" - не значит, что нужно
отобразить предпочтение члена; это значит, что нужно отобразить значение
того поля структуры , которое соответствует предпочтению. Например , если
preference равно 1, то выбор d должен вызвать отображение должности для
данного программиста. Пример запуска этой программы может выглядеть при-
мерно так:

Отчет о Благотворитель на Ордене Программистов
а . отображать по именам b. Отображать по должностям
с . отображать по именам БОП d. отображать по предпочтениям
q . выйти

Ваш выбор : а
Wimp Macho
Raki Rhodes
Норру Hipman
Pat Hand

Следующий выбор : d
Wimp Macho
Junior Programm r
MIPS
LOOPY

Следующий выбор : q
Пока !


Помогите разобрать задачу - я просто не могу понять, что они от меня хотят
Так я вроде бы понял, не понимаю что имеется ввиду "отображать по предпочтениям". Может кто решал эту задачу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
30.08.2013, 15:37     Не могу разобрать задачу #2
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Помогите разобрать задачу - я просто не могу понять, что они от меня хотят
От тебя хотят, чтобы в приложении была менюшка, которая дает юзера возможность выбрать, как отобразить инфу. Например, юзер выбрал, что хочет увидеть имена. Прога вывела имена членов ордена. (массив структур у тебя уже заполнен)
Выбрал по предпочтениям, прога вывела для каждого члена то поле, которое он указал в поле preference.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
30.08.2013, 16:04     Не могу разобрать задачу #3
fullname надо бы поменять на realname

да кстати и еще вопрос, как вступить в БОП ?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6163 / 2892 / 282
Регистрация: 04.12.2011
Сообщений: 7,693
Записей в блоге: 3
30.08.2013, 16:46     Не могу разобрать задачу #4

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
да кстати и еще вопрос, как вступить в БОП ?
Нужно чтобы двое членов БОП представили кандидата в Управление ордена. В УБОП то есть. А там, - на усмотрение Магистра и Ко...



Добавлено через 10 минут
CHELOVEKPAUK, я так понял, что кроме полей строк, хранящих ИМЯ, ТАЙНОЕ ИМЯ и ДОЛЖНОСТЬ, должно быть поле, например int preferense, которое отражает состояние объекта, в том смысле, что задаёт то как данный член БОП хотел бы чтобы его называли. Одному, например сегодня по ИМЕНИ нравится, другой, - секретничает, а третий очень официален и не намерен панибратствовать, - только по должности.
koldya
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 26
17.10.2013, 18:40     Не могу разобрать задачу #5
Привет, поднимаю эту тему потому что я решаю эту задачу и всё вроде бы сделал но компилятор не пропускает фрагмент кода, где функция обращается к структуре (что то с областью видимости, возможно), подскажите в чем может быть проблема?! Спасибо.
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
#include <iostream>
using namespace std;
const int strsize = 20;
struct bop{
    char fullname[strsize];
    char title[strsize];
    char bopname[strsize];
    int preference;
};
void MENY ();
char pref (int);
int main()
{   
    bop DB[5] = 
    {
    {"Wimp Macho","Manager","WM",0},
    {"Raki Rhodes","Auditor","RR",1},
    {"Celia Laiter","Programmer","CL",2},
    {"Hoppy Hipman","Director","HH",1},
    {"Pat Hand","Accountant","PH",0}
    };
    MENY ();
    char choice;
    cout << "Enter your choice: ";
    cin >> choice;
    int i;
    while(choice != 'q')
    {
        switch(choice)
        {
        case 'a': for (i = 0; i < 5; i++) cout << DB[i].fullname << endl; break;
        case 'b': for (i = 0; i < 5; i++) cout << DB[i].title << endl; break;
        case 'c': for (i = 0; i < 5; i++) cout << DB[i].bopname << endl; break;
        case 'd': for (i = 0; i < 5; i++) cout << pref(i) << endl; break;
    //? case 'q': {cout << "Bye!" << endl; break;break;}
        }
        cout << "Next choice: ";
        cin >> choice;
    }
    cout << "Bye!" << endl;
    return 0;
}
void MENY ()
{
    cout <<"Benevolent Order of programmers report\n";
    cout << "a. display by name     b. display by title\n";
    cout << "c. display by bopname      d. display by preference\n";
    cout << "q. quit" << endl;
}
 
char pref (int i)
{
    if      (DB.preference == 0) return DB[i].fullname;
    else if (DB[i].preference == 1) return DB[i].title;
    else if (DB[i].preference == 2) return DB[i].bopname;
};
Aндерсон_256
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 16
09.11.2013, 18:22     Не могу разобрать задачу #6
Вот мой код. Все работает.

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
60
61
62
63
64
 #include <iostream>
#include <cctype>
using namespace std;
int main ()
{
 cout << " Benevolent Order of Programmers Report \n a. display by name \t b. dsiplay by title\n c. display by bopname \t d. display by preference \n q. quit \n Enter your choice: ";
 char ch;
 cin >> ch;
 while ( ch!= 'a' and ch!= 'b' and ch!= 'c' and ch!= 'd' and ch!= 'q')
 {
     cout << " Input has failed. Try again. \n";
     cin >> ch;
 }
 struct bop
 {
     char fullname [50];
     char title [40];
     char bopname [40];
     int preference;
 };
 bop arr [4] =
 {
     { " Gromov Dmitry ", " Assistant ", " Agent X "},
     { " Arkashev Evgeny ", " Defender ", " Agent Y "},
     { " Kannikova Elena ", " Vice-Lord ", " Agent T "},
     { " Kolupayev Igor ", " Supreme Lord ", " Agent Z "}
 
 };
 switch (ch)
 {
     casea: case 'a': cout << arr[0].fullname << endl;
     cout << arr[1].fullname << endl;
     cout << arr[2].fullname << endl;
     cout << arr[3].fullname << endl;
     break;
    caseb: case 'b': cout << arr[0].title << endl;
     cout << arr[1].title << endl;
     cout << arr[2].title << endl;
     cout << arr[3].title << endl;
     break;
    casec: case 'c': cout << arr[0].bopname << endl;
     cout << arr[1].bopname << endl;
     cout << arr[2].bopname << endl;
     cout << arr[3].bopname << endl;
     break;
     case 'd': cout << " Enter the number of position: ";
     int g;
     cin >> g;
     while (!isdigit(g) and g>2)
     {
        cout << " Wrong number.Try again \n";
        cin >> g;
     }
        if ( g == 0)
        goto casea;
     if (g== 1)
        goto caseb;
     if ( g== 2)
        goto casec;
     case 'q' : cout << " Ok. Program is going to terminate. ";
     break;
 }
   return 0;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2015, 01:14     Не могу разобрать задачу
Еще ссылки по теме:

C++ не могу доделать задачу
Нужно разобрать задачу C++
Не могу разобрать часть кода. Функция strtok C++

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

Или воспользуйтесь поиском по форуму:
Chang875
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 12
05.03.2015, 01:14     Не могу разобрать задачу #7
Вот мой вариант решения, очень громоздкий, но в целом все работает.

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
using namespace std;
 
// Структура имен Благотворительного Ордена Программистов (БОП) 
  const int strsize = 50;
  
  struct bop
{ 
    char fullname[strsize];  // реальное имя 
    char title[strsize];     // должность 
    char bopname[strsize];   // секретное имя БОП 
    int preference;          // 0 = полное имя, 1 = титул, 2 = имя БОП 
}; 
    void smenu();   //прототип функции отображения меню
 
int main()
{
    char choice;    //Выбор манипулятора switch
    int pref = 0;   //Выбор параметра preference    
        
        bop BOP[3]= //инициализация объекта BOP стркутуры bop
    {
        {" Вася Пеев "," Электрик "," Электрон", 0},    
        {" Петя Матроскин "," Водитель "," Матрос", 1 },
        {" Остин Пауерс "," Агент "," Оззи", 2 }
    };
        smenu();    // фкункция, отображающая меню
        cout << "\nВаш выбор:\n ";
        
while(cin >> choice)
{
    cout << endl;
if(choice == 'a'||choice == 'b'||choice == 'c'||choice == 'd')
  {
    switch(choice)
   {
    case 'a':
    {
    cout << BOP[0].fullname << endl;
    cout << BOP[1].fullname << endl;
    cout << BOP[2].fullname << endl;
    break;
    }
        case 'b':
        {
        cout << BOP[0].title << endl;
        cout << BOP[1].title << endl;
        cout << BOP[2].title << endl;
        break;
        }
            case 'c':
            {
            cout << BOP[0].bopname << endl;
            cout << BOP[1].bopname << endl;
            cout << BOP[2].bopname << endl;
            break;
            }
            
                case 'd':
                {
                cout << "Введите предпочитаемый пункт:\n";
                cout << "0 = полное имя, 1 = титул, 2 = имя БОП \n"<< endl; 
                 cin >> pref;
                 
        if(pref == 0)
    {
        for(int i = 0; i!=3;i++)
         cout << BOP[i].fullname << endl;
        
    }
            if(pref == 1)
        {
            for(int j = 0; j!=3;j++)
             cout << BOP[j].title << endl;
         
        }
                if(pref == 2)
                {
                    for(int k = 0;k!=3;k++)
                     cout << BOP[k].bopname << endl;
         
                }   
                cin.get();
                smenu();
                cout << "\nВаш выбор:\n ";
                break;
                }
   }
 
 }else if(choice != 'q')
 {
     cout << "Вы ввели не верный пункт,\n"
          << "Введите только а, b, c или d";
 }
       if (choice == 'q')
     cout << "До свидания!) " << endl;
}
return 0;
}
 
    void smenu()
    {
        cout << "\na. Отображать по имени,\t\t";
        cout << "b. Отображать по профессии.\n";
        cout << "с. Отображать по прозвищу.\t"; 
        cout << "d. Отображать по предпочтению.\n";
        cout << "q. Для выхода." << endl;
    }
Yandex
Объявления
05.03.2015, 01:14     Не могу разобрать задачу
Ответ Создать тему
Опции темы

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