'In the drill, you wrote a program that, given a series of numbers,
found
the max and min of that series. The number that appears the most times
in a sequence is called the mode. Create a program that finds the mode
of
a set of positive integers."
Here's a start: Creaate
vector<int> numbers; // ints read from user input
and store input values into numbers. Now sort numbers.
Is this enough to get you started?
PS: The STL contains something called "map", which makes this problem
much simpler. Unfortunately, these aren't introduced until Chapter 21.
Art Werschulz
207 Stoughton Avenue, Cranford NJ 07016-2838
(908) 272-1146
#include<iostream>
#include<vector>
using namespace std;
vector<int> seq;
vector<int> modes;
bool is_mode(int a)
{
int count = 0;
for (int x = 0; x < seq.size(); ++x) {
if (a == seq[x])
++count;
if (count > 1) {
return true;
}
}
return false;
}
int main()
{
int number = 0;
int check = -1;
cout<< "Please enter the sequence of integers: " << endl;
while (cin>> number) {
seq.push_back(number);
}
sort(seq.begin(), seq.end());
for (int i = 0; i < seq.size(); ++i) {
if (is_mode(seq[i]) && seq[i] != check) {
modes.push_back(seq[i]);
check = seq[i];
}
}
cout<< "Modes:" << endl;
for (int z = 0; z < modes.size(); ++z) {
cout<< modes[z] << endl;
}
So, I can find numbers that appears more than one time, but I need to
find the number that appears most times.
// Exercise 16 - Chapter 4
#include "std_lib_facilities.h"
int main()
{
int x = 0;
unsigned int i = 0;
unsigned int j = 0;
vector<int> numbers;
cout << "Enter a series of positive integers: ";
while (cin>>x) {
numbers.push_back(x);
}
cout << "You have entered: ";
for (i=0; i<numbers.size(); ++i)
cout << numbers[i] << ' ';
// Mean
int sum = 0;
sort(numbers.begin(), numbers.end());
for (i=0; i<numbers.size(); ++i)
sum += numbers[i];
cout << "\nMean: " << sum/numbers.size() << '\n';
// Median
int median = 0;
for (j=0; j<numbers.size(); ++j) {
if ((numbers.size()%2)==0)
median = 0.5*numbers[numbers.size()/2] + 0.5*numbers[numbers.size()/
2-1];
else
median = numbers[numbers.size()/2];
}
cout << "Median: " << median << '\n';
// Mode
int prev_count = 0;
int curr_count = 0;
int mode = 0;
for (i=0; i<numbers.size(); ++i) {
for (j=0; j<numbers.size(); ++j) {
if (numbers[j]==numbers[i])
++curr_count;
}
if (curr_count>prev_count) {
mode = numbers[i];
prev_count = curr_count;
}
curr_count = 0;
}
if (prev_count==1)
cout << "There's no mode\n";
else {
cout << "\nMode: " << mode << "\nCount: " << prev_count << '\n';