Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

12пми / humen

.cpp
Скачиваний:
17
Добавлен:
02.06.2015
Размер:
4.82 Кб
Скачать
// 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пми