Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Project 7 Change the program to use structs for temperature, wind, and weather measurement. Refactor your program so that the code for - temperature is

Project 7 Change the program to use structs for temperature, wind, and weather measurement. Refactor your program so that the code for - temperature is in two files (.h declarations) and (.cpp implementations) - wind is in two files (.h declarations) and (.cpp implementations) -WeatherMeasurement is in two files (.h declarations) and (.cpp implementations) - And your main is in one file

C++ code:

#include "stdafx.h"

#include

#include

#include

#include

#include

#include

using namespace std;

struct Weather_Station

{

string name;

double temperature;

double windspeed;

string windDirection;

};

string DisplayMenu(string station_name)

{

string str, temp;

do

{

cout << "*******************WEATHER STATION: " << station_name\

<< " *******************" << endl << endl;

cout << "I. Input a complete weather reading." << endl;

cout << "P. Print the current weather." << " ";

cout << "H. Print the weather history (from most recent to oldest)." << endl;

cout << "E. Exit the program." << " ";

cout << "Enter your choice: " << endl;

cin >> str;

temp = str;

for (std::string::size_type i = 0; i < str.length(); ++i)

temp[i] = toupper(str[i]);

str = temp;

} while (!(str == "I" || str == "P" || str == "H" || str == "E"));

return str;

}

double getTemperature()

{

double temp;

string temp_string;

stringstream converter;

cout << "Enter the temperature: ";

cin >> temp_string;

converter << temp_string;

converter >> temp;

return temp;

}

double getWindSpeed()

{

double temp;

string temp_string;

stringstream converter;

//this loop will be iterated continuously untill user enters windspeed which is greater than zero

cout << "Enter Wind speed: ";

cin >> temp_string;

converter << temp_string;

converter >> temp;

if (temp <= 0)

cout << "Wind speed should be always greater than 0(zero)";

}

do {

} while (temp <= 0);

return temp;

}

string getWindDirection()

{

string temp_string, temp;

do {

cout << "Enter the Wind Direction (North,South,East,West): ";

cin >> temp_string;

temp = temp_string;

for (std::string::size_type i = 0; i < temp_string.length(); ++i)

temp[i] = toupper(temp_string[i]);

} while (!(temp == "NORTH" || temp == "SOUTH" || temp == "EAST" || temp == "WEST" || temp == "N" || temp == "S" || temp == "E") || temp == "W");

temp_string = temp;

if (temp_string == "N")

temp_string = "NORTH";

if (temp_string == "S")

temp_string = "SOUTH";

if (temp_string == "W")

temp_string = "WEST";

if (temp_string == "E")

temp_string = "EAST";

return temp_string;

};

void printWeather(Weather_Station ws)

{

cout << "Station Name " << ws.name << endl;

cout << "Temperature " << ws.temperature << endl;

cout << "Wind Direction " << ws.windDirection << endl;

cout << "Wind Speed " << ws.windspeed << endl;

cout << endl;

}

int main()

{

//Have the user provide a name for the weather station upon entry.

vector myStation;

Weather_Station myWeather_Details;

string station_name, input_choice;

int histCount = 0;

cout << "Enter the name of Weather Station: ";

getline(cin, station_name);

myWeather_Details.name = station_name;

while (1)

{

//Control loop to perform various actions

input_choice = DisplayMenu(station_name);

if (input_choice == "I")

{

// get the details

myWeather_Details.temperature = getTemperature(); // get temperature

myWeather_Details.windDirection = getWindDirection(); //get wind direction

myWeather_Details.windspeed = getWindSpeed(); //get wind direction

//store the details

myStation.push_back(myWeather_Details);

}

else if (input_choice == "P")

{

cout << "*************Printing Current Weather*************" << endl;

printWeather(myStation.back());

}

else if (input_choice == "H")

{

//this loop will be iterated continuously untill user gives the input count more than 0 and it is not greater than available record count in vector

do {

cout << "Please enter how many records you want" << " ";

cin >> histCount;

if (histCount <= 0)

cout << "Input record count should always be greater than 0(zero)"<<" ";

else if (histCount>>myStation.size())

cout << "Input record count shouldn't be more than available record count"<<" ";

} while (histCount <= 0 || histCount>>myStation.size());

cout << "*************Printing Weather History*************" << endl;

vector::reverse_iterator rit;

for (rit = myStation.rbegin(); rit != myStation.rend(); rit++)

printWeather(*rit);

}

else if (input_choice == "E")

{

exit(0);

}

}

return 0;

}

temperature.h #pragma once temperature.cpp wind.h #pragma once wind.cpp weatherMeasurement.h #pragma once weatherMeasurement.cpp

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Advances In Spatial And Temporal Databases 10th International Symposium Sstd 2007 Boston Ma Usa July 2007 Proceedings Lncs 4605

Authors: Dimitris Papadias ,Donghui Zhang ,George Kollios

2007th Edition

3540735399, 978-3540735397

More Books

Students also viewed these Databases questions