Error: expression must have integral or enum type

Apr 10, 2013 at 5:45am
Almost complete with my programme and then I just notice I receive an error "expression must have integral or enum type"... Can anyone help me what does this mean and advice me what should I do?

// grossweek.cpp

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
	double salesperson[10];
	int counter = 0;
	int group1 = 0, group2 = 0, group3 = 0, group4 = 0, group5 = 0, group6 = 0, group7 = 0, group8 = 0, group9 = 0;

	cout << "Please input 10 salespeoples' gross sales for that week: \n";

	for (int a = 0; a < 10; ++a)
		cin >> salesperson[a];

	for (int b = 0; b < 10; ++b)
		salesperson[b] = (salesperson[b] * 9/100) + 200;

	cout << "Salespeople No." << setw(18) << "Receives" << "\n";
	for ( int d = 0; d < 10; ++d)
		cout << setw(7) << d << setw(19) << "$" << salesperson[d] << endl;

	for ( int e = 0; e < 10; ++e)
	switch (salesperson[e]) // error begins here
	{
	case (e < 300):
			++group1; 
			++counter;
			break;
	case (e < 400):
			++group2;
			++counter;
			break;
	case (e < 500):
			++group3;
			++counter;
			break;
	case (e < 600):
			++group4;
			++counter;
			break;
	case (e < 700):
			++group5;
			++counter;
			break;
	case (e < 800):
			++group6;
			++counter;
			break;
	case (e < 900):
			++group7;
			++counter;
			break;
	case (e < 1000):
			++group8;
			++counter;
			break;
	case (e >= 1000):
			++group9;
			++counter;
			break;
	default:
		break;
		}

	cout << "Group: \n";
	cout << "\n$200-$299      : " << group1;
	cout << "\n$300-$399      : " << group2;
	cout << "\n$400-$499      : " << group3;
	cout << "\n$500-$599      : " << group4;
	cout << "\n$600-$699      : " << group5;
	cout << "\n$700-$799      : " << group6;
	cout << "\n$800-$899      : " << group7;
	cout << "\n$900-$999      : " << group8;
	cout << "\n$1000 and over : " << group9;
}
Apr 10, 2013 at 5:46am
what line gives you the error?

EDIT:

oh wait I see it.

case (e < 300):

You can't do this. A case can only be a single number. You can't do a case based on a range. If you need to check for a range of values, use an else/if chain.
Last edited on Apr 10, 2013 at 5:48am
Apr 10, 2013 at 5:48am
I think it might be your cases. Technically, they are Boolean values, not integers or enums.

Correct me if I'm wrong, Disch.
Apr 10, 2013 at 6:19am
Thanks for realising my mistake for me. Guess ill use if else function then.
Topic archived. No new replies allowed.