Представление информации (данных об автомобиле: номер, марка и владелец машины) в виде класса

Страницы работы

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

НАЦИОНАЛЬНЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ

ИМ. Н. Е. ЖУКОВСКОГО «ХАИ»

Выполнил: студент группы 315

Евтушенко Дмитрий Вячеславович

Проверил доц. каф 304

                                     Бакуменко Н.С.

 ______________________________

ЛАБОРАТОРНАЯ РАБОТА №

M.Car.h

#pragma once

#include "Car.h"

const int max_n=40; //максимальное количество машин

class CMCar

{

public:

       CMCar(void);//конструктор

       CCar & operator [] (int i);

       friend ostream & operator << (ostream & st, CMCar & rez ) ;

       friend istream & operator >> (istream & inf, CMCar & rez ) ;

       int mark(string mark1); // функция находит количество повторяющихся марок

       int fam(string faml1); //функция находит номер машины по фамилии

       ~CMCar(void);//деструктор

private:

       CCar A[max_n]; //создаём массив типа CCar

       int num_sl; // реальное количество машин

};


Car.h

#pragma once

#include <iostream>

#include <string>

using namespace std;

class CCar

{

public:

       CCar();//конструктор

       CCar(int n, char *o, char *t);//конструктор

       friend ostream & operator << (ostream & st, CCar & a); //перегрузка функции вывода

       friend istream & operator >> (istream & st, CCar & a ) ; //перегрузка функции ввода

       int mark(string mark1); //сравнивает две строки, не равны - возвращаем 1, равны - 0

       int fam(string faml1); //функция сравнивает две строки, если не равны присваиваем возвращает значение k, равное numeral, равны - -1

       ~CCar();//деструктор

private:

       int *numeral; //номер

    string type; //марка

       string owner; //владелец

};

Car.cpp

#include "StdAfx.h"

#include "Car.h"

#include <iostream>

using namespace std;

CCar::CCar(void)

{

       setlocale(LC_ALL,"RUS");

       numeral= new int;//выделения памяти

       *numeral=0;//начальное задание значения

}

CCar::CCar(int n, char *o, char *t)

{

       setlocale(LC_ALL,"RUS");

       numeral= new int;//выделения памяти

       *numeral=n;//начальное задание значения

       owner=o;

       type=t;

}

istream & operator >> (istream & st, CCar & a ) //перегрузка функции ввода

{

       cout<<"Введите Номер машины:"<<endl;

       st>>*a.numeral;

       cout<<"Введите марку машины: "<<endl;

       st>>a.type;

       cout<<"Введите имя владельца машины = ";

       st>>a.owner;

       cout<<endl;

       return st;

}

ostream & operator << (ostream & st, CCar & a) //перегрузка функции вывода

{

             st<<"Номер машины = "<<*a.numeral<<endl;

             st<<"Марка машины: "<<a.type<<endl;

             st<<"Имя владельца машины: "<<a.owner<<endl;

             return st;

}

int CCar::mark(string mark1)

{

       if(type==mark1) return 1; //сравнивает две строки, не равны - возвращаем 1, равны - 0

       else

       return 0;

}

int CCar::fam(string faml1)

{

       int k=0;

       if(owner==faml1) k=*numeral; //сравниваем две строки если не равны присваиваем k значение numeral, равны - -1

       else k=-1;

       return k;

}

CCar::~CCar(void) //деструктор

{

       delete numeral,type,owner;

}

MCar.cpp

#include "StdAfx.h"

#include "MCar.h"

CMCar::CMCar(void) { } //конструктор по умолчанию

CCar & CMCar :: operator [] (int i)

{

       return  A[i];

}

ostream & operator << (ostream & st, CMCar & rez )//перегрузка операции вывода

{

       st<<rez.num_sl<<endl;

       for(int i=0; i<rez.num_sl; ++i)

       st<<rez[i];

       return st;

}

istream & operator >> (istream & inf, CMCar & rez ) //перегрузка операции ввода

{

       cout<<"Введите количество машин = ";

             inf>>rez.num_sl;

             for(int i=0; i<rez.num_sl; ++i)

             inf>>rez[i];

       return inf;

}

int CMCar::mark(string mark1) // функция находит количество повторяющихся марок

{

        int k=0;

        for(int i=0;i<num_sl;i++)

        k+=A[i].mark(mark1);

        return k;

}

int CMCar::fam(string faml1)//функция находит номер машины по фамилии

{

        int numer=0;

        for(int i=0;i<num_sl;i++)

        {

             int c=A[i].fam(faml1);

             if(c!=-1) numer=c;

        }

       return numer;

}

CMCar::~CMCar(void) //деструктор

{

}

Класс.срр

// Классы Димон.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include "Car.h"

#include "MCar.h"

#include <iostream>

#include <string>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

       CMCar A;

       cin>>A;//заполняем массив

       cout<<A;//выводим массив для проверки

       string m, f;//переменные для марки и фамилии

       cout<<"Введите марку (для нахождения количество повторяющих марок):"<<endl;

       cin>>m;

       cout<<"Введите фамилию (для нахождения номер машины)"<<endl;

       cin>>f;

       cout<<"Количество повторяющихся марок: "<<A.mark(m)<<endl<<endl;//вызываем функцию для нахождения повторяющихся марок

       cout<<"Номер машины по фамилии: "<<A.fam(f)<<endl<<endl;//Находит номер по фамилии

       system("PAUSE");

       return 0;

}

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
69 Kb
Скачали:
0