Ten kod posiada bardzo podobne 3 sekcje (wyświetl komunikat, wprowadź jakieś dane, jak nie są poprawne warto jakoś reagować). Jeśli zapiszesz to tak jak to zrobiłeś, będziesz łamał regułę DRY. Kod kwalifikuje się do wydzielenia do funkcji.
#include <iostream>
#include <limits>
#include <string>
int readValue(const std::string& message) {
int value;
do {
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << message;
std::cin >> value;
if(!std::cin) {
std::cout << "Wprowadzono nieprawidłową wartość. "
<< "Spróbuj jeszcze raz.\n";
}
} while(!std::cin);
return value;
}
int main() {
int a = readValue("Podaj pierwszą składową: ");
int b = readValue("Podaj drugą składową: ");
int c = readValue("Podaj trzecią składową: ");
}