21

Re: Перетин двох множин. (С++)

Ну, якщо щось не так, до десь це можна виправити.
Напишете конкретніше, що саме - може, й допоможемо.

22

Re: Перетин двох множин. (С++)

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

23

Re: Перетин двох множин. (С++)

*a = a1;//a містить потрібну довжину
    int* p = new int[*a]{ 55 };//p має довжину a
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (*(ar + j) == *(ar1 + m)) {
                *(p + *a) = *(ar + j);//куди-куди записуємо значення?

Кажу ж - спершу варто зробити статичні масиви, а потім переробити в динамічні. p[*a]=ar[j] значно легше виявити, ніж оцю арифметику.

24

Re: Перетин двох множин. (С++)

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

#include <iostream>
#include <time.h>
using namespace std;
void set(int *ar, int n);
void print(int *ar, int n);
int* zbir(int *ar, int n, int *ar1, int m, int* ar2, int *a);
void sort(int *ar, int n);
int* add_end(int *ar, int* a);
void main() {
    srand(time(0));
    int n, m, a = 1;
    cin >> n;
    int* ar = new int[n];
    cin >> m;
    int* ar1 = new int[m];
    int* ar2 = new int[a] { rand() % 101 - 50 };
    set(ar, n);
    print(ar, n);
    cout << "\n";
    set(ar1, m);
    print(ar1, m);
    cout << "\n";
    sort(ar, n);
    sort(ar1, m);
    ar2 = zbir(ar, n, ar, m, ar2, &a);
    print(ar2, a);
    cout << "\n";
    system("pause");
}
int* add_end(int *ar, int* a) {
    int* p = new int[*a + 1];
    for (int i = 0; i < *a; i++) {
        *(p + i) = *(ar + i);
    }
    *(p + *a) = 0;
    delete[]ar;
    (*a)++;
    return p;
}
void sort(int *ar, int n) {
    int tmp = 0;
    for (int i = 0; i < n; i++) {
        for (int j = n - 1; j > i; j--) {
            if (*(ar + j - 1) > *(ar + j)) {
                tmp = ar[j];
                *(ar + j) = *(ar + j - 1);
                *(ar + j - 1) = tmp;
            }
        }
    }
}
int* zbir(int *ar, int n, int *ar1, int m, int* ar2, int *a) {
    int* p = new int[*a]{ rand() % 101 - 50 };
        for (int i = 0, j = 0; i < n + m && j < n + m;) {
            if (*(ar + i) < *(ar1 + j)) {
                i++;
            }
            if (*(ar + i) > *(ar1 + j)) {
                j++;
            }
            if (*(ar + i) == *(ar1 + j)) {
                *(p + *a) = *(ar + i);
                p = add_end(ar, a);
                i++;
                j++;
            }
        }
    a--;
    delete[] ar2;
    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";
}

25

Re: Перетин двох множин. (С++)

Parsifal написав:

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

Це український форум.

26

Re: Перетин двох множин. (С++)

я просто англійської не знаю і важко перекласти

27

Re: Перетин двох множин. (С++)

якось так переведу Сповіщення про помилку не вдалося

28

Re: Перетин двох множин. (С++)

Тобто ані скопіювати, ані зробити скріншот у вас не виходить?

29

Re: Перетин двох множин. (С++)

скопіювати не виходить скріншот не пробував

30

Re: Перетин двох множин. (С++)

[img]скріншот зробив але неможу викласти , можливо заборона на додавання зображень[/img]

31

Re: Перетин двох множин. (С++)

Скріншот викладайте на якийсь інший ресурс, на кшталт https://imgur.com/, а сюди вставляйте посилання.

Подякували: Parsifal1

32

Re: Перетин двох множин. (С++)

спс https://imgur.com/a/yqgiFtV

33

Re: Перетин двох множин. (С++)

допоможіть виправити помилку

34

Re: Перетин двох множин. (С++)

Просто знову вилізли за межі масиву.
Ви можете пояснити, що ви взагалі намагаєтеся зробити?

   int n, m, a = 1;
    int* ar2 = new int[a] { rand() % 101 - 50 }; //нащо вам масив на 1 елемент? Де ви його видаляєте?
    int* p = new int[*a]{ rand() % 101 - 50 }; //а нащо ще один?
                *(p + *a) = *(ar + i);//чому тут дорівнює a, а який розмір p?
    *(p + *a) = 0;//а тут?

35

Re: Перетин двох множин. (С++)

другий день намагаюся зробити це дз

36

Re: Перетин двох множин. (С++)

масив на 1 елемент це 3 масив в якому є спільні числа 1 і 2 масивів а 2 масив з 1 елементом це заповненя першого масиву з 1 елементом

37

Re: Перетин двох множин. (С++)

вже методом тику пробую зробити

38

Re: Перетин двох множин. (С++)

нічого не допомогає

39

Re: Перетин двох множин. (С++)

Тоді переробіть нарешті на статичні масиви, відлагодьте алгоритм, а тоді вже переходьте на динамічні. Скільки ще вам це повторювати?