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

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

Войти
Регистрация
Восстановить пароль
 
temkasky
81 / 81 / 28
Регистрация: 26.11.2012
Сообщений: 303
#1

Вектор объектов "Студент" - C++

19.10.2015, 11:56. Просмотров 558. Ответов 5
Метки нет (Все метки)

Домашнее задание. vector.

Описать класс "студент" с полями: имя, фамилия, курс. Переопределить у этого класса оператор вывода в поток. Написать функцию заполнения вектора из класса "студент" произволными данными. Написать функцию печати содержимого вектора. Отсортировать вектор по именам студентов по возрастанию. Отсортировать стабильно вектор по фамилиям студентов. Поставить в первые три элемента вектора студентов самых младших курсов по возрастанию. После каждой операции выводить список студентов в выходной поток.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2015, 11:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вектор объектов "Студент" (C++):

Создать класс "Студент" и классы "Бюджетный студент" и "Коммерческий студент" - C++
Доброго времени суток. Помогите с задачкой. Наследование. Создать класс студент и классы бюджетный студент и коммерческий студент.

В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию - C++
в массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию. Использовать...

Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол" - C++
кто то напишите пожалуйста, вот программа: наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные...

Создать классы "Вектор" и "Матрица", реализовать умножение матрицы на вектор - C++
Создать классы «Вектор (Строка, столбец)» и «Матрица». Реализовать умножение матрицы на вектор. я задал класс матриц,а как мне задать...

Создать классы "Computer", "Software", "User" и реализовать взаимодействие объектов этих типов между собой - C++
Помогите решить задачку,нужна в инст на экзамен. Составить программу реализующую: 1)классы,которые могут содержать...

Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" - C++
Подскажите пожалуйста, как убрать ошибки с этой программы? (делала перегрузку "ввести в поток" и "вывести с потока", а также "умножить...

5
rikimaru2013
19.10.2015, 11:59
  #2

Не по теме:

забавно получается: домашнее задание дали вам, а делаем мы.

0
Croessmah
Эксперт CЭксперт С++
13430 / 7585 / 857
Регистрация: 27.09.2012
Сообщений: 18,677
Записей в блоге: 3
Завершенные тесты: 1
19.10.2015, 13:19 #3
Где наработки? Что не получается?

Утверждение (помочь не равно "сделать за меня") истино везде, кроме, разве что раздела фриланса.
0
temkasky
81 / 81 / 28
Регистрация: 26.11.2012
Сообщений: 303
20.10.2015, 11:03  [ТС] #4
Может кому скучно, ищет легкие задачи для практики(как это делаю я в других разделах).
Те кто не хочет делать, тот не делает. Все просто)
Остальным будет кнопоча "спасибо"
0
Barrent
244 / 120 / 41
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
20.10.2015, 11:13 #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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
 
using namespace std;
 
class Student {
    //VARIABLES
private:
    string name;
    string surname;
    int grade;
 
    //CONSTRUCTORS
public:
    Student(string name, string surname, int grade) :name(name), surname(surname), grade(grade) {};
    Student(const Student& student) :name(student.name), surname(student.surname), grade(student.grade) {};
 
    //METHODS
public:
    Student& operator=(const Student& student) {
        name = student.name;
        surname = student.surname;
        grade = student.grade;
        return *this;
    }
 
    int CompareName(const Student& student) const {
        return name.compare(student.name);
    }
 
    int CompareSurname(const Student& student) const {
        return surname.compare(student.surname);
    }
    int CompareGrade(const Student& student) const {
        if (grade < student.grade)
            return -1;
        if (grade > student.grade)
            return 1;
        return 0;
    }
 
    friend ostream& operator<< (ostream& stream, const Student& student) {
        stream << "Grade:" << setw(2) << student.grade;
        stream << "   Name:" << setw(10) << student.name;
        stream << "   Surname:" << setw(10) << student.surname << endl;
        return stream;
    }
};
 
void Init(vector<Student>& students);
void Print(const vector<Student>& students);
 
int main()
{
    vector<Student> students;
 
    Init(students);
    cout << "Original list: :" << endl;
    Print(students);
 
    //Сортировка по имени по возрастанию    
    sort(students.begin(), students.end(), [](const Student& left, const Student& right) {return left.CompareName(right) < 0; });
    cout << "\nSorted ascending by name:" << endl;
    Print(students);
 
    //Стабильная сортировка по фамилии по возрастанию   
    stable_sort(students.begin(), students.end(), [](const Student& left, const Student& right) {return left.CompareSurname(right) > 0; });
    cout << "\nSorted descending by surname:" << endl;
    Print(students);
 
    //Переставляем 3 записи с наименьшим курсом в начало списка
    for (int i = 0; i < 3; i++) {
        auto iter = min_element(students.begin() + i, students.end(), [](const Student& left, const Student& right) {return left.CompareGrade(right) < 0; });
        if (iter != students.end()) {
            int index_min = iter - students.begin();        //позиция минимального элемента 
            students.insert(students.begin() + i, iter, iter + 1);      //копию минимального вставляем вперед после уже найденых минимальных
            students.erase(students.begin() + index_min + 1);           //удаляем оригинал
        }
    }
 
    cout << "\nFirst three students have lowest grade:" << endl;
    Print(students);
    system("pause");
    return 0;
}
 
void Init(vector<Student>& students) {
    students.emplace_back("Vasiliy", "Petrov", 2);
    students.emplace_back("Trololo", "Ololoev", 1);
    students.emplace_back("Ololo", "Trololoev", 1);
    students.emplace_back("Agent", "K", 1);
    students.emplace_back("X", "Axis", 1);
    students.emplace_back("Temkasky", "C-Man", 2);
}
 
void Print(const vector<Student>& students) {
    for (const Student& student : students)
        cout << student;
}
1
temkasky
81 / 81 / 28
Регистрация: 26.11.2012
Сообщений: 303
20.10.2015, 11:43  [ТС] #6
thx man <3
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2015, 11:43
Привет! Вот еще темы с ответами:

Классы "Студент" ,"Группа" - не работает метод ввода и вывода - C++
Тема: Классы языка С ++: группа и студент Задание 1. Создайте класс «Группа». - Данные класса - номер группы, специальность,...

Класс "Студент", реализовать динамический список "Группа студентов" - C++
реализовать динамический список &quot; группа студентов&quot;. Узел: -группа -фамилия Функции списка: -добавление по алфавиту ...

Структуры "Студент" и "Дата": с чем связана данная ошибка? - C++
С чем связана данная ошибка? //--------------------------------------------------------------------------- /* Составить список группы...

Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" - C++
не могу понять как это можно сделать: &quot;Создайте вектор, хранящий десять строковых значений &quot;zero&quot;, &quot;one&quot;, ..., &quot;nine&quot;. Введите их в...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
20.10.2015, 11:43
Ответ Создать тему
Опции темы

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