Как мне организовать свой код?
Здравствуйте, мне сказали, что я должен это сделать.:
Проект 7
Измените программу, чтобы использовать структуры для измерения температуры, ветра и погоды.
Рефакторинг вашей программы так, чтобы код для
- температура находится в двух файлах (.h – объявления) и (.cpp – реализации)
- wind находится в двух файлах (.h – объявления) и (.cpp – реализации)
-WeatherMeasurement находится в двух файлах (.h – объявления) и (.cpp – реализации)
- А ваш главный находится в одном файле
Я не знаю, чего он от меня хочет. Мне нужно было изменить свою последнюю программу, используя структуры, которые я сделал, но я понятия не имею, как это сделать. Если кто-то может помочь, я буду очень признателен.
Что я уже пробовал:
Я новичок в программировании, поэтому я действительно не уверен, чего он хочет. Спасибо
++ код:
#include "stdafx.h" #include <stdio.h> #include <iostream> #include<string> #include <stdlib.h> #include<vector> #include<sstream> 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." << "\n"; cout << "H. Print the weather history (from most recent to oldest)." << endl; cout << "E. Exit the program." << "\n"; 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<Weather_Station> 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" << "\n"; cin >> histCount; if (histCount <= 0) cout << "Input record count should always be greater than 0(zero)"<<"\n"; else if (histCount>>myStation.size()) cout << "Input record count shouldn't be more than available record count"<<"\n"; } while (histCount <= 0 || histCount>>myStation.size()); cout << "*************Printing Weather History*************" << endl; vector<Weather_Station>::reverse_iterator rit; for (rit = myStation.rbegin(); rit != myStation.rend(); rit++) printWeather(*rit); } else if (input_choice == "E") { exit(0); } } return 0; }
Richard MacCutchan
Сначала вам нужно привыкнуть использовать правильный отступ вашего кода. И не используйте двойные интервалы везде, это делает его гораздо труднее читать.