String Code, Shipping Charge based on Region Code

Write an introductory C++ program that displays the appropriate shipping charge based on the region code entered by the user. To be valid, the region code must contain exactly three characters: a letter (either A or B) followed by two numbers. The shipping charge for region A is $25. The shipping charge for region B is $30. Display an appropriate message if the region code is invalid. Use a sentinel value to end the program. Save and then run the program. Test the program using the following region codes: A11, B34, C7, D2A, A3N, C45, and 74TV.

The following is the code I have so far and the error messages I keep getting:

#include <iostream>
#include <string>
#include <iomanip>
#include "stdafx.h"
using namespace std;

int main()
{
string regionCode = "";

cout << "Please enter region code (-1 to exit): ";
cin >> regionCode;

while (regionCode != "-1")

if (regionCode.find('A', 0))
{
cout << "Shipping cost is $25" << endl;
}

else if (regionCode.find('B', 0));
{
cout << "Shipping cost is $30" << endl;
}

cout << "Please enter region code (-1 to exit): ";
cin >> regionCode;

system("PAUSE");
return 0;
} //end of main function


Errors:
Severity Code Description Project File Line Suppression State
Error C2065 'string': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 12
Error C2146 syntax error: missing ';' before identifier 'regionCode' Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 12
Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 12
Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 14
Error C2065 'cin': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 15
Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 15
Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 17
Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 19
Error C2228 left of '.find' must have class/struct/union Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 19
Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 21
Error C2065 'endl': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 21
Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 24
Error C2228 left of '.find' must have class/struct/union Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 24
Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 26
Error C2065 'endl': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 26
Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 29
Error C2065 'cin': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 30
Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 30
Error C3861 'system': identifier not found Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 32
Please use code tags; it preserves indentation and allows running code (once you strip out the VS stuff) in C++-shell.

Note that the changes below simply make your code COMPILE AND RUN. They don't carry out the VALIDATION of your strings (letter, followed by two digits). You are going to have to restructure your code considerably for that. Validation will require:
- string length is 3 - string's .size() member function
- first character is an (upper-case?) character - isalpha(), possibly isupper()
- second and third characters are numeric - isdigit()
Have a look at header <cctype> for isalpha, isupper, isdigit

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
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main()
{
   string regionCode = "";

   cout << "Please enter region code (-1 to exit): ";
   cin >> regionCode;

   while (regionCode != "-1")
   {                                                    // <===== Need this {
      if (regionCode.find('A', 0) != string::npos)      // <===== Look up http://www.cplusplus.com/reference/string/string/find/
      {
         cout << "Shipping cost is $25" << endl;
      }

      else if (regionCode.find('B', 0) != string::npos )  // ; <==== Don't need this semicolon. Also, same principle as above for npos
      {
         cout << "Shipping cost is $30" << endl;
      }

      else
      {
         cout << "Unidentified region code" << endl;      // <===== Probably ought to have a default
      }

      cout << "Please enter region code (-1 to exit): ";
      cin >> regionCode;
   }                                            // <==== Need this }
}
Last edited on
Now I am getting these errors:

Severity Code Description Project File Line Suppression State
Error C2065 'string': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 12

Error C2146 syntax error: missing ';' before identifier 'regionCode' Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 12

Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 12

Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly

Error C2065 'cin': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 15

Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 15


Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 17

Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 19

Error C2228 left of '.find' must have class/struct/union Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 19

Error C2653 'string': is not a class or namespace name Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 19

Error C2065 'npos': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 19

Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 21

Error C2065 'endl': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly
exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 21

Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 24

Error C2228 left of '.find' must have class/struct/union Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly

Error C2653 'string': is not a class or namespace name Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 24

Error C2065 'npos': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 24

Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 26

Error C2065 'endl': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 26

Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 31

Error C2065 'endl': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 31

Error C2065 'cout': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 34

Error C2065 'cin': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 35

Error C2065 'regionCode': undeclared identifier Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 35
Try my code in C++-shell (the little cog-wheel item at the top RH corner of the code sample).

I had to strip the (non-C++-standard) Visual Studio header out to run with my compiler. You may have to reinstate it, I suppose.

You appear not to have access to <string> or anything in <iostream>. Have you cut and pasted the whole code ... INCLUDING THE HEADERS? Is your environment wrongly set up so that it doesn't find those headers?
Last edited on
When I copy and paste it exactly, I get the following error:

Severity Code Description Project File Line Suppression State
Error C1010 unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? Lancaster_Chp13Ex20 c:\users\jim_l\documents\saint leo\com207 c++\weekly exercises\lancaster_chp13ex20\lancaster_chp13ex20\lancaster_chp13ex20.cpp 37


But then when I add #include "stdafx.h", it gives me all those errors that I listed above. I feel like it has me running in circles.


Oh, and yes, your code works perfectly in C++ shell, every time.
Last edited on
I don't use Visual Studio - someone else would be better advising you. I have a vague feeling that stdafx.h might have to be the FIRST include - but I could be completely wrong, I'm afraid.
I put the stdafx.h first like you suggested and it fixed it all. That was awesome!! Thanks so much!
Last edited on
Topic archived. No new replies allowed.