Понимаю, что много вопросов на эту тему уже писали. Мне нужно написать программу, которая будет объединять два массива, записывая в 3. Нету возможности написать код по другому, нужно правильно оформить этот, чтобы он складывал. 2 массива я уже отсортировал, записал один в переменную. Второй не могу сделать, чтобы он сравнивал с первым и записывал в третий те, каких нет. Ещё я не могу сделать правильную запись в третий. Не понимаю, как это сделать корректно.
SortArray& operator + (const Array &x) const override //объединение, тут нужна помощь
{
const SortArray& temp = dynamic_cast<const SortArray&>(x);
for(size_t i = 0; i < sz; i++)
arr[sz] = arr[i];
for(size_t i = 0; i < temp.sz; i++)
{
for (size_t j = 0; j < sz; j++){
if (arr[i] = arr[j])
break;
arr[temp.sz] = arr[sz];
}
}
SortArray *result = new SortArray (temp.arr, temp.sz + sz);
return *result;
}
void foreach() // этот метод сортирует массив, работает корректно
const
override
{
double temp;
for (size_t i = 0; i < sz - 1; i++)
{
for (size_t j = 0; j < sz - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
Ссылка на всю программу
SortArray *result = new SortArray (temp.arr, temp.sz + sz);
size_t i = 0;
for (; i < sz; ++i)
result->arr[i] = (temp.arr[i] < arr[i])
? temp.arr[i] : arr[i];
for(; i < result->sz; ++i)
result->arr[i] = temp.arr[0];
return *result;
Всем спасибо, особое спасибо @iksuy за хорошую мысль. Рабочий, но достаточно сырой код приложу. Если хотите его использовать, его нужно будет доработать.
SortArray& operator + (const Array &x) const override
{
const SortArray& temp = dynamic_cast<const SortArray&>(x);
size_t i = 0, j = 0, f = sz, s = temp.sz, th = 0;
while ((i < f) && (j <= s))
{
if (arr[i] == temp.arr[j])
{
arr[th] = arr[i];
th++;
i++;
j++;
}
else if(arr[i] < temp.arr[j])
{
arr[th] = arr[i];
th++;
i++;
}
else
{
arr[th] = temp.arr[j];
th++;
j++;
}
}
while (i < f)
{
arr[th] = arr[i];
th++;
i++;
}
while (j < s)
{
arr[th] = temp.arr[j];
th++;
j++;
}
SortArray *result = new SortArray (arr, th);
return *result;
}
Важно! Этот метод изменяет один из входящих в него массивов, что отрицательно может сказаться на конечном результате. Ещё этот метод работает только для упорядоченных массивов.
Это что:
arr[sz] = arr[i]
и тому подобное?
Добавлять можно с помощью std::vector<>.push_back(...).
Извините, что отвечаю, а не просто комментирую, не хватает репутации.
ps
my_vector<T>& my_vector<T>::operator += (const my_vector<T> x) {
for (vector<T>::iterator it = x.begin(); it != x.end(); i++)
push_back(*it);
return *this;
}
array result = array1 + array2;
В общем над проблемой бьюсь вторые суткиДело в отправке простого multipart/form-data запроса на ssl сервер
Линейный массив A содержит 2*N элементов, значения которых задаются по следующей формуле a[i]:=10*sin(N+i*i)Элементы массива нумеруются с единицы
Допустим у меня есть std::string strХочу ввести с клавиатуры текст, который скопируется в str