Дано натуральное число n (n<9999). Определить, является ли это число
полиндромом (перевертышем) с учетом четырех цифр (например 2222, 0440, 6116). Верно ли, что это число содержит ровно три одинаковые цифры.
C/C++
Помогите пожалуйста Программа в с++ с помощью классов
#include <iostream>
using namespace std;
#define MAX 9999
class number
{
private:
unsigned num; // число
unsigned e,d,s,t; // единицы, десятки, сотни, тысячи
void calculate_e(void); // посчитать единицы
void calculate_d(void); // посчитать десятки
void calculate_s(void); // посчитать сотни
void calculate_t(void); // посчитать тысячи
public:
void insert_num(void);
void print_num(void);
void print_e(void);
void print_d(void);
void print_s(void);
void print_t(void);
void test_polindrom(void);
void test_3cif(void);
};
void number::insert_num(void)
{
do{
cin >> number::num;
if(number::num < 1 || number::num >= MAX)
cerr << "Введите число в приделе [1," << MAX - 1 << "]: "
<< endl;
} while(number::num < 1 || number::num >= MAX);
number::calculate_e();
number::calculate_d();
number::calculate_s();
number::calculate_t();
}
void number::print_num(void)
{
cout << number::num << endl;
}
void number::calculate_e(void)
{
number::e = number::num % 10;
}
void number::calculate_d(void)
{
number::d = number::num % 100 / 10;
}
void number::calculate_s(void)
{
number::s = ( number::num / 100 ) % 10;
}
void number::calculate_t(void)
{
number::t = number::num / 1000;
}
void number::print_e(void)
{
cout << number::e << endl;
}
void number::print_d(void)
{
cout << number::d << endl;
}
void number::print_s(void)
{
cout << number::s << endl;
}
void number::print_t(void)
{
cout << number::t << endl;
}
void number::test_polindrom(void)
{
if(number::e == number::t && number::d == number::s)
{
cout << "Число является полиндромом." << endl;
}
else
{
cout << "Число не является полиндромом." << endl;
}
}
void number::test_3cif(void)
{
if(number::e == number::d && number::e == number::s && number::e != number::t)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else if(number::e == number::d && number::e == number::t && number::e != number::s)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else if(number::e == number::s && number::e == number::t && number::e != number::d)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else if(number::d == number::s && number::d == number::t && number::e != number::d)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else
{
cout << "Это число не содержит ровно три одинаковых цифры." << endl;
}
}
int main()
{
number n;
n.insert_num();
// n.print_num();
// n.print_e();
// n.print_d();
// n.print_s();
// n.print_t();
n.test_polindrom();
n.test_3cif();
return 0;
}
using namespace std;
#define MAX 9999
class number
{
private:
unsigned num; // число
unsigned e,d,s,t; // единицы, десятки, сотни, тысячи
void calculate_e(void); // посчитать единицы
void calculate_d(void); // посчитать десятки
void calculate_s(void); // посчитать сотни
void calculate_t(void); // посчитать тысячи
public:
void insert_num(void);
void print_num(void);
void print_e(void);
void print_d(void);
void print_s(void);
void print_t(void);
void test_polindrom(void);
void test_3cif(void);
};
void number::insert_num(void)
{
do{
cin >> number::num;
if(number::num < 1 || number::num >= MAX)
cerr << "Введите число в приделе [1," << MAX - 1 << "]: "
<< endl;
} while(number::num < 1 || number::num >= MAX);
number::calculate_e();
number::calculate_d();
number::calculate_s();
number::calculate_t();
}
void number::print_num(void)
{
cout << number::num << endl;
}
void number::calculate_e(void)
{
number::e = number::num % 10;
}
void number::calculate_d(void)
{
number::d = number::num % 100 / 10;
}
void number::calculate_s(void)
{
number::s = ( number::num / 100 ) % 10;
}
void number::calculate_t(void)
{
number::t = number::num / 1000;
}
void number::print_e(void)
{
cout << number::e << endl;
}
void number::print_d(void)
{
cout << number::d << endl;
}
void number::print_s(void)
{
cout << number::s << endl;
}
void number::print_t(void)
{
cout << number::t << endl;
}
void number::test_polindrom(void)
{
if(number::e == number::t && number::d == number::s)
{
cout << "Число является полиндромом." << endl;
}
else
{
cout << "Число не является полиндромом." << endl;
}
}
void number::test_3cif(void)
{
if(number::e == number::d && number::e == number::s && number::e != number::t)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else if(number::e == number::d && number::e == number::t && number::e != number::s)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else if(number::e == number::s && number::e == number::t && number::e != number::d)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else if(number::d == number::s && number::d == number::t && number::e != number::d)
{
cout << "Это число содержит ровно три одинаковых цифры." << endl;
}
else
{
cout << "Это число не содержит ровно три одинаковых цифры." << endl;
}
}
int main()
{
number n;
n.insert_num();
// n.print_num();
// n.print_e();
// n.print_d();
// n.print_s();
// n.print_t();
n.test_polindrom();
n.test_3cif();
return 0;
}
Похожие вопросы
- Помогите пожалуйста написать программу на Си
- Помоги пожалуйста с программой в С++
- Как Создать иерархическую систему классов, на примере этого задания? Второй день уже туплю, помогите пожалуйста... С++
- Помогите пожалуйста с программой
- Помогите пожалуйста составить задачу на программе С++
- Помогите пожалуйста составить правильную программу на C++ 12 вариант
- Помогите пожалуйста написать программу!
- Пожалуйста, помогите написать программу на С++
- Помоги пожалуйста написать программу на C++
- Создать простой класс, конструктор, и несколько функций. Не могу решить задачу, плохо понял тему, помогите пожалуйста.
проверьте ещё раз условие со строгостью неравенства условия n<9999