I have been working on this program that is a timed mathematical quiz and have everything completed. The problem is I keep getting warnings when I compile that says 1: 'sign' : not all control paths return a value and 2: 'equation' : not all control paths return a value. Can anyone help me see what the problem is?

Code:

#include<iostream>
using std::cout;
using std::cin;
using std::endl;
#include<cstdlib>
#include<ctime>
int num(); // function prototype
char sign(); // function prototype
int equation( int a, char c, int b ); // function prototype
int main()
{
srand( time( 0 ) ); // This time function returns the current
// "calendar time" in seconds. This value is
// converted to an unsigned integer and used as
// the seed to the random number generator.
int numcorrect = 0;
int stop = time( 0 ) + 30;
int x, y, answer, correctanswer;
char z;
while ( time( 0 ) < stop )
{
x = num(), y = num(); // Assignment of x and y to the num function
z = sign();
cout << "What is " << x << " " << z << " "
<< y << endl; // Prompt to ask the arithmetic question
cin >> answer; // Input answer
correctanswer = equation( x, z, y ); // Assignment of correctanswer
// to the equation function
if ( correctanswer == answer ) // tests user's answer
{
cout << "Very good!\n\n";
++numcorrect;
}
else
{
cout << "Incorrect.\n";
cout << "The correct answer is " << correctanswer << "\n\n";
}
} // end while loop
cout << "\nYou answered " << numcorrect
<< " questions correctly.\n\n"; // Prompts # of correct answers
return 0;
}
// Function implementation
int num()
{
return 1 + ( rand() % 12 ); // returns random integer between 1 and 12
}
// Function implementation
char sign()
{
int k = 1 + rand() % 5; // assigns random integers between 1 and 5 to k
if ( k == 1 ) // tests k and returns the + sign
return '+';
if ( k == 2 ) // tests k and returns the - sign
return '-';
if ( k == 3 ) // tests k and returns the * sign
return '*';
if ( k == 4 ) // tests k and returns the / sign
return '/';
if ( k == 5 ) // tests k and returns the % sign
return '%';
} // ends the sign function implementation block
// Function implementation
// a, c, and b below are parameters to
// the equation function implementation
int equation ( int a, char c, int b )
{
if ( c == '+' ) // tests c to return the appropriate equation
return a + b;
if ( c == '-' )
return a - b;
if ( c == '*' )
return a * b;
if ( c == '/' )
return a / b;
if ( c == '%' )
return a % b;
} // ends equation function implementation block

Thank you!

teeCee