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

Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность - C++

Восстановить пароль Регистрация
 
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
17.10.2012, 11:08     Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность #1
Помогите, пожалуйста, написать программу, которая находила бы номер элемента из массива А, с которого массив В начинается как подпоследовательность(массивы ввести с клавиатуры):
к примеру
А {1 3 5 35 23 4 0}
B {5 35 23 }
в этом случае программа должна вывести 2, если подпоследовательности нет, то программаа должна вывести нет вхождений
Спасибо

 Комментарий модератора 
Тема не может называться "подпоследовательность"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 11:08     Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность
Посмотрите здесь:

C++ Найти номер элемента, значение которого близко к среднему значению массива
Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность C++
C++ Найти номер элемента, с которого начинается самая длинная последовательность единиц
Массив: Как найти номер последнего отрицательного элемента? C++
C++ Для каждого столбца массива найти номер последнего нечетного элемента и записать данные в новый массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
17.10.2012, 13:30     Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность #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
#include <iostream>
#include <algorithm>
#include <array>
#include <iterator>
using namespace std;
 
int main()
{
    const int sizeOfa = 8;
    const int sizeOfb = 3;
    array<int, sizeOfa> a = {1,3,4,5,35,23,4,0};
    array<int, sizeOfb> b = {5,35,23};
    auto pos = find(a.begin(), a.end(), b[0]);
    if (pos != a.end())
    {
        if (equal(pos, pos+sizeOfb, b.begin()))
            cout<<"Yes: "<<distance(a.begin(), pos)<<endl;
        else
            cout<<"No\n";
    }
    else
        cout<<"No\n";
    system("pause");
    return 0;
}
panicwassano
17.10.2012, 13:35
  #3

Не по теме:

задание похоже на поиск подстроки в строке

Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
17.10.2012, 13:40  [ТС]     Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность #4
Цитата Сообщение от yuron_477 Посмотреть сообщение
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>
#include <algorithm>
#include <array>
#include <iterator>
using namespace std;
 
int main()
{
    const int sizeOfa = 8;
    const int sizeOfb = 3;
    array<int, sizeOfa> a = {1,3,4,5,35,23,4,0};
    array<int, sizeOfb> b = {5,35,23};
    auto pos = find(a.begin(), a.end(), b[0]);
    if (pos != a.end())
    {
        if (equal(pos, pos+sizeOfb, b.begin()))
            cout<<"Yes: "<<distance(a.begin(), pos)<<endl;
        else
            cout<<"No\n";
    }
    else
        cout<<"No\n";
    system("pause");
    return 0;
}
спсибо большое!...а можно эту задачу более тривиальным языком решить?
например как эту программу, которая должна находить первое вхождение второго массива в первый, т.е. дан массив А: (1 3 5 7 3 5 20 9)
и массив В: ( 4 2 5)
в итоге программа должна вывести в ответе "i=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
31
32
33
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
    int const N=8;
    int a[N];
    for (int i=0; i<N; i++)
    cin>>a[i];
    int const M=3;
    int b[M];
    for (int j=0; j<M; j++)
    cin>>b[j];
    int k=0;
        for (int i=0; i<N; i++)
{
        for (int j=0; j<M; j++)
        if (a[i]=b[j])
        { k=i+1; break;
}
 
 if(k)
  break;
}
if (k!=0)
    cout<<k-1<<endl;
else
    cout<<" net vhozdeniy"<<endl;
 
system ("pause");   
return 0;
}
Yandex
Объявления
17.10.2012, 13:40     Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность
Ответ Создать тему
Опции темы

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