error LNK2019

#ifndef STATS_H // Prevent duplicate definition
#define STATS_H
#include <cassert>
#include <iostream>

namespace CISP430_A1
{
class statistician
{
public:
// CONSTRUCTOR
statistician( );
// MODIFICATION MEMBER FUNCTIONS
void next(double r);
void reset( );
// CONSTANT MEMBER FUNCTIONS
int length( ) const { return count; }
double sum( ) const { return total; }
double mean( ) const;
double minimum( ) const;
double maximum( ) const;
// FRIEND FUNCTIONS
friend statistician operator +
(const statistician& s1, const statistician& s2);
friend statistician operator *
(double scale, const statistician& s);
private:
int count; // How many numbers in the sequence
double total; // The sum of all the numbers in the sequence
double tiniest; // The smallest number in the sequence
double largest; // The largest number in the sequence
};

// NON-MEMBER functions for the statistician class
bool operator ==(const statistician& s1, const statistician& s2);
}

#endif







#include "stats.h"
#include <cassert>

namespace CISP430_A1
{

statistician::statistician(){}

void statistician::next(double r)
{
largest = r;
tiniest = r;
total += r;
count ++;
}

double statistician::mean() const
{
return (total/count);
}

double statistician::minimum() const
{
assert(length()>0);
double temp = 0;
if (count ==1)
{
temp = tiniest;
return temp;
}
else if (temp < tiniest)
return temp;
else
{

temp = tiniest;
return temp;
}
}

double statistician::maximum()const
{
assert(length()>0);
double temp = 0;
if(count ==1)
{
temp = largest;
return temp;
}
else if (temp > largest)
return temp;
else{
temp = largest;
return temp;
}
}


bool operator==(const statistician& s1, const statistician& s2)
{
if(s1.length() == s2.length() && s1.mean() == s2.mean() && s1.sum() == s2.sum())
return true;
else return false;
}

statistician operator+(const statistician& s1, const statistician& s2)
{
statistician s4;
s4.count = s1.count +s2.count;
s4.total = s1.total + s2.total;
return s4;
}

statistician operator *(double scale, const statistician& s)
{
statistician s5;
s5.total = scale*s.total;
s5.count = scale*s.count;
return s5;
}
}









#include <cctype> // Provides toupper
#include <iomanip> // Provides setw to set the width of an output
#include <iostream> // Provides cout, cin
#include <cstdlib> // Provides EXIT_SUCCESS
#include "stats.h"
using namespace CISP430_A1;
using namespace std;

// PROTOTYPES of functions used in this test program:
void print_menu( );
// Postcondition: A menu of choices for this program has been written to cout.
// Library facilties used: iostream.h

char get_user_command( );
// Postcondition: The user has been prompted to enter a one character command.
// A line of input (with at least one character) has been read, and the first
// character of the input line is returned.

double get_number( );
// Postcondition: The user has been prompted to enter a real number. The
// number has been read, echoed to the screen, and returned by the function.

void print_values(const statistician& s);
// Postcondition: The length, sum, minimum, mean, and maximum of s have been
// written to cout, using a field width of 10 for each of these values.
// (If length is zero, then minimum, mean, and maximum are not written.)

int main( )
{
statistician s1, s2, s3; // Three statisticians for us to play with
char choice; // A command character entered by the user
double x; // Value for multiplication x*s1

cout << "Three statisticians s1, s2, and s3 are ready to test." << endl;

do
{
cout << endl;
print_menu( );
choice = toupper(get_user_command( ));
switch (choice)
{
case 'R': cout << "Which one should I reset (1, 2, 3) " << endl;
choice = get_user_command( );
switch (choice)
{
case '1': s1.reset( );
break;
case '2': s2.reset( );
break;
case '3': s3.reset( );
break;
}
cout << "Reset activated for s" << choice << "." << endl;
break;
case '1': s1.next(get_number( ));
break;
case '2': s2.next(get_number( ));
break;
case '3': s3.next(get_number( ));
break;
case 'T': cout << "The values are given in this table:" << endl;
cout << " LENGTH SUM"
<< " MINIMUM MEAN MAXIMUM" << endl;
cout << " s1";
print_values(s1);
cout << " s2";
print_values(s2);
cout << " s3";
print_values(s3);
break;
case 'E': if (s1 == s2)
cout << "s1 and s2 are equal." << endl;
else
cout << "s1 and s2 are not equal." << endl;
break;
case '+': s3 = s1 + s2;
cout << "s3 has been set to s1 + s2" << endl;
break;
case '*': cout << "Please type a value for x: ";
cin >> x;
s3 = x * s1;
cout << "s3 has been set to " << x << " * s1" << endl;
break;
case 'Q': cout << "Ridicule is the best test of truth." << endl;
break;
default: cout << choice << " is invalid. Sorry." << endl;
}
}
while ((choice != 'Q'));

return EXIT_SUCCESS;

}

void print_menu( )
{
cout << endl;
cout << "The following choices are available: " << endl;
cout << " R Activate one of the reset( ) functions" << endl;
cout << " 1 Add a new number to the 1st statistician s1" << endl;
cout << " 2 Add a new number to the 2nd statistician s2" << endl;
cout << " 3 Add a new number to the 3rd statistician s3" << endl;
cout << " T Print a table of values from the statisticians" << endl;
cout << " E Test whether s1 == s2" << endl;
cout << " + Set the third statistician s3 equal to s1 + s2" << endl;
cout << " * Set the third statistician s3 equal to x*s1" << endl;
cout << " Q Quit this test program" << endl;
}

char get_user_command( )
// Library facilties used: iostream.h
{
char command;

cout << "Enter choice: ";
cin >> command;

return command;
}

double get_number( )
// Library facilties used: iostream.h
{
double result;

cout << "Please enter the next real number for the sequence: ";
cin >> result;
cout << result << " has been read." << endl;
return result;
}

void print_values(const statistician& s)
// Library facilties used: iostream.h
{
cout << setw(10) << s.length( );
cout << setw(10) << s.sum( );
if (s.length( ) != 0)
{
cout << setw(10) << s.minimum( );
cout << setw(10) << s.mean( );
cout << setw(10) << s.maximum( );
}
else
cout << " none none none";
cout << endl;
}






Im keep getting a error I do not know what it is the problem pleas any sugestions.
this is the error msg

>stattest.obj : error LNK2019: unresolved external symbol "public: void __thiscall CISP430_A1::statistician::reset(void)" (?reset@statistician@CISP430_A1@@QAEXXZ) referenced in function _main
You're trying to use a function (reset) which has not been written.
ok I see, thank you
Topic archived. No new replies allowed.