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

C++ не работает часть программы

Задача: удалить из массива все простые числа. Программа начинает ошибаться вот в этом месте. Где ошибка?
for (r=0;r<*n;r++) //прохожу по массиву
{for (del=2;del<=a[r]/2;del++) // ищу простое число
{if (a[r]>=0 && a[r]Юl==0)
cout<
AA
Azizbek Asadov
701
#include <iostream>
#include <ctime>
#include <iomanip>

using namespace std;

bool simple(unsigned);
size_t newsize(unsigned *, size_t);
void show_array(unsigned *, size_t);
void copy_array(unsigned *, unsigned *, size_t);
void simple_delete(unsigned *, size_t, unsigned *, size_t);

int main() {
    locale::global(locale(""));
    srand(unsigned(time(0)));

    cout << "\n Введите размер массива: ";
    size_t size;
    cin >> size;
    if (!size) exit(0);    

    unsigned * arr = new unsigned [size];
    for (size_t n = 0; n < size; n++) arr[n] = 2 + rand() % 96;

    cout << "\n Исходный массив: \n\n";
    show_array(arr, size);

    size_t nsize = newsize(arr, size);
    unsigned * temp = new unsigned [size];
    copy_array(temp, arr, size);
    delete[] arr;
    arr = new unsigned [nsize];
    simple_delete(arr, nsize, temp, size);

    delete[] temp;
    temp = NULL;

    cout << endl << " Преобразованный массив: \n\n";
    show_array(arr, nsize);    

    delete[] arr;    
    arr = NULL;

    cin.get(); cin.get();
    return 0;
}

void simple_delete(unsigned * _array, size_t _nsize, unsigned * _temp, size_t _size) {
    size_t m = 0;
    for (size_t n = 0; n < _size; n++)
        if (simple(_temp[n])) continue;
        else _array[m++] = _temp[n];
}

void copy_array(unsigned * _where, unsigned * _whence, size_t _size) {
    for (size_t n = 0; n < _size; n++) _where[n] = _whence[n];
}

void show_array(unsigned * _array, size_t _size) {
    for (size_t n = 0; n < _size; n++) cout << setw(10) << _array[n] << endl;
}

size_t newsize(unsigned * _array, size_t _size) {
    size_t nsz = _size;
    for (size_t n = 0; n < _size; n++) if (simple(_array[n])) --nsz;
    return nsz;
}

bool simple(unsigned _number) {
    for (unsigned n = 2; n <= _number / 2; n++) if (!(_number % n)) return false;
    return true;
}
ИИ
Иван Иванов
95 269
Лучший ответ
Вынесите в отдельную процедуру код проверки число на простоту.
И выложите свой код к примеру на пастебин или еще куда, местный редактор сьел половину.
Эдуард Недвига
Эдуард Недвига
34 701