Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:12пми / humen
.cpp// ConsoleApplication12.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <iostream>
#include <sstream>// чтоб работало std::ostringstream full_name;Здесь мы подключаем класс stringstream из стандартной библиотеки. Он позволяет работать со строкой, как с потоком ввода-вывода
#include <vector>
using namespace std;
class human {
public:
// Конструктор класса human
human(string last_n, string n, string second_n)
{
last_name = last_n;
name = n;
second_name = second_n;
}
// Получение ФИО человека
string get_full_name()
{
ostringstream full_name;
full_name << last_name << " " << name << " " << second_name;
return full_name.str();//Переменная full_name — это объект класса ostringstream. В нее мы записываем данные, как в поток вывода.
//Метод str() позволяет получить строковое представление (std::string) объекта stringstream.
}
private:
string name; // имя
string last_name; // фамилия
string second_name; // отчество
};
class student : public human {
public:
// Конструктор класса Student
student(
string last_name,
string name,
string second_name,
const vector<int>& sc// передаем ссылку на объект sc. const - для защиты данных вектора т.к. передаем по ссылке а не по значению
) : human(
last_name,
name,
second_name
) {
scores = sc;
}
// Получение среднего балла студента
float get_average_score()
{
// Общее количество оценок
unsigned int count_scores = scores.size();
// Сумма всех оценок студента
unsigned int sum_scores = 0;
// Средний балл
float average_score;
for (unsigned int i = 0; i < count_scores; ++i) {
sum_scores += scores[i];
}
average_score = (float) sum_scores / (float) count_scores;
return average_score;
}
private:
// Оценки студента
vector<int> scores;
};
class teacher : public human {
// Конструктор класса teacher
public:
teacher(
string last_name,
string name,
string second_name,
// Количество учебных часов за семетр у преподавателя
unsigned int wk_time
) : human(
last_name,
name,
second_name
) {
work_time = wk_time;
}
// Получение количества учебных часов
unsigned int get_work_time()
{
return work_time;
}
private:
// Учебные часы
unsigned int work_time;
};
int main()
{
human h("ivanov","ivan","ivanovich");
// Вывод полного имени человека
cout << h.get_full_name()<< endl;
// Оценки студента
vector<int> scores_1;
// Добавление оценок студента в вектор
scores_1.push_back(9);
scores_1.push_back(8);
scores_1.push_back(2);
scores_1.push_back(2);
scores_1.push_back(5);
scores_1.push_back(7);
scores_1.push_back(9);
scores_1.push_back(4);
scores_1.push_back(5);
student st("ivanov","ivan","ivanovich",scores_1);
// Вывод полного имени студента (используется унаследованный метод класса human)
cout << st.get_full_name() << endl;
// Вывод среднего балла студента
cout << "Средний балл: " << st.get_average_score() << endl;
// Количество учебных часов преподавателя
unsigned int teacher_work_time = 40;
teacher tch("Васильков", "Петр", "Сергеевич", teacher_work_time);
cout << tch.get_full_name() << endl;
cout << "Количество часов: " << tch.get_work_time() << endl;
return 0;
}
/*// Вектор из 10 элементов типа int
vector<int> v1(10);
// Вектор из элементов типа float
// С неопределенным размером
vector<float> v2;
// Вектор, состоящий из 10 элементов типа int
// По умолчанию все элементы заполняются нулями
vector<int> v3(10, 0);
Методы класса vector
Для добавления нового элемента в конец вектора используется метод push_back(). Количество элементов определяется методом size().
Для доступа к элементам вектора можно использовать квадратные скобки [], также, как и для обычных массивов.
pop_back() — удалить последний элемент
clear() — удалить элемент вектора
empty() — проверить вектор на пустоту
Подробное описание всех методов std::vector (на английском) есть на C++ Reference.
//vector<student> sts;
*/
Соседние файлы в папке 12пми