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

Даны две последовательности. Верно ли, что все члены второй последовательности входят в первую?

22.10.2014, 21:03. Показов 4687. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны две последовательности a^1,a^2,...,a^n, b^1,b^2,...,b^n (m<n). В каждой из них члены различны. Верно ли, что все члены второй последовательности входят в первую последовательность?

Помогите пожалуйста, люди добрые, нужно сделать через одномерный массивы.. Заранее большое спасибо!

Добавлено через 4 часа 9 минут
кто нибудь поможет????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 21:03
Ответы с готовыми решениями:

Даны две последовательности.Верно ли, что все числа второй последовательности входят в первую.
Даны две последовательности {a}_{1},{a}_{2},...,{a}_{n} и {b}_{1},{b}_{2},...,{b}_{m} (m&lt;n). В...

Верно, ли что все члены второй последовательности входят в первую последовательность
Даны две последовательности a1, a2, …an и b1, b2, …bm. (n&gt;m). В каждой из них члены различны....

Определить, верно ли, что все члены второй последовательности входят в первую последовательность
Даны две последовательности a1, a2, ..., an и b1, b2, ..., bm (m &lt; n). В каждой из них члены...

Определить, верно ли, что все члены второй последовательности входят в первую последовательность
даны две последовательности a1, a2,...,an и b1, b2,...,bm (m&lt;n). в каждой из них члены различны....

18
4 / 4 / 2
Регистрация: 01.04.2014
Сообщений: 119
22.10.2014, 21:05 2
romi41, задание не очень понятно.
0
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 35
22.10.2014, 21:10  [ТС] 3
Surfaker , возможно опечатка... Даны две последовательности a^1,a^2,...,a^m, b^1,b^2,...,b^n (m<n). В каждой из них члены различны. Верно ли, что все члены второй последовательности входят в первую последовательность?
0
4 / 4 / 2
Регистрация: 01.04.2014
Сообщений: 119
22.10.2014, 21:15 4
romi41, я просто не понимаю как сделать это задание)) это же не программирование а теория мнгожеств
0
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 35
22.10.2014, 21:18  [ТС] 5
Surfaker, Вот такие лабы по программированию в с++ нам задают)
0
4 / 4 / 2
Регистрация: 01.04.2014
Сообщений: 119
22.10.2014, 21:21 6
romi41, странно.
0
Модератор
Эксперт по электронике
8843 / 6623 / 902
Регистрация: 14.02.2011
Сообщений: 23,311
22.10.2014, 21:25 7
Цитата Сообщение от Surfaker Посмотреть сообщение
romi41, я просто не понимаю как сделать это задание))
два цикла
внешний перебирает вторую последовательность
внутренний проверяет на вхождение в первую
если хоть одно число не совпало то выходим из циклов с флагом false, нет смысла проверять дальше
и для начала проверить размер, если вторая больше, явно она не может влезть в первую

Добавлено через 2 минуты
Цитата Сообщение от romi41 Посмотреть сообщение
(m<n).
Цитата Сообщение от romi41 Посмотреть сообщение
Верно ли, что все члены второй последовательности входят в первую последовательность?
неверно
первая меньше чем вторая, она туда не влезет
может знак попутан?
0
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 35
22.10.2014, 21:25  [ТС] 8
может напишешь код программы? чтоб понятнее стало
0
Модератор
Эксперт по электронике
8843 / 6623 / 902
Регистрация: 14.02.2011
Сообщений: 23,311
22.10.2014, 21:32 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool func(int *a, int *b, int m,int n)
{
 int i,j;
if(n>m)
  return false;
for(i=0;i<n;i++)
 {
  for(j=0;j<m;j++)
  {
     if(a[j]==b[i])
       break;
   }
  if(j==m)
    return false;
}
return true;
}
1
Вездепух
Эксперт CЭксперт С++
11087 / 6054 / 1651
Регистрация: 18.10.2014
Сообщений: 15,183
22.10.2014, 21:32 10
Цитата Сообщение от Surfaker Посмотреть сообщение
romi41, я просто не понимаю как сделать это задание)) это же не программирование а теория мнгожеств
Да что вы говорите? А когда пишут программы для управления воздушным движением, то это тоже уже "не программирование", а Аэрофлот?

Вот не самое лучшее решение, которое к тому же модифицирует (сортирует) входные массивы, но тем не менее не тупой квадратичный перебор всех возможных пар:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <algorithm>
#include <iostream>
 
using namespace std;
 
int main() 
{
  int A[] = { 1, 2, 3, 4, 5 };
  int B[] = { 4, 5, 6 };
  const size_t NA = sizeof A / sizeof *A;
  const size_t NB = sizeof B / sizeof *B;
 
  sort(A, A + NA);
  sort(B, B + NB);
 
  int C[NB];
  cout << (set_difference(B, B + NB, A, A + NA, C) == C ? "входят" : "не входят") << endl;
}
1
Модератор
Эксперт по электронике
8843 / 6623 / 902
Регистрация: 14.02.2011
Сообщений: 23,311
22.10.2014, 21:36 11
TheCalligrapher,
про сортировку я тоже думал, но


как поведет себя программа с такими массивами?
1,2,3,4,5,6
2,4,6
0
Вездепух
Эксперт CЭксперт С++
11087 / 6054 / 1651
Регистрация: 18.10.2014
Сообщений: 15,183
22.10.2014, 21:41 12
Цитата Сообщение от ValeryS Посмотреть сообщение
как поведет себя программа с такими массивами?
1,2,3,4,5,6
2,4,6
Я не вижу никакой проблемы с такими массивами. Что именно имеется в виду?

Проблемы могут возникнуть скорее с повторяющимися элементами, если они возможны. Но это вопрос к автору. Например в случае

A: 1, 2, 3
B: 3, 3

считается ли что все элементы B присутствуют в A? Или считается что одна тройка присутствует, а другая - нет?
0
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 35
22.10.2014, 21:44  [ТС] 13
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 <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
 
int main()
{
    int *a,*b,n,m;
    bool Z;
    cout<<"Vvedite n i m:\n";
    cin>>n>>m;
    a=new int[n];
    b=new int[m];
    cout<<"Vvedite N:\n";
    {for(int i=0;i<n;i++)
    cin>>a[i];}
    cout<<"Vvedite M:\n";
for(int i=0;i<m;i++)
    cin>>b[i];
for(int j=0;j<m;j++)
    {
for(int i=0;i<m;i++)
{if(b[j]==a[i])
    Z=1;
}
if(Z==0)
 cout<<"Net ";
 else
    cout<<"Da";
}
 
return 0;
   }

поправьте если что то не так написал
0
Модератор
Эксперт по электронике
8843 / 6623 / 902
Регистрация: 14.02.2011
Сообщений: 23,311
22.10.2014, 21:53 14
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Я не вижу никакой проблемы с такими массивами. Что именно имеется в виду?
тупое сравнение не подойдет,индексы элементов не совпадают
а как ведет себя
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
set_difference
я не знаю
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Проблемы могут возникнуть скорее с повторяющимися элементами, если они возможны.
по условиям задачи нет
Цитата Сообщение от romi41 Посмотреть сообщение
В каждой из них члены различны.
хотя можно и прочитать что различны по отношению к другому массиву

Добавлено через 1 минуту
Цитата Сообщение от romi41 Посмотреть сообщение
for(int j=0;j<m;j++)
* * {
for(int i=0;i<m;i++)
у тебя оба цикла работают по размеру первого массива

Добавлено через 3 минуты
1 2 3
1 4
Цитата Сообщение от romi41 Посмотреть сообщение
if(b[j]==a[i])
* * Z=1;
}
первый элемент совпал Z=1
остальные нет
но Z уже не меняется, вывод "Да", хотя по сути нет
думаешь я зря переменные цикла внешними объявил?
0
4 / 4 / 2
Регистрация: 01.04.2014
Сообщений: 119
22.10.2014, 21:59 15
а, под последовательностью понимался простой массив.......
0
Вездепух
Эксперт CЭксперт С++
11087 / 6054 / 1651
Регистрация: 18.10.2014
Сообщений: 15,183
23.10.2014, 01:23 16
Цитата Сообщение от ValeryS Посмотреть сообщение
тупое сравнение не подойдет,индексы элементов не совпадают
Ну так я использую 'set_difference', а это совсем не "тупое сравнение".

Добавлено через 3 часа 10 минут
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вот не самое лучшее решение...
Можно еще предложить вот такой банальный вариант

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <functional>
#include <algorithm>
#include <unordered_set>
 
using namespace std;
using namespace std::placeholders;
 
int main() 
{
  int A[] = { 1, 2, 3, 4, 5 };
  int B[] = { 4, 5, 6 };
  const size_t NA = sizeof A / sizeof *A;
  const size_t NB = sizeof B / sizeof *B;
 
  typedef unordered_set<int> Set;
  Set s(B, B + NB);
 
  Set::size_type (Set::*erase)(const Set::key_type&) = &Set::erase;
  for_each(A, A + NA, bind(erase, &s, _1));
 
  cout << (s.empty() ? "входят" : "не входят") << endl;
}
0
Эксперт С++
3223 / 1750 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
23.10.2014, 07:24 17
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
#include <algorithm>
#include <iostream>
#include <set>
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        std::locale::global(std::locale(""));
        int A[] = { 1, 2, 3, 4, 5 };
        int B[] = { 4, 5, 5 + rand() % 2 };
        const size_t NA = sizeof A / sizeof *A;
        const size_t NB = sizeof B / sizeof *B;
        std::set<int>   s( B, B + NB );
        std::cout   <<  (
                            std::includes
                                (
                                    A,
                                    A + NA,
                                    s.begin     (),
                                    s.end       ()
                                )
                                ?   "входят"
                                :   "не входят"
                        )
                    << std::endl;
        system("pause");
    }//for
}
0
Вездепух
Эксперт CЭксперт С++
11087 / 6054 / 1651
Регистрация: 18.10.2014
Сообщений: 15,183
23.10.2014, 07:50 18
Логично. Я искал 'std::includes', но как-то прошляпил её в списке.
0
4 / 4 / 2
Регистрация: 01.04.2014
Сообщений: 119
23.10.2014, 08:55 19
TheCalligrapher, ну я не понял что последовательность = массив.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2014, 08:55
Помогаю со студенческими работами здесь

Верно ли, что все числа второй последовательности входят в первую
Даны две последовательности a1,a2..an и b1,b2..bm (m&lt;n). В каждой из них числа различны. Верно ли,...

Верно ли, что все числа второй последовательности входят в первую
Даны две последовательности и (m&lt;n). В каждой из них числа различны. Верно ли, что все числа...

Массив. Определить, верно ли, что все числа второй последовательности входят в первую.
Даны две последовательности a1,a2..an и b1,b2..bm (m&lt;n). В каждой из них числа различны. Верно...

Верно ли что все члены последовательности a входят в последовательность b
Даны натуральное число n,целые числа a,...,a,b,...,b.Среди a,...,a нет повторяющихся чисел,нет их и...


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

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

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