Problem Description The purpose of this lab is to familiarize you with sorting a
ID: 3579328 • Letter: P
Question
Problem Description
The purpose of this lab is to familiarize you with sorting array data. Problem Description is as follows:
5. Hit the slopes
Write a program that can be used by a ski resort to keep track of local snow conditions for one week. It should have a seven-element array of structures or class objects, where each structure or object holds a date and the number of inches of snow in the base on that date.
The class is implemented in 2 files - SnowData.h and SnowData.cpp.
The class tester uses literals to populate a 7-element array of SnowData objects. should have the user input the name of the month, the starting and ending date of the seven-day period being measured, and then the seven base snow depths.
The program should then sort the data array of objects in ascending order by base depth and date and display the results. Here is the beginning of a sample report.
Lab files:
This lab is composed of 3 files:
SnowData.h - No changes needed to this file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
/*
SnowData specification file
*/
class SnowData
{
private:
string snow_date;
double base_depth;
public:
SnowData();
SnowData(string _date, double _inches);
void print();
string getSnow_date();
double getBase_depth();
void setBase_depth(double);
void setSnowDate(string);
};
SnowData.cpp - No changes needed to this file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "SnowData.h"
/*
Class default constructor
Sets default values for class private variables
*/
SnowData::SnowData()
{
snow_date = "";
base_depth = 0;
}
/*
Overloaded constructor
Parameters used to populate class private variables via set functions
*/
SnowData::SnowData(string _date, double _inches)
{
setSnowDate(_date);
base_depth = 0;
setBase_depth(_inches);
}
/*
print functions
prints out class private variables
*/
void SnowData::print()
{
cout << setw(15) << left << snow_date
<< setw(5) << fixed << showpoint << setprecision(2) << right
<< base_depth << endl;
}
/*
accessor function for snow_date
*/
string SnowData::getSnow_date()
{
return snow_date;
}
/*
accessor function for base_depth
*/
double SnowData::getBase_depth()
{
return base_depth;
}
/*
mutator function for base_depth.
ensures that base_depth is not set to a negative value
*/
void SnowData::setBase_depth(double _inches)
{
if (_inches >= 0)
base_depth = _inches;
}
/*
mutator function for snow_date
*/
void SnowData::setSnowDate(string _date)
{
snow_date = _date;
}
INCOMPLETE_tester.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
#include "SnowData.h"
void print_array_elements(SnowData[], int);
void sort_by_base_depth(SnowData[], int);
void sort_by_date(SnowData[], int);
double get_average_base_depth(SnowData[], int);
int main()
{
string dates[7] = { "Jan 15", "Jan 16", "Jan 17", "Jan 18", "Jan 19", "Jan 20", "Jan 21" };
double base_depth[7] = { 34.5, 23.6, 25.5, 31.5, 40.6, 30.9, 38.4 };
SnowData jan_snow[7];
int i = 0;
for (auto &one_snow_day : jan_snow)
{
one_snow_day.setSnowDate(dates[i]);
one_snow_day.setBase_depth(base_depth[i]);
i++;
}
cout << setprecision(2) << fixed << showpoint;
cout << " --- array after set functions invoked to populate array -- ";
print_array_elements(jan_snow, 7);
cout << "Average base depth for the period "
<< jan_snow[0].getSnow_date() << " - "
<< jan_snow[6].getSnow_date() << " : "
<< get_average_base_depth(jan_snow, 7) << endl;
sort_by_base_depth(jan_snow, 7);
cout << " --- array after sort by base_depth -- ";
print_array_elements(jan_snow, 7);
sort_by_date(jan_snow, 7);
cout << " --- array after sort by date -- ";
print_array_elements(jan_snow, 7);
return 0;
}
double get_average_base_depth(SnowData _array[], int size)
{
double total_depth = 0;
/*
write code to iterate the array and add up base depth
from each individual array element
RANGE-BASED FOR LOOP CANNOT BE USED!
*/
return total_depth / 7;
}
void print_array_elements(SnowData _array[], int size)
{
/*
Write down the for loop to print out elements from array
RANGE-BASED FOR LOOP CANNOT BE USED!
*/
}
void sort_by_base_depth(SnowData _array[], int size)
{
/*
Write down sort code to sort by base depth of each element in the
array. Use the getBase_depth() function of each array element
*/
}
void sort_by_date(SnowData _array[], int size)
{
/*
Write down sort code to sort by date of each element in the
array. Use the getSnow_date() function of each array element
*/
}
Output from completed version of Lab 5
Output from the completed version of the assignment is shown below:
--- array after set functions invoked to populate array --
Jan 15 34.50
Jan 16 23.60
Jan 17 25.50
Jan 18 31.50
Jan 19 40.60
Jan 20 30.90
Jan 21 38.40
Average base depth for the period Jan 15 - Jan 21 : 32.14
--- array after sort by base_depth --
Jan 16 23.60
Jan 17 25.50
Jan 20 30.90
Jan 18 31.50
Jan 15 34.50
Jan 21 38.40
Jan 19 40.60
--- array after sort by date --
Jan 15 34.50
Jan 16 23.60
Jan 17 25.50
Jan 18 31.50
Jan 19 40.60
Jan 20 30.90
Jan 21 38.40
Press any key to continue . . .
5. Hit the slopes
Write a program that can be used by a ski resort to keep track of local snow conditions for one week. It should have a seven-element array of structures or class objects, where each structure or object holds a date and the number of inches of snow in the base on that date.
The class is implemented in 2 files - SnowData.h and SnowData.cpp.
The class tester uses literals to populate a 7-element array of SnowData objects. should have the user input the name of the month, the starting and ending date of the seven-day period being measured, and then the seven base snow depths.
The program should then sort the data array of objects in ascending order by base depth and date and display the results. Here is the beginning of a sample report.
Explanation / Answer
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
#include "SnowData.h"
void print_array_elements(SnowData[], int);
void sort_by_base_depth(SnowData[], int);
void sort_by_date(SnowData[], int);
double get_average_base_depth(SnowData[], int);
int main()
{
string dates[7] = { "Jan 15", "Jan 16", "Jan 17", "Jan 18", "Jan 19", "Jan 20", "Jan 21" };
double base_depth[7] = { 34.5, 23.6, 25.5, 31.5, 40.6, 30.9, 38.4 };
SnowData jan_snow[7];
int i = 0;
for (auto &one_snow_day : jan_snow)
{
one_snow_day.setSnowDate(dates[i]);
one_snow_day.setBase_depth(base_depth[i]);
i++;
}
cout << setprecision(2) << fixed << showpoint;
cout << " --- array after set functions invoked to populate array -- ";
print_array_elements(jan_snow, 7);
cout << "Average base depth for the period "
<< jan_snow[0].getSnow_date() << " - "
<< jan_snow[6].getSnow_date() << " : "
<< get_average_base_depth(jan_snow, 7) << endl;
sort_by_base_depth(jan_snow, 7);
cout << " --- array after sort by base_depth -- ";
print_array_elements(jan_snow, 7);
sort_by_date(jan_snow, 7);
cout << " --- array after sort by date -- ";
print_array_elements(jan_snow, 7);
return 0;
}
double get_average_base_depth(SnowData _array[], int size)
{
double total_depth = 0;
for (int i = 0; i < 7; i++)
{
total_depth += i++;
}
return total_depth / 7;
}
void print_array_elements(SnowData _array[], int size)
{
for (int index = 0; index < size; index++)
cout << _array << index+1 << " " ;
cout << endl;
}
void sort_by_base_depth(SnowData _array[], int size)
{
SnowData temp;
for (int i = 0; i < size; i++) {
int minPos = i;
int startDepth = _array[i].getBase_depth();
for (int j = 0; j < size; j++) {
int currDepth = _array[j].getBase_depth();
if (currDepth < startDepth) {
minPos = j;
}
}
if (minPos != i) {
temp = _array[i];
_array[i] = _array[minPos];
_array[minPos] = temp;
}
}
}
void sort_by_date(SnowData _array[], int size)
{
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.