С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
8 / 8 / 6
Регистрация: 21.04.2018
Сообщений: 142

Запись чисел первых двух массивов в третий без повторений

26.05.2018, 13:41. Показов 1732. Ответов 10

Студворк — интернет-сервис помощи студентам
Доброго дня суток всем. В данной проге я не знаю, как учесть условие повтора (если он есть, например, заменить повторяющееся число на ноль). Просьба не ругать меня за то, что я не знаю некоторых вещей, наподобе #include<vector> и т.д.: я новенький в С++.

Задача: Записать числа первых двух массивов в третий без повторений.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<iostream>
#include<ctime>
#define size 5
using namespace std;
 
void main()
{
    srand(time(0));
    int arr1[5]{ 0 };
    int arr2[5]{ 0 };
    int arr3[10]{ 0 };
    int j = 0;
 
    for (int i = 0; i < 5; i++)
    {
        arr1[i] = rand() % 10;
        cout << "arr1[" << i << "] = " << arr1[i] << endl;
    }
    cout << endl;
 
    for (int i = 0; i < 5; i++)
    {
        arr2[i] = rand() % 10;
        cout << "arr2[" << i << "] = " << arr2[i] << endl;
    }
    cout << endl;
 
    for (int i = 0; i < 10; i++)
    {
        if (i % 2 == 0)
        {
            arr3[i] = arr1[j];
        }
        else if (i % 2 != 0)
        {
            arr3[i] = arr2[j];
        }
        else
            j++;
    }
 
    for (int i = 0; i < 10; i++)
    {
        cout << "arr3[" << i << "] = " << arr3[i] << endl;
    }
    system("pause");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2018, 13:41
Ответы с готовыми решениями:

Переписать в третий массив общие элементы первых двух массивов без повторений
Даны 2 массива размерности M и N соответственно. Необходимо переписать в третий массив общие элементы первых двух массивов без...

Необходимо переписать в третий массив общие элементы первых двух массивов без повторений
не выводит 3-й массив..(((( В чем трудность не понимаю.... #include&lt;iostream&gt; #include&lt;ctime&gt; using namespace std; void...

Объединение двух массивов в третий (без добавления дублирующихся элементов)
Итак, есть нужно объеденить 2 массива в 3й так что бы элементы которые повторяются в обоих массивах не добавлялись, т.е. a={1,2,3}...

10
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.05.2018, 13:53
N0VY, не работает или что?
0
8 / 8 / 6
Регистрация: 21.04.2018
Сообщений: 142
26.05.2018, 14:14  [ТС]
Работает, только я не знаю, как учесть условие, если числа повторяются (нужно записать без повтора). Условия читаем
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.05.2018, 14:36
N0VY, как то так, по тестируй я прогнал пару раз вроде работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <cstddef>
#include <iostream>
#include <random>
#include <ctime>
 
template<std::size_t s>
bool Check(int (&a)[s], int i)
{
    for (auto& r : a)
        if (r == i) return true;
 
    return false;
}
 
int main()
{
    constexpr std::size_t s1 = 5;
    constexpr std::size_t s2 = 10;
 
    int a1[s1];
    int a2[s1];
    int a3[s2];
 
    static std::default_random_engine rand(std::time(nullptr) );
    std::uniform_int_distribution<> uid(-10, 10);
 
    for (std::size_t i = 0; i < s1; ++i)
    {
        a1[i] = uid(rand);
        a2[i] = uid(rand);
    }
 
    for (std::size_t i = 0, j = 0; i < s1; ++i)
    {
        if (!Check(a3, a1[i] ) ) a3[j++] = a1[i];
        else a3[j++] = 0;
 
        if (!Check(a3, a2[i] ) ) a3[j++] = a2[i];
        else a3[j++] = 0;
    }
 
    return 0;
}
Добавлено через 6 минут
Цитата Сообщение от N0VY Посмотреть сообщение
я новенький в С++
отладчиком же можешь пользоваться, а то результата работы программы не увидишь.
0
8 / 8 / 6
Регистрация: 21.04.2018
Сообщений: 142
26.05.2018, 14:45  [ТС]
Кхэм... Слишком сложно для новичков. Таких, как я. Отладчиком пользоваться я не умею (и такое бывает, да, да) и я знаю только библиотеки iostream, ctime, iomanip и Windows.h. Про остальные я и поныне не знаю, поэтому, желательно как-то попроще написать. И я просил только условие, не это.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.05.2018, 14:51
Цитата Сообщение от N0VY Посмотреть сообщение
И я просил только условие, не это.
вот условие
C++
1
2
3
4
5
6
7
8
for (std::size_t i = 0, j = 0; i < s1; ++i)
{
      if (!Check(a3, a1[i] ) ) a3[j++] = a1[i];
      else a3[j++] = 0;
 
      if (!Check(a3, a2[i] ) ) a3[j++] = a2[i];
      else a3[j++] = 0;
}
не обязательно понимать весь код, принципы главное уяснить

Добавлено через 1 минуту
суть, то что создаем функцию Check для проверки третьего массива на повторение

Добавлено через 2 минуты
кстати вот полезная ссылка Как пользоваться отладчиком (в Visual Studio)
0
8 / 8 / 6
Регистрация: 21.04.2018
Сообщений: 142
26.05.2018, 15:06  [ТС]
Спасибо, понятно

Добавлено через 4 минуты
Кстати говоря: что значит это? Я понимаю, что это указатели, но я их не проходил: позже пройдём. Можно как-то без них обойтись?

Цитата Сообщение от _stanislav Посмотреть сообщение
(&a)[s]
Цитата Сообщение от _stanislav Посмотреть сообщение
(auto& r : a)
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.05.2018, 15:17
N0VY,
C++
1
2
3
4
5
6
7
bool Check(int a[], std::size_t s, int i)
{
    for (std::size_t j = 0; j < s; ++j)
        if (a[j] == i) return true;
 
    return false;
}
Добавлено через 2 минуты
Цитата Сообщение от N0VY Посмотреть сообщение
Кстати говоря: что значит это?
извини, долго объяснять, со временем дойдешь сам до этого, начинающим это не нужно.
1
8 / 8 / 6
Регистрация: 21.04.2018
Сообщений: 142
26.05.2018, 15:18  [ТС]
Спасибо!
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
03.07.2018, 20:36
N0VY, здравствуйте! Немного исправил ваш код. Заменил повторяющиеся числа на 999. Надеюсь, что в своем собственном коде вам разобраться будет проще. Идея такова: храним числа в множестве x (множество не допускает повторов). Если число не из множества - добавляем его в массив, иначе присваиваем 999. Все просто:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream> 
#include <ctime> 
#include <set> 
#include <algorithm>
 
//#define size 5
 
    using namespace std;
 
int main() {
    srand(time(0));
    int arr1[5] { 0 };
    int arr2[5] { 0 };
    int arr3[10] { 0 };
    int j = 0;
    for (int i = 0; i < 5; i++) {
        arr1[i] = rand() % 10;
        cout << "arr1[" << i << "] = " << arr1[i] << endl;
    }
    cout << endl;
    for (int i = 0; i < 5; i++) {
        arr2[i] = rand() % 10;
        cout << "arr2[" << i << "] = " << arr2[i] << endl;
    }
    cout << endl;
    set<int> x;
    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            if (x.find(arr1[j]) == x.end()) {
                x.insert(arr1[j]);
                arr3[i] = arr1[j];
            } else arr3[i] = 999;
        } else {
            if (x.find(arr2[j]) == x.end()) {
                x.insert(arr2[j]);
                arr3[i] = arr2[j];
            } else arr3[i] = 999;
            j++;
        }
    }
    for (int i = 0; i < 10; i++) {
        cout << "arr3[" << i << "] = " << arr3[i] << endl;
    }
    system("pause");
    return 0;
}
0
8 / 8 / 6
Регистрация: 21.04.2018
Сообщений: 142
04.07.2018, 14:15  [ТС]
Я думал про эту тему все забыли, честно говоря Спасибо за ответ, но такая выходит канитель: я не проходил библиотеки set и algorithm. Так уж вышло. Поэтому, придётся Вам потрудиться и сделать всё, используя iostream, ctime, для необходимости, iomanip и conio.h. А так я пытался организовать это дело с заменой на 999, тип того.

Добавлено через 1 минуту
Кстати, можно ли сделать это без i % 2 == 0?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.07.2018, 14:15
Помогаю со студенческими работами здесь

Cоздать массив минимально возможного размера, поместив в него общие элементы двух исходных массивов без повторений
Добрый день ,я немного запутался в решении. Помогите, если кто понимает, заранее благодарен. Вот задача Даны два массива: А и B (M и N...

Из двух массивов чисел образовать третий, и сортировать числа в порядке невозрастания
Всем привет! Помогите с решением задачи: заданы две последовательности вещественных чисел, в которых числа идут в порядке невозрастания....

Из двух массивов сформировать третий
помогите решить задачу, плиз!!!! из массивов A и B сформировать массив C так, чтобы элементы массива располагались следующим образом:...

Объединение двух массивов в третий
Как это можно сделать?

Определить в последовательности число соседств двух чисел с разным знаком (только с циклами, без массивов)
Здраствуйте! Дано натуральное число n, действительные числа q1,q2,..,qn . В последовательности q1,q2,..,qn определить число соседств двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru