41

Re: 3 функції. Без використання операторів if і switch.

допоможіть знайти помилку

42

Re: 3 функції. Без використання операторів if і switch.

якщо вам потрібна репутація на форумі то я після вирішення проблеми можу на всі ваші коментарі нажати дякую в цій темі

43

Re: 3 функції. Без використання операторів if і switch.

а можете потім ще відео записати, де ви офіційно висловлюєте подяку? бажано з усіма членами своєї сім'ї на фоні

44

Re: 3 функції. Без використання операторів if і switch.

FakiNyan написав:

а можете потім ще відео записати, де ви офіційно висловлюєте подяку? бажано з усіма членами своєї сім'ї на фоні

це вже ні

45

Re: 3 функції. Без використання операторів if і switch.

Можете хоча б розібратися, в якій із трьох функцій оте вилізає? Чи в усіх?

46

Re: 3 функції. Без використання операторів if і switch.

в усіх

47

Re: 3 функції. Без використання операторів if і switch.

кількість елементів добра в усіх ,значеня 1 елемента у всіх добре а дальше незрозуміле йде так ніби десь замежі масиву вийшов але де не може знайти.

48

Re: 3 функції. Без використання операторів if і switch.

По другій і третій функціях - раджу зробити одну функцію із додатковим параметром (дільником), а у тих двох її викликати, десь так:

int *div_2(int *array, int &size)
{
    return divisibles(array, size, 2);
}
int *div_3(int *array, int &size)
{
    return divisibles(array, size, 3);
}
int *divisibles(int *array, int &size, int div)
{
//а тут ваш код
}

Це сильно полегшить вам задачу.
І так, new[0] має трохи некоректну поведінку: повертається ненульовий вказівник, але розіменовувати його не можна, це UB. Що у вас і спостерігаємо (рядки 39 і 51).
http://www.cplusplus.com/reference/new/operator%20new[]/

оригінал

If this argument is zero, the function still returns a distinct non-null pointer on success (although dereferencing this pointer leads to undefined behavior).

49

Re: 3 функції. Без використання операторів if і switch.

а можна якось зробити щоб  new повертав нульовий вказівник?

50

Re: 3 функції. Без використання операторів if і switch.

по 2 і 3 зроблю після того як налагоджу всі 3

51

Re: 3 функції. Без використання операторів if і switch.

допоможіть знайти помилку

52

Re: 3 функції. Без використання операторів if і switch.

а зараз код як виглядає?

53

Re: 3 функції. Без використання операторів if і switch.

#include <iostream>
#include <time.h>
using namespace std;
int* add_end(int *ar, int &n, int num);
int* func3(int *ar, int &n);
int* func2(int *ar, int &n);
int* func1(int *ar, int &n);
void set(int *ar, int n);
void print(int *ar, int n);
void main() {
    setlocale(LC_ALL, "ru");
    srand(time(0));
    int n;
    cout << "Введiть розмiр масиву: ";
    cin >> n;
    int* ar = new int[n];
    set(ar, n);
    print(ar, n);
    int*(*p[3])(int*, int&) = { func1,func2,func3 };
    int choice;
    cout << "1 - залишити простi числа з масиву \n2 - залишити числа кратнi 3 з масиву \n3 - залишити парнi числа з масиву \nВведiть вибiр:";
    cin >> choice;
    *ar = *p[choice - 1](ar, n);
    print(ar, n);
    system("pause");
}
int* add_end(int *ar, int &n, int num) {
    int* p = new int[n + 1];
    for (int i = 0; i < n; i++) {
        p[i] = ar[i];
    }
    p[n] = num;
    delete[]ar;
    n++;
    return p;
}
int* func3(int *ar, int &n) {
    int nn = n;
    n = 0;
    int* p = new int[n];
    int num = 0;
        for (int i = 0; i < nn; i++) {
            num = ar[i];
            ar[i] % 2 == 0 ? (p = add_end(p, n, num)) || (i += 0) : (i += 0);
        } 
    delete[]ar;
    return p;
}
int* func2(int *ar, int &n) {
    int nn = n;
    n = 0;
    int* p = new int[n];
    int num = 0;
    for (int i = 0; i < nn; i++) {
        num = ar[i];
        ar[i] % 3 == 0 ? (p = add_end(p, n, num)) || (i += 0) : (i += 0);
    }
    delete[]ar;
    return p;
}
int* func1(int *ar, int &n) {
    int nn = n;
    n = 0;
    int* p = new int[n];
    int b = 0;
    int num = 0;
    for (int i = 0; i < nn; i++) {
        b = 0;
        for (int c = 1; c < ar[i]; c++) {
            ar[i] % c == 0 ? (ar[i] >= 0 ? (b++) : (b += 0)) : b += 0;
        }
        num = ar[i];
        b < 3 ? (p = add_end(p, n, num)) || (b += 0) : (b += 0);
    }
    delete[]ar;
    return p;
}
void set(int *ar, int n) {
    for (int i = 0; i < n; i++) {
        *(ar + i) = rand() % 101 - 50;
    }
}
void print(int *ar, int n) {
    for (int i = 0; i < n; i++) {
        cout << *(ar + i) << " ";
    }
    cout << "\n";
}

54

Re: 3 функції. Без використання операторів if і switch.

я пробував  num в

     ar[i] % 2 == 0 ? (p = add_end(p, n, num)) || (i += 0) : (i += 0);

замінити на

ar[i]


але не допомогло

55

Re: 3 функції. Без використання операторів if і switch.

можливо це в візуал студіо помилка?

56

Re: 3 функції. Без використання операторів if і switch.

    setlocale(LC_ALL, "ru");

яке буде ваше останнє слово?

57

Re: 3 функції. Без використання операторів if і switch.

це зміна мови української нема просто

58

Re: 3 функції. Без використання операторів if і switch.

але в сіаутах пишу по укр а і англ і компілятор тоді все бачить

59

Re: 3 функції. Без використання операторів if і switch.

англійську я не знаю укр немає і як мені тоді по укр писати?

60

Re: 3 функції. Без використання операторів if і switch.

і мені зараз важливіше щоб програма працювала як потрібно