0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 18
1

Сравнить соответствующие элементы двух массивов и вывести на экран номера совпавших элементов

30.05.2017, 12:24. Показов 2106. Ответов 11
Метки нет (Все метки)

Заданы два массива целых чисел одинаковой размерности.Сравнить их соответствующие элементы и вывести на экран номера совпавших элементов
Если кратко то рандомом надо задать 2 массива и вывести ниже одинаковые элементы ( не их номера в массиве ).
Пожалуйста сделайте код собъяснением и простой для новичка.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2017, 12:24
Ответы с готовыми решениями:

Заданы два массива. Сравнить соответствующие элементы массивов и вывести на экран массив, состоящий из совпавших элементов.
Помогите пожалуйста решить пару задач :3 Заданы два массива целых чисел одинаковой размерности....

Вывести номера совпавших элементов двух массивов
Заданы два массива целых чисел одинаковой размерности. Сравнить их соответствующие элементы и...

Сравнить два массива и запомнить номер первых двух совпавших элементов
нужно сравнить два массива,например 1:23,19,26,18,22,11 и запомнить номер первых двух совпавших...

Сравнить соответствующие элементы каждой пары массивов
Заданы пары массивов одинаковой размерности: два массива целых чисел и два массива вещественных...

11
1503 / 967 / 811
Регистрация: 30.04.2016
Сообщений: 3,334
30.05.2017, 15:34 2
Artem Fedotov, вот код, если я все правильно понял:

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
48
49
#include <iostream>
#include <cstdlib>
#include <locale>
 
using namespace std;
 
int main()
{
    srand((unsigned)time(NULL)); //Чтобы случайные числа не повторялись при новом запуске
    int N, k;
    cout << "Введите общую размерность:" << endl;
    cout << "N = ";
    cin >> N; //Вводим размерность обоих массивов
    int* A = new int[N]; //Объявляем первый массив динамически
    int* B = new int[N]; //Объявляем второй массив динамически
    for (int i = 0; i < N; i++)
    {
        A[i] = rand() % 5; //Генерируем первый случайный массив
        B[i] = rand() % 5; //Генерируем второй случайный массив
    }
    cout << "Первый массив:" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << A[i] << " "; //Выводим элементы первого массива
    }
    cout << endl;
    cout << "Второй массив:" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << B[i] << " "; //Выводим элементы второго массива
    }
    cout << endl;
    cout << "Искомые элементы:" << endl;
    k = 0;
    for (int i = 0; i < N; i++)
    {
        if (A[i] == B[i])
        {
            k++;
            cout << A[i] << " "; //Выводим одинаковые элементы (на одинаковых позициях)
        }
    }
    if (!(k))
        cout << "Совпадающих элементов не найдено!" << endl;
    delete [] A; //Удаляем из памяти первый массив
    delete [] B; //Удаляем из памяти второй массив
    cin.get();
    return 0;
}
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
30.05.2017, 17:01 3
Fixer_84, я думаю, что надо вывести просто одинаковые элементы, т.е. входящие в оба массива, а не расположенные на одинаковых позициях.
0
1503 / 967 / 811
Регистрация: 30.04.2016
Сообщений: 3,334
30.05.2017, 17:25 4
мановар, Я тоже думал об этом, однако это противоречит этому:
Цитата Сообщение от Artem Fedotov Посмотреть сообщение
Заданы два массива целых чисел одинаковой размерности.Сравнить их соответствующие элементы и вывести на экран номера совпавших элементов
Добавлено через 1 минуту
мановар, Вообщем, буду ждать, что скажет автор темы. А так, конечно, переделать программу не сложно
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
30.05.2017, 17:33 5
Fixer_84, а что там переделывать, с STL решение в 3 строчки, но и это, судя по предыдущим темам, уже черезчур.
0
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 18
30.05.2017, 17:51  [ТС] 6
то что он сказал верно было
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
30.05.2017, 17:59 7
Цитата Сообщение от Artem Fedotov Посмотреть сообщение
то что он сказал верно было
Кто из них?
0
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 18
30.05.2017, 18:01  [ТС] 8
вы про то что вывести надо " я думаю, что надо вывести просто одинаковые элементы, т.е. входящие в оба массива, а не расположенные на одинаковых позициях".
0
1503 / 967 / 811
Регистрация: 30.04.2016
Сообщений: 3,334
30.05.2017, 18:17 9
Artem Fedotov, Извините. Так до конца и не понял, что нужно сделать. Просто скажите, если нужно переделать для разных позиций.
0
0 / 0 / 0
Регистрация: 12.10.2016
Сообщений: 86
30.05.2017, 19:07 10
Надо задать 2 массива сначала 1 потом 2 и вывести потом одинаковые элементы которые и в том и том
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
30.05.2017, 19:26 11
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
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <iterator>
#include <random>
#include <algorithm>
 
int main()
{
    int n;
    std::cout << " Input n = "; std::cin >> n;
    std::vector <int> v(n);
    std::vector <int> v1(n);
 
    std::mt19937 gen{ std::random_device()() };
    std::uniform_int_distribution <> dist(-15, 15);
 
    std::generate(v.begin(), v.end(), [&dist, &gen] {return dist(gen); });
    std::generate(v1.begin(), v1.end(), [&dist, &gen] {return dist(gen); });
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, "   "));
    std::cout << std::endl;
    std::copy(v1.begin(), v1.end(), std::ostream_iterator<int>(std::cout, "   "));
    std::cout << std::endl;
 
    std::sort(v.begin(), v.end());
    std::sort(v1.begin(), v1.end());
    std::set_intersection(v.begin(), v.end(),v1.begin(), v1.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    system ("pause");
}
Единственный недостаток, если нет одинаковых, ничего не выводит, но он легко исправляется.
0
1503 / 967 / 811
Регистрация: 30.04.2016
Сообщений: 3,334
30.05.2017, 20:24 12
Artem Fedotov, вот переделанная программа. Использовал для решения математическую теорию множеств.

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
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <cstdlib>
#include <locale>
#include <algorithm>
#include <iterator>
#include <set>
#include <windows.h> //Шрифт консоли - Lucida Console
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand((unsigned)time(NULL)); //Чтобы случайные числа не повторялись при новом запуске
    int N, k;
    set<int> X;
    set<int> Y;
    set<int> Z;
    cout << "Введите общую размерность:" << endl;
    cout << "N = ";
    cin >> N; //Вводим размерность обоих массивов
    int* A = new int[N]; //Объявляем первый массив динамически
    int* B = new int[N]; //Объявляем второй массив динамически
    for (int i = 0; i < N; i++)
    {
        A[i] = rand() % 10; //Генерируем первый случайный массив
        B[i] = rand() % 10; //Генерируем второй случайный массив
    }
    cout << "Первый массив:" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << A[i] << " "; //Выводим элементы первого массива
        X.insert(A[i]); //Помещаем элементы первого массива в множество X
    }
    cout << endl;
    cout << "Второй массив:" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << B[i] << " "; //Выводим элементы второго массива
        Y.insert(B[i]); //Помещаем элементы второго массива в множество Y
    }
    cout << endl;
    set_intersection(
        X.begin(), X.end(), Y.begin(), Y.end(), inserter(Z, Z.begin()));
    if (Z.empty()) //Если множество пусто, выводим сообщение
        cout << "Совпадающих элементов не найдено!" << endl;
    else
    {
        cout << "Общие элементы обоих массивов:" << endl;
        copy(Z.begin(), Z.end(), ostream_iterator<int>(std::cout, " ")); //Выводим искомые элементы
        cout << endl;
    }
    delete [] A; //Удаляем из памяти первый массив
    delete [] B; //Удаляем из памяти второй массив
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2017, 20:24
Помогаю со студенческими работами здесь

Вывести сумму номеров двух крупнейших элементов, а в массиве соответствующие элементы заменить 0
Вывести сумму номеров двух крупнейших элементов, а в массиве соответствующие элементы заменить 0.

Вывести сумму номеров двух крупнейших элементов, а в массиве соответствующие элементы заменить 0
Вывести сумму номеров двух крупнейших элементов, а в массиве соответствующие элементы заменить 0.

Вывести сумму номеров двух крупнейших элементов, а в массиве соответствующие элементы заменить 0
Вывести сумму номеров двух крупнейших элементов, а в массиве соответствующие элементы заменить 0.

Если какие-то элементы массивов одинаковы, то вывести номера этих элементов
Здравствуйте! У меня такая задача, даны две массивы, если какие то элементы этих массивов одинаковы...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru