You will need to use 2 loops. The first loops the odd numbers using a starting value of 1, while the second loops the even numbers using a starting value of 2. At the end of every cycle, add 2 to the number.

In this case, you're better using a regular while loop to protect against the user entering 1, since using a do while always executes the code at least once, but if you do use a do while loop, you will just need an if statement in the second loop to check if the user entry was 1.

The only "error" I found is that it keeps prompting me to enter another integer after I entered an integer. But I "fixed" this by putting system("pause") and return 0; inside the loop. Is such a thing acceptable or are there any better workarounds?

12345

cout << endl;
system ( "pause" );
return 0;
}while ( true );

Also, I'm curious in this part. Why is it necessary to put the "=" in i += 2 because I tried taking it out and it gave error.

break wouldn't solve it, if you don't want something to appear multiple times, make sure it isn't in a loop, in the last full attempt you posted, you had

cout << "Odd numbers from 1-" << num << " " << odd << endl;

inside the loop, so it will print the entire statement as many times as it needs. You only want to be odds to be looping in that case, so all that should be inside the loop is cout << " " << odd;, move the stuff before that space above the loop, and the endl below the loop.