Другие языки программирования и технологии

удалить все элементы, кроме имеющих заданное произведение цифр. язык си++.нужна срочная помощь

Здравствуйте.

А как именно мы должны вам помочь? У вас есть свои наработки, которые можно подправить, чтобы ваша программа заработала? Нет? Тогда держите:

#include <ctime>
#include <cstdlib>
#include <iterator>
#include <iostream>
#include <algorithm>

struct op {
    int p;
    op(int _p): p(_p) {}
    bool operator()(int x) {
        int px = 1;
        for (; x != 0; x /= 10) px *= x % 10;
        return px != p;
    }
};

int rnd() { return rand() % 100; }

int main() {
    srand(time(0));
    int n, p;
    std::cout << "размер массива? ";
    std::cin >> n;
    int *a = new int[n];
    std::cout << "\nмассив: \n";
    std::generate_n(a, n, rnd);
    std::copy(a, a + n, std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\n\nпроизведение? ";
    std::cin >> p;
    int *e = std::remove_if(a, a + n, op(p));
    std::cout << "\nрезультат: \n";
    std::copy(a, e, std::ostream_iterator< int >(std::cout, " "));
    std::cout << std::endl;
    delete[] a;
}
Ivan Gaysenyuk
Ivan Gaysenyuk
72 384
Лучший ответ
И разумеется, ни слова о типе контейнера.
int* ?
std::vector<int> ?
ещё что-то?
Aleksandr *****
Aleksandr *****
22 184
for( i = 0; i < size; i++ ) { m = 1; for( n = a[ i ]; n > 0; n /= 10 ) m *= n % 10; if (m != req) delete_el( i ); }