Форум программистов, компьютерный форум CyberForum.ru

Выяснить, имеются ли элементы второго массива в первом - C++

Восстановить пароль Регистрация
 
kimsgy
0 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 2
25.10.2013, 20:06     Выяснить, имеются ли элементы второго массива в первом #1
На русском:
Даны два одномерных массива размерами n и k соответственно. Выяснить, имеются ли элементы второго массива в первом. Если имеются - вывести индекс (по первому), иначе вывести -1. Если какой-либо элемент второго массива встречается в первом несколько раз, вывести индекс самого первого.
Пример:
ВВОД:
5 4
1 4 5 8 9
5 6 1 9
ВЫВОД:
3
-1
1
5
На английском:
Your task is to check if the elements from the second array can be found in first array.
If element can be found ouput index of the element,if NOT output "-1".
If element can be found multiple times output index of the first position..
Input:
First line contains n and k (0 < n, k < 10001).
Second line contains n elements from first array.
Third line contains k elements from second array.

Output:
The index of the elements (starting from 1).
If element can not be found output -1.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2013, 20:06     Выяснить, имеются ли элементы второго массива в первом
Посмотрите здесь:

Выяснить, имеются ли среди чисел а1, ..., аn совпадающие C++
выяснить имеются ли в матрице ненулевые элементы, если имеются, то указать индексы всех ненулевъх элементов C++
Выяснить, имеются ли среди чисел совпадающие C++
C++ Выяснить образуют ли элементы массива убывающую последовательность
C++ Выяснить, имеются ли в матрице ненулевые элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
25.10.2013, 20:24     Выяснить, имеются ли элементы второго массива в первом #2
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 <iostream>
 
using namespace std;
 
int main()
{
    int n, k;
    cin >> n >> k;
    int *a = new int[n];
    int *b = new int[k];
    for (int i = 0; i < n; i++)
        cin >> a[i];
    for (int i = 0; i < k; i++)
        cin >> b[i];
 
    for (int i = 0; i < k; i++)
    {
        bool f = false;
        for (int j = 0; j < n; j++)
            if (b[i] == a[j])
            {
                f = true;
                cout << j+1 << endl;
                break;
            }
        if (!f) cout << -1 << endl;
    }
    system("pause");
    return 0;
}
kimsgy
0 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 2
25.10.2013, 20:28  [ТС]     Выяснить, имеются ли элементы второго массива в первом #3
Написал код для нахождения элементов, которые точно встречаются и там, и там (выводятся индексы). Помогите дописать, пожалуйста!
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
#include <iostream>
using namespace std;
int main()
{
    int n, k, current_value;
    int a[100], b[100], c[100];
    cin>>n>>k;
    for (int i=0; i<n; i++)
        cin>>a[i];
    for (int j=0; j<k; j++)
        cin>>b[j];
    for (int j=0; j<k; j++)
    {
        current_value=b[j];
        for (int i=0; i<n; i++)
        {
            if (a[i]==current_value)
                c[j]=i+1;
        }
    }
    for (int j=0; j<k; j++)
        cout<<c[j]<<" ";
    system("pause");
    return 0;
}
Добавлено через 59 секунд
TyLinka, Спасибо!

Добавлено через 2 минуты
TyLinka, блин, а без указателей можно это сделать? Пока не знаю как ими пользоватьься...
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
26.10.2013, 07:47     Выяснить, имеются ли элементы второго массива в первом #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Не очень, если честно поняла, что вы хотите, но чтобы выводились все индексы, где встречается данный элемент, то можно так:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int n, k, current_value;
    int a[100], b[100];
    cin >> n >> k;
    for (int i = 0; i<n; i++)
        cin >> a[i];
    for (int j = 0; j<k; j++)
        cin >> b[j];
    for (int j = 0; j<k; j++)
    {
        current_value = b[j];
        for (int i = 0; i<n; i++)
        {
            if (a[i] == current_value)
                cout << i + 1 << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
Первый вариант был с указателями для того, чтобы создать динамический массив. Это используется если неизвестно, сколько элементов. В вашей программе вы сделали статический массив, можно и так.
Yandex
Объявления
26.10.2013, 07:47     Выяснить, имеются ли элементы второго массива в первом
Ответ Создать тему
Опции темы

Текущее время: 13:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru