Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
13 / 18 / 6
Регистрация: 02.05.2018
Сообщений: 545

Вывод данных класса на экран

29.10.2018, 16:43. Показов 5666. Ответов 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
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
#include <iostream>
#include <string>
#include <windows.h>
#include <list>
#include <iterator>
 
using namespace std;
 
class Student
{
 
private:
    string fio;         // Фамилия ученика
    int gender;         // Пол ученика
    double mass;       // Масса ученика
    double growth;    // Рост ученика
 
bool init( double Mass, double Growth, string Fio, int Gender )  // Проверка исходных данных
{
    if (   (Mass < 0.0 || Mass == 0.0) || (Growth < 0.0 || Growth == 0.0) || (Gender < 1 || Gender > 2)  )
 
        return false;  // неправильный ввод - не иницилизировать поля
 
    else      // правильный ввод - иницилизировать поля
    {
        fio = Fio;
        gender = Gender;
        mass = Mass;
        growth = Growth;
 
        return true;
    }
 
};
 
public:
 
void Read(int&,list<string>&,list<double>&,list<double>&,list<double>&,list<double>&);        // Ввод исходных данных: ФИО, масса, рост
 
void Display(list<string>&,list<double>&,list<double>&,list<double>&,list<double>&);    // Вывод данных на экран
 
double AvarageMassBoys(list<double>&);              // Вычисление средней массы мальчиков
double AvarageGrowthGirls(list<double>&);              // Вычисление среднего роста девочек
double StudentMaksGrowth(list<double>&,list<double>&);    // Нахождение самого высокого роста
 
};
 
void Student::Read(int&Numbers,list<string>&Gournal,list<double>&StudentMassBoys,list<double>&StudentGrowthBoys,
                               list<double>&StudentMassGirls,list<double>&StudentGrowthGirls) // Реализация метода для ввода данных вне класаа
{
    double Mass = 0.0, Growth = 0.0;
    string Fio = " ";
    int Gender = 0;
 
                        /*  list <string> Gournal;  Список учеников
                            list <double> StudentMassBoys;  Список масс мальчиков
                            list <double> StudentGrowthBoys;  Список роста мальчиков
                            list <double> StudentMassGirls;  Список масс девочек
                            list <double> StudentGrowthGirls;  Список роста девочек  */
 
    int i = 0;       // просто итератор
    while ( i < Numbers )
    {
        do                                              // Цикл для ввода данных
        {
        cout << "............................................." << endl;
        cout << "ВВОДИТЬ ТОЛЬКО КОРРЕКТНЫЕ ДАННЫЕ!!!" << endl;
        cout << "............................................." << endl;
        cout << "Выберите пол: 1 - мужской,     2 - женский:  "; ( cin >> Gender ).get();
            if ( Gender == 1)
            {                                                                 // Если пол мужской, то добавляем данные в соответсвующие массивы
                cout << "Введите ФИО ученика: "; getline(cin,Fio);
                cout << "Введите массу ученика: "; cin >> Mass; StudentMassBoys.push_back(Mass);
                cout << "Введите рост ученика: "; cin >> Growth; StudentGrowthBoys.push_back(Growth);
            }
 
            else
            {                                                                    // Если пол женский, то добавляем данные в соответсвующие массивы
                cout << "Введите ФИО ученицы: "; getline(cin,Fio);
                cout << "Введите массу ученицы: "; cin >> Mass; StudentMassGirls.push_back(Mass);
                cout << "Введите рост ученицы: "; cin >> Growth; StudentGrowthGirls.push_back(Growth);
            }
 
    } while (!init(Mass,Growth,Fio,Gender));  // Происходит проверка правильности данных
        i++;
    };
 
 
}
 
 
void Student::Display(list<string>&Gournal,list<double>&StudentMassBoys,list<double>&StudentGrowthBoys,
                               list<double>&StudentMassGirls,list<double>&StudentGrowthGirls) // Реализация метода для вывода данных на экран вне класса
{
 
    cout << "......................................." << endl;
    cout << "ФИО ученика (цы): " << fio << endl;
    cout << "Масса ученика: " << mass << endl;
    cout << "Рост ученика: " << growth << endl;
}
 
 
double Student::AvarageMassBoys(list<double>&StudentMassBoys)   // Реализация метода вычисления средней массы среди мальчиков
{
    double summ = 0.0; // Сумма элементов списка
 
    for ( auto it = StudentMassBoys.begin(); it != StudentMassBoys.end(); it++ )
    {
        summ += *it;
    }
 
    double AvarageMass = summ / StudentMassBoys.size();  // Cумму элементов списка делим на количесвто элементов и получвем среднюю массуц мальчиков
 
    // StudentMassBoys.size() возвращает размер списка (количество элементов)
 
    return AvarageMass;
}
 
 
double Student::AvarageGrowthGirls(list<double>&StudentGrowthGirls) // Реализация метода вычисления среднего роста среди девочек
{
    double summ = 0.0;
 
    for ( auto it = StudentGrowthGirls.begin(); it != StudentGrowthGirls.end(); it++ )
    {
        summ += *it;
    }
 
    double AvarageGrowth = summ / StudentGrowthGirls.size();
 
    // StudentGrowthGirls.size() возвращает размер списка (количество элементов)
 
    return AvarageGrowth;
}
 
 
double Student::StudentMaksGrowth(list<double>&StudentGrowthBoys,list<double>&StudentGrowthGirls) // Реализация метода вычисления максимального роста среди всех учеников
{
    int i;    // Просто итератор
 
    list<double>NewGrowthList;   // Новый список для хранения роста и мальчиков и девочек
 
    for ( auto it = StudentGrowthBoys.begin(); it != StudentGrowthBoys.end(); it++ )   // Цикл который добавляет в новый список рост мальчиков
    {
        NewGrowthList.push_back(*it);
    }
 
    for ( auto it = StudentGrowthGirls.begin(); it != StudentGrowthGirls.end(); it++) // Цикл которыйдобавдяет в новый список рост девочек
    {
        NewGrowthList.push_back(*it);
    }
 
    double MaksGrowth = 0.0;    // Начальное значение переменной которая будет хранить макс. элемент
 
    for ( i = 0; i < NewGrowthList.size(); i++)  // Цикл для поиска максимального элемента
    {
        for ( auto it = NewGrowthList.begin(); it != NewGrowthList.end(); it++ )   // Перебор всех элементов нового списка
        {
            if ( *it > MaksGrowth) MaksGrowth = *it;                   // Присваиваем MaksGrowth макс. значение из списка
        }
    }
 
    return MaksGrowth;
}
 
 
void NumberStudents(int&Number)   // Функция для ввода и проверки количества учеников
{
    int Numbers;
    do      // Цикл для правильного ввода
    {
        cin >> Numbers;
    } while (Numbers <= 0);
 
    Number = Numbers; // Присваем переменной Numbers в main Number (правильное количество учеников);
}
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    list <string> Gournal;               // Список учеников
    list <double> StudentMassBoys;      // Список масс мальчиков
    list <double> StudentGrowthBoys;     // Список роста мальчиков
    list <double> StudentMassGirls;     // Список масс девочек
    list <double> StudentGrowthGirls;    // Список роста девочек
    cout << "Введите количество учеников: ";
    int Numbers;                             // количество учеников
    NumberStudents(Numbers);                 // Вызов функции для ввода количества учеников
    Student a;                              // Создание обьекта
    a.Read(Numbers,Gournal,StudentMassBoys,StudentGrowthBoys,StudentMassGirls,StudentGrowthGirls);   // Вызов метода Read для ввода исходных данных
    a.Display();     // Вывод данных на экран
 
 
 
    system("pause");
    return 0;
}
Как сделать вывод данных в методе Display(list<string>&Gournal,list<double >&StudentMassBoys,list<double>&StudentGr owthBoys,list<double>&StudentMassGirls,l ist<double>&StudentGrowthGirls). Есть какой нибудь вариант сделать вывод через цикл в классе?

Добавлено через 13 минут
Или может для мальчиков и девочек сделать 2 списка list, а потом просто обединить эти 2 списка и выводить их.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2018, 16:43
Ответы с готовыми решениями:

Запись данных из класса и вывод их на экран
Такое задание: Надо реализовать класс Склад. В классе хранит: название товара, производителя товара, дата производства товара, вес...

Не могу понять как делать вывод на экран структуры STUDENT на заполнение и вывод данных на экран
Добрый вечер. Вот задание и мой код программы на C++ Не выходит нормально реализовать 3е задание. Первая проблема в том, что вывод на...

Ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хранилище данных в файле)
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и вывод данных из этого файла на экран...

5
Заблокирован
29.10.2018, 16:52
AvarageMassBoys - а зачем этот метод нужен в классе? Класс - это один студент. Обращаться к одному студенту, чтобы получить среднее по всей группе студентов? Странно. Откуда ему знать, сколько кто весит И ведь ты в этом методе вообще не задействовал этот класс, ни одно из его полей, ты тупо работаешь с doubleами.
Надо тогда создать отдельный класс вроде StudentList, который будет именно контейнером, ну или класс ВзвешивательСтудентов
А вообще в серьезных проектах не любят создавать такие вещи. Не любят создавать спец. контейнеры. Просто используют стандартный контейнер со студентами, да хоть vector<Student>, а всякие выборки делают по месту.
0
13 / 18 / 6
Регистрация: 02.05.2018
Сообщений: 545
29.10.2018, 17:01  [ТС]
Смолевич, Так AvarageMassBoys получет список list который содержит массу всех студентов. В read(...) вводятся массы и рост всех студентов и заносятся в соответствующие спсики list.

Добавлено через 1 минуту
По-моему я накодил какую-то фигню
0
Заблокирован
29.10.2018, 17:09
cherc, ты спорить будешь? Ну учись неправильному, кодя при этом фигню, а потом на работу с нулевыми знаниями.

Я тебе и объясняю, что как оно есть - оно в принципе нормально работать не будет.
1) Тебе точно нужен вывод в Display?
2) Можно вызывать метод статически, не из объекта, а из класса типа Student::avarageMassBoys(...), тогда оно норм. Но надо хотя бы заменить list<double> на list<Student>. Это никак? Без этого ты можешь в Display вывести только список вЕсов, без имен\фамилий, от этого толку нет.
3) Опять же, почему list, а не vector?
0
13 / 18 / 6
Регистрация: 02.05.2018
Сообщений: 545
29.10.2018, 17:11  [ТС]
Смолевич, Такое условие дали.

Добавлено через 41 секунду
Вся задача строится на списках
0
Заблокирован
29.10.2018, 17:12
cherc, Уважаемый товарищ, убедительная просьба к вам вести нормальную дискуссию. Клещами никто тянуть каждое уточнение не будет. Я ухожу, не надо мое время кушать. В следующий раз может быть.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2018, 17:12
Помогаю со студенческими работами здесь

Вывод объекта на экран из класса
Всем снова здравствуйте. Итак, у меня тут небольшая проблемка, нужна помощь. У меня есть класс Game и есть класс Player Класс Game...

Ввод класса с полями и вывод на экран
Ввести класс с полями 1) название покупки 2)дата покупки (номер месяца) 3) цена. Заполнить массив 5-ю объектами. Сделать вывод на экран: 1)...

Ввод и вывод данных класса
Привет уважаемые гуру! Я к вам с очередным вопросом :senor: Нужно вывести данные класса Store : #include &lt;stdio.h&gt; #include...

Вывод данных в поток у наследованного класса
Доброе время суток. Подскажите, как в С++ вывести данные унаследованного класса при помощи потока ostream. Как я прочитал в...

Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только создание объектов и вызов методов
Всем привет) помогите пожалуйста с заданием &quot;Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru