Implement the file siteNumber.h that works with the provided c++ program testSit
ID: 3905681 • Letter: I
Question
Implement the file siteNumber.h that works with the provided c++ program testSiteNumber.cpp
// testSiteNumber.cpp
//
// test the SiteNumber predicate
#include "Facility.h"
#include "Runway.h"
#include "SiteNumber.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main(int argc, char **argv)
{
ifstream facilities_file("testFacility1.in");
string line;
getline(facilities_file,line);
Facility *f = new Facility(line);
cout << f->site_number() << " " << f->code() << " " << f->name() << endl;
cout << "test if 02187.*A : " << boolalpha
<< SiteNumber<Facility>("02187.*A ")(f) << endl;
cout << "test if 04508.*A : " << boolalpha
<< SiteNumber<Facility>("04508.*A ")(f) << endl;
ifstream runways_file("testRunway1.in");
getline(runways_file,line);
Runway *r = new Runway(line);
cout << r->site_number() << " " << r->name() << " " << r->length() << endl;
cout << "test if 02187.*A : " << boolalpha
<< SiteNumber<Runway>("02187.*A ")(r) << endl;
cout << "test if 04508.*A : " << boolalpha
<< SiteNumber<Runway>("04508.*A ")(r) << endl;
delete f;
}
//
// Facility.h
//
#ifndef FACILITY_H
#define FACILITY_H
#include<string>
class Facility
{
public:
Facility(std::string s);
std::string site_number(void) const;
std::string type(void) const;
std::string code(void) const;
std::string name(void) const;
double latitude(void) const;
double longitude(void) const;
double distance(double lat, double lon) const;
private:
const std::string site_number_;
const std::string type_;
const std::string code_;
const std::string name_;
const double latitude_, longitude_;
double convert_latitude(std::string s) const;
double convert_longitude(std::string s) const;
};
#endif
//
// Runway.h
//
#ifndef RUNWAY_H
#define RUNWAY_H
#include<string>
class Runway
{
public:
Runway(std::string s);
std::string site_number(void) const;
std::string name(void) const;
int length(void) const;
private:
int convert_length(std::string s) const;
const std::string site_number_;
const std::string name_;
const int length_;
};
#endif
Explanation / Answer
#ifndef SiteNumber_h #define SiteNumber_h class SiteNumber{ public: SiteNumber(Facility fac) : current_siteNum(fac.site_number()){} bool operator() (Runway* r) { return r->site_number()==current_siteNum; }; private: const std::string current_siteNum; }; #endif /* SiteNumber_h */