Need to end program if condition is not met

Sep 26, 2013 at 5:58pm
Hi everyone,

Pretty simple question here - I just want to end the program if the user doesn't meet a certain condition...I think I heard "return 0" when I read about this, but the problem is that "that" just ends the program whether or not the condition is met, and I can't move onto the next condition.

Below is the code of a part of my program, and I would obviously want to end the program after the output is given in the else statements:

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
cout << "\nPlease enter your month: \n";

cin >> month;

if (month > 0 && month <= 12)
cout << "\nMonth entered is valid. \n";

else

cout << "\nError: Month entered was not in between 0 and 12. Program ending. \n";

cout << "\nPlease enter your day: \n";

cin >> day;
if (day > 0 && day <= 31)

cout << "\nDay entered is valid. \n";

else

cout << "\nError: Day entered was not in between 0 and 31. Program ending. \n";

cout << "\nPlease enter your year (use 4-digits): \n";


cin >> year;
if (year >= 1900 && year <= 2099)

cout << "\nYear entered is valid. \n";

else

cout << "\nError: Year entered was not in between 1900 and 2099. Program ending. \n";
Last edited on Sep 26, 2013 at 6:00pm
Sep 26, 2013 at 6:04pm
closed account (o3hC5Di1)
Hi there,

The return 0; ends the program only when it is a return statement of your main() function.

Applied to a small part of your program:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(int argc, char** argv)
{
    cout << "\nPlease enter your day: \n";

    cin >> day;
    if (day > 0 && day <= 31)
    {
        cout << "\nDay entered is valid. \n";
    }
    else
    {
        cout << "\nError: Day entered was not in between 0 and 31. Program ending. \n";
        return 0; //This returns the main function, effectively ending the program
    }
}



Hope that helps.

All the best,
NwN
Sep 26, 2013 at 10:29pm
Thanks very much...I switched out the int main() and put

int main(int argc, char** argv)

but I still have the program end after valid input.
Sep 26, 2013 at 10:48pm
The program will end if either a return statement in main(), or if execution simply reaches the closing brace of main()

If you don't want the execution to reach that point, you may need a loop. Certainly if the user enters invalid input it is usually a good idea to go back and get the user to try again, which would involve a loop.
Sep 26, 2013 at 11:17pm
Yeah, I personally would do that, but that's not what the instructor asked us to do...Again, I would do it that way, as well.
Sep 26, 2013 at 11:26pm
I'm not sure what you are asking. The program will always end when it reaches the end of processing, unless you put something there such as a request for user to press a key.

As I understand it, you are required to end the program when invalid input is found, for which a solution given by NwN. (Not the change to int main(), that is not relevant here, but the change to the if-else.
Topic archived. No new replies allowed.