Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <ctime>
- using namespace std;
- void show_array(int *, size_t);
- bool random_array(int *, const size_t, const int _left = 0, int _rigth = 32767);
- void check_size_t(wstring, size_t &);
- void labuda(int *, const size_t, int *, const size_t);
- int main() {
- srand(unsigned(time(NULL)));
- wcout.imbue(locale("rus_rus.866"));
- size_t size;
- check_size_t(L"Введите размер массива: ", size);
- int * arr = new int [size];
- random_array(arr, size);
- wcout << L"Исходный массив:\n";
- show_array(arr, size);
- wcout << L"Вывод последовательности:\n";
- int digits[] = {0,3,6,9};
- labuda(arr, size, digits, sizeof(digits) / sizeof(int));
- delete[] arr;
- cin.get();
- return 0;
- }
- void labuda(int * _array, const size_t _size, int * _digits, const size_t _q) {
- bool increase = true, decrease = true, pass;
- int prev, current, temp, tmp, jamp;
- size_t count = 0;
- for (size_t n = 0; n < _size; n++) {
- temp = _array[n];
- current = 0;
- jamp = 1;
- while (temp) {
- pass = false;
- tmp = temp % 10;
- for (size_t m = 0; m < _q; m++) {
- if (tmp == _digits[m]) {
- pass = true;
- break;
- }
- }
- if (!pass) {
- current += tmp * jamp;
- jamp *= 10;
- }
- temp /= 10;
- }
- if (current) {
- ++count;
- cout << current << ' ';
- if (n) {
- if (!decrease && !increase) continue;
- if (prev == current) continue;
- if (prev < current) decrease = false;
- else increase = false;
- }
- prev = current;
- }
- }
- if (!count) wcout << L"\nЭлементы последовательности отсутствуют\n";
- else if (decrease && increase) wcout << L"\nВсе элементы равны\n";
- else if (increase) wcout << L"\nПоследовательность упорядочена по возрастанию\n";
- else if (decrease) wcout << L"\nПоследовательность упорядочена по убыванию\n";
- else wcout << L"\nПоследовательность не упорядочена\n";
- }
- void show_array(int * _array, size_t _size) {
- streamsize width = 6;
- for (size_t n = 0; n < _size; n++) cout << _array[n] << ' ';
- cout << endl;
- }
- inline bool random_array(int * _array, const size_t _size, const int _left, int _rigth) {
- if (_left >= _rigth) return false;
- if (_left < 0 && _rigth >= 0) _rigth += abs(_left);
- else if (_left < 0 && _rigth < 0) _rigth = abs(_left) - abs(_rigth);
- else if (_left >= 0 && _rigth > 0) _rigth -= _left;
- for (size_t n = 0; n < _size; n++) _array[n] = rand() % _rigth + _left;
- return true;
- }
- void check_size_t(wstring _msg, size_t & _size) {
- do {
- int temp;
- wcout << _msg;
- cin >> temp;
- if (temp < 0) temp = abs(temp);
- _size = size_t(temp);
- if (cin.good() && _size > 0) break;
- else {
- cin.clear();
- cin.ignore(80,'\n');
- wcout << L"\aВы ошиблись!\n";
- }
- } while (true);
- fflush(stdin);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement