МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
НАЦИОНАЛЬНЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ
ИМ. Н. Е. ЖУКОВСКОГО «ХАИ»
Выполнил: студент группы 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;
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.