1 / 1 / 0
Регистрация: 10.11.2014
Сообщений: 83
1

Структуры, функции. С++ сортировка

12.10.2015, 19:56. Показов 1570. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня задание такое:
Составить программу "Список студентов группы", в котором указаны - Фамилия,Имя,пол, место рождения, год рождения.
Нужно сформировать файлы:
  1. Список юношей,родившихся в городе название которого вводится с клавиатуры
  2. Список девушек
  3. Список студентов, родившихся в году, который вводится с клавиатуры.
файлы упорядочить.

-------
Мой вопрос такой- Как мне сделать одновременное использование двух функций с объектом.
То есть использование функции, нахождения только мальчиков и нужного города.
Вот сам код, функции с объектом все есть( они закомментированы)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream> 
#include <string> 
using namespace std;
 
struct Student //Структура Студент 
{
    char Family[35]; //Фамилия студента 
    char Name[35]; //Имя студента 
    char Sex[20]; //Пол студента 
    char City[100]; //Город рождения студента 
    int Date[3]; //Дата рождения студента 
    void Show(); //Функция будет отображать данные студента 
    void Input(); //Функция ввода данных в структуру 
    void Gorod();
    void Year(const int Date1, const int Date2);
};
 
void Student::Input() //Функцию объявленную внутри структуры можно использовать вне структуры таким вот образом 
{
 
    cout << "\n\n";
 
    cout << "Family\t\t";
    cin.getline(Family, 35); //Считали фамилию 
 
 
    cout << "Name \t\t";
    cin.getline(Name, 35); //Считали имя 
 
    int k;
    cout << "Sex chouse 1=Male ,2 =Female \t\t";//Выбираем пол 
    cin >> k;
    if (k == 1)
        strcpy(Sex, "Male");
    else
        strcpy(Sex, "Female");
 
    cout << "Date born\t";
 
    cin >> Date[0]; //Дата внутри структуры является массивом, поэтому обращение с индексом 
    //cin.ignore(); 
 
    cin >> Date[1];
    //cin.ignore(); 
 
    cin >> Date[2];
    cin.ignore();
 
 
    cout << "City\t\t";
    cin.getline(City, 100);
 
    cout << "\n\n";
 
    cout << "======================\n";
}
 
void Student::Show() //Функция показывает данные структуры на экране 
{
 
    cout << Name << " " << Family << "\n" << "Sex: " << Sex << "\nBorn in " << Date[0] << "." << Date[1] << "." << Date[2] << "\n";
    cout << "In the city which is called " << City << "\n\n";
}
 
void Student::Gorod()
{
 
    char s1[20];
    cout << "\nВедите нужный город:";
    gets(s1);
    if (strcmp(s1, City) == 0)
    {
        cout << "\nГорода одинаковые записываем в файл" << endl;
    }
    else
    {
        cout << "\nГорода разные не записываем в файл" << endl;
    }
}
void Student::Year(const int Date1, const int Date2) //Внутри функции ничего менять не планируется, поэтому константы 
{
    if ((Date[2]>Date1) && (Date[2]<Date2)) Show(); //Проверка принадлежности диапазону и при вхождении в диапазон вывод элемента структуры на экран 
};
int prompt_menu_item()
{
    // Выбранный вариант меню
    int variant;
    cout << "Choose you variant\n" << endl;
    cout << "1. Men born in towns\n"           //список юношей родившихся в городе, вводим с клавы
        << "2. Only girls\n"                   //только девушки
        << "3. All students born in years\n"   //список всех студентов родившихся в годах с какого то по какой то, вводим с клавы
        << "4. Open file\n" << endl;
    cout << ">>> ";
    cin >> variant;
    return variant;
}
 
int main()
{
    ////////ЭТО НУЖНЫЕ ФУНКЦИИ//
    //for (int i = 0; i < N; i++) Student[i].Show(); //С помощью цикла показываем заполненную структуру на экране, вызывая метод структуры. 
 
    //for (int i = 0; i < N; i++) Student[i].Gorod();// C помощью цикла показываем нужные города 
 
    //for (int i = 0; i < N; i++) 
    // if (strcmp(Student[i].Sex, "Male") == 0) 
    // Student[i].Show(); //С помощью цикла показываем всех мальчиков. 
 
    //for (int i = 0; i < N; i++) 
    // if (strcmp(Student[i].Sex, "Female") == 0) 
    // Student[i].Show(); //С помощью цикла показываем всех девочек.
    ///////////////////
    const int N = 2; //Количество элементов в структуре 
    Student Student[N]; //Структура студентов из N элементов. (Справа объект, слева тип) 
 
    for (int i = 0; i < N; i++) Student[i].Input(); //С помощью цикла заполняем структуру, вызывая метод структуры. 
 
    setlocale(LC_ALL, "Rus");
    int variant = prompt_menu_item();
 
    switch (variant) {
    case 1:
        for (int i = 0; i < N; i++)
            if (strcmp(Student[i].Sex, "Male") == 0)
                Student[i].Show()&& for (int i = 0; i < N; i++) Student[i].Gorod();
        system("pause");
        break;
     
        int o, p; cout << "Enter need yaers\t"; cin >> o; cin >> p; // ввод нужных годов 
        for (int i = 0; i < N; i++) Student[i].Year(o, p); //Выводим студентов, которые родились в нужные года 
        cin.get();
        system("pause");
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2015, 19:56
Ответы с готовыми решениями:

Сортировка, Функции, Структуры
Народ помогите с лабами по программированию на С++: 1) Отсортировать каждый третий элемент...

Структуры. Сортировка массива структуры
Здравствуйте! В чем моя ошибка?? Нужно отсортировать массив структуры по возрастанию среднего...

Оператор if и структуры. Возвращение структуры из функции
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { ...

сортировка структуры
есть очередь. в ней элемент int gdsr (год сооружения). надо отсортировать по возрастанию. как это...

12
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
12.10.2015, 20:41 2
Условия объединить не можешь, что ли?
C++
1
if (strcmp(Student[i].Sex, "Male") == 0 && strcmp(Student[i].Gorod, Gorod) == 0)
0
1 / 1 / 0
Регистрация: 10.11.2014
Сообщений: 83
12.10.2015, 22:54  [ТС] 3
Да, вот.@nmcf Условия не мог объединить.
C++
1
2
3
4
5
6
    case 1:
        for (int i = 0; i < N; i++)
            if(strcmp(Student[i].Sex, "Male") == 0 && strcmp(Student[i].Gorod,Gorod) == 0)
 
        system("pause");
        break;
Верно же? У меня пишет что - идентификатор Gorod не определен.
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
12.10.2015, 23:23 4
Ну правильно. Это же пример. Ты должен ввести название города в переменную Gorod или свою придумать.
0
1 / 1 / 0
Регистрация: 10.11.2014
Сообщений: 83
12.10.2015, 23:43  [ТС] 5
Я город с консоли задаю, мне бы оттуда нужно как-то
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
13.10.2015, 09:18 6
Ну оттуда и бери.
0
1 / 1 / 0
Регистрация: 10.11.2014
Сообщений: 83
13.10.2015, 19:05  [ТС] 7
Я видимо не понимаю
C++
1
2
3
4
5
6
 case 1:
        for (int i = 0; i < N; i++)
            if(strcmp(Student[i].Sex, "Male") == 0 && strcmp(Student[i].Gorod,"Moscow") == 0)
 
        system("pause");
        break;
Так?
но у меня же есть функция ,где спрашивается город
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
13.10.2015, 19:24 8
Лучший ответ Сообщение было отмечено balin как решение

Решение

Ну и какая польза от твоей функции?
C++
1
2
3
4
5
6
7
8
9
10
11
12
 char Gorod[20];
 
//........................
 
 case 1:
        cout << "\nВедите нужный город:";
        (cin >> s1).get();
        for (int i = 0; i < N; i++)
            if(strcmp(Student[i].Sex, "Male") == 0 && strcmp(Student[i].Gorod, Gorod) == 0)
 
        system("pause");
        break;
1
1 / 1 / 0
Регистрация: 10.11.2014
Сообщений: 83
13.10.2015, 20:45  [ТС] 9
Я должен убрать функцию?

правильно ли я понял?
я в структуре меня с void на
C++
1
char Gorod[20];
а, это все тупо копирую?
C++
1
2
3
4
5
6
7
8
 case 1:
        cout << "\nВедите нужный город:";
        (cin >> s1).get();
        for (int i = 0; i < N; i++)
            if(strcmp(Student[i].Sex, "Male") == 0 && strcmp(Student[i].Gorod, Gorod) == 0)
 
        system("pause");
        break;
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
13.10.2015, 21:08 10
Лучший ответ Сообщение было отмечено balin как решение

Решение

Цитата Сообщение от balin Посмотреть сообщение
Я должен убрать функцию?
Откуда я знаю? В данном случае не вижу от неё пользы.
C++
1
2
3
4
5
6
7
8
9
10
11
 case 1:
        cout << "\nВедите нужный город:";
        (cin >> s1).get();
        for (int i = 0; i < N; i++)
            if(strcmp(Student[i].Sex, "Male") == 0 && strcmp(Student[i].Gorod, Gorod) == 0)
            {
            // здесь действия с отфильтрованными записями.
            }
 
        system("pause");
        break;
Структуру не надо менять, Gorod просто объявляется в начале main().
1
Модератор
Эксперт С++
13491 / 10747 / 6405
Регистрация: 18.12.2011
Сообщений: 28,681
13.10.2015, 21:24 11
Лучший ответ Сообщение было отмечено balin как решение

Решение

Цитата Сообщение от nmcf Посмотреть сообщение
(cin >> s1).get();
C++
1
(cin >> Gorod).get();
1
1 / 1 / 0
Регистрация: 10.11.2014
Сообщений: 83
13.10.2015, 23:55  [ТС] 12
оо, сейчас попробую

Добавлено через 2 минуты
Блин, туплю вообще походу
Ошибка 4 error C3867: Student::Gorod: в вызове функции отсутствует список аргументов; используйте "&Student::Gorod" для создания указателя на член
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
14.10.2015, 10:29 13
Вроде бы уже разобрались со всем, какая функция? Покажи, что у тебя получилось.
1
14.10.2015, 10:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2015, 10:29
Помогаю со студенческими работами здесь

Сортировка Структуры!!!
Проблема в том что мне нужно просто отсортировать даные по первым 3х числам телефона которые будут...

Сортировка структуры
Добрый вечер!! У меня имеется структура struct pac { String name; int points; }; Как...

Структуры. Сортировка
Всем привет! Подскажите пожалуйста, если я создал структуру с тремя компонентами:...

Сортировка структуры
Есть структура struct v{ string one; string two; int three; }; Подскажите как...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru