#include <iostream>
#include <limits>
#include <cmath>
using namespace std;
// Wyczytanie liczby.. zakładam że całkowitej
long read_value() {
long value;
for(;;) {
cout << "Podaj liczbę całkowitą: ";
cin >> value;
if(cin) {
break;
}
cerr << "To co wprowadziłeś, nie jest liczbą całkowitą.\n";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
return value;
}
// Pobranie określonej ilości cyfr znaczących z początku
long get_first_digits(long value, size_t count) {
unsigned significant_digits = ceil(log10(value));
if(significant_digits < count) {
// Jeśli liczba cyfr do zwrócenia jest większa niż dostępna to..
return 0;
}
return value / pow(10, significant_digits - count);
}
// Sprawdzenie warunku czy zaczyna się od 12, 32 lub 4
bool check_value(long value) {
bool condition = false;
long first_digits = get_first_digits(value, 2);
if(first_digits == 12 or first_digits == 32) {
condition = true;
}
first_digits = get_first_digits(value, 1);
if(first_digits == 4) {
condition = true;
}
return false;
}
int main() {
long value = read_value();
cout << "Liczba " << value
<< (check_value(value) ? "": " nie")
<< " zaczyna się od cyfr 12 lub 32 lub 4.\n";
}