Arithmetic Progression
A couple of things I noticed:

Here:

while (std::cout &lt;&lt; "Please enter the third term in the series: " &amp;&amp; !(std::cin &gt;&gt; thirdTerm)) {
    std::cin.clear(); //clear bad input flag
    std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n'); //discard input
    std::cout &lt;&lt; "Invalid input; please re-enter.\n";
}


Aside from the prompt string this is repeated three times.  This would be better if it was in a separate function that accepted the prompt string and the address of the variable to store the input value:

void GetInput(string prompt, int&amp; input)
{
    while (std::cout &lt;&lt; prompt &amp;&amp; !(std::cin &gt;&gt; input)) 
    {
        std::cin.clear(); //clear bad input flag
        std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n'); //discard input
        std::cout &lt;&lt; "Invalid input; please re-enter.\n";
    }
}

GetInput("Please enter the third term in the series: ",thirdTerm);
GetInput("Enter the third from the last term in the series: ",thirdLastterm);
GetInput("Please enter the sum of the series: ",sum);


Here:

    do {
        total = 0;
        vSeries.push_back(thirdTerm + (a * constantNumber));
        a++;
        for (int i = 0; i &lt; vSeries.size(); i++) {
            total += vSeries[i];
        }
    } while (total &lt; sum);


You're iterating through the vector getting a new total.  It would be better to just add each element to a running total:

    total = 0;
    do {
        int temp = thirdTerm + (a * constantNumber);
        vSeries.push_back(temp);
        total += temp;
        a++;
    } while (total &lt; sum);