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

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

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

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

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

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

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

Структуры "Студент" и "Стипендия" - C++
Задание: Используя структурированный тип данных массив структур, составить программу, реализующую обработку массива в соответствии с...

Иерархия классов "Студент, преподаватель, персона, завкафедрой" - C++
Помогите создать иерархию классов ; Студент,преподаватель,персона,завкафедрой; на языке C++

Сортировка текстового файла. Структура "Студент" - C++
В файле input.txt содержатся сведения о группе студентов в формате ФИО год рождения оценки по 5 предметам Например Иванов Иван...

Структура "Студент". Сортировка по среднему баллу - C++
Составить список учебной группы, включающий десять человек. Для каждого студента указать: фамилию и имя, дату рождения (год, месяц и...

Структура "Студент", найти студентов с оценкой 4 и 5 - C++
Надо выявить студентов с оцекной 4 и 5 #include<stdio.h> #include<string.h> #include<conio.h> struct...

Класс "Студент", найти средний балл - C++
Дана задача посчитать средний балл каждого человека, и вывести самый большой и самый маленький среди них. Сломал уже голову мучаясь с...

Создать класс "Студент" и добавить поля - C++
создать класс студент ,имеющий ФИО,дату рождения, контактный телефон, город, страну, название учебного заведения, номер группы. Нужно...

Написать программу с использованием структуры "Студент" - C++
Для получения места в общежитии формируется список студентов, который включает ФИО студента, группу, средний балл, доход...

Вывод/ввод записей "Студент" в файл - C++
Исходный файл представляет собой набор записей следующего вида: ФИО дата рождения пол оценки по 4-ем экзаменам 1. Создать...

Запись структуры "Студент" в файл - C++
исправьте пожалуйста мои ошибки: 1)Error 1 error C3867: 'std::basic_ofstream<char,std::char_traits<char>>::close': function call missing...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
19.10.2015, 11:59
  #2

Не по теме:

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

Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
19.10.2015, 13:19     Вектор объектов "Студент" #3
Где наработки? Что не получается?

Утверждение (помочь не равно "сделать за меня") истино везде, кроме, разве что раздела фриланса.
temkasky
81 / 81 / 28
Регистрация: 26.11.2012
Сообщений: 303
20.10.2015, 11:03  [ТС]     Вектор объектов "Студент" #4
Может кому скучно, ищет легкие задачи для практики(как это делаю я в других разделах).
Те кто не хочет делать, тот не делает. Все просто)
Остальным будет кнопоча "спасибо"
Barrent
227 / 103 / 33
Регистрация: 04.05.2013
Сообщений: 297
Завершенные тесты: 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;
}
temkasky
81 / 81 / 28
Регистрация: 26.11.2012
Сообщений: 303
20.10.2015, 11:43  [ТС]     Вектор объектов "Студент" #6
thx man <3
Yandex
Объявления
20.10.2015, 11:43     Вектор объектов "Студент"
Ответ Создать тему
Опции темы

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