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

Напечатать различные числа, встречающиеся в обеих последовательностях - C++

Восстановить пароль Регистрация
 
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
22.04.2012, 11:37     Напечатать различные числа, встречающиеся в обеих последовательностях #1
Помогите составить программу:
Даны две последовательности из целых чисел: a1, ..., an; b1, ..., bn. Напечатать различные числа, встречающиеся в обеих последовательностях.
Тема: Одномерные массивы

Вот мой вариант, но здесь печатаются не различные числа.
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
#include <iostream>
using namespace std;
int main()
{
    setlocale (LC_ALL, "rus");
    int a[100], b[100], n, m, i, j;
    cout << "Введите количество чисел 1-й последовательности\n";
    cin >> n;
    cout << "Введите количество чисел 2-й последовательности\n";
    cin >> m;
    cout << "Введите числа 1-й последовательности\n";
    for (i=0; i<n; i++)
    {
        cin >> a[i];
    }
    cout << "Введите числа 2-й последовательности\n";
    for (j=0; j<m; j++)
    {
        cin >> b[j];
    }
    cout << "Числа, встречающиеся в обеих последовательностях:\n";
    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
            if (a[i]==b[j])
                        cout << a[i] << " ";
        system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 11:37     Напечатать различные числа, встречающиеся в обеих последовательностях
Посмотрите здесь:

Если в обеих векторах есть элементы, кратные 4, то сформировать вектор С из положительных элементов обеих векторов C++
Напечатать в алфавитном порядке все различные русские буквы , входящие в введенный текст C++
C++ Одинаковые числа в двух последовательностях
C++ Напечатать все различные слова, указав для каждого из них число его вхождений в последовательность
Дано предложение. Напечатать все различные слова C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
22.04.2012, 12:00     Напечатать различные числа, встречающиеся в обеих последовательностях #2
C++
1
2
3
4
for (i=0; i<n; i++)
        for (j=i + 1; j<m; j++)
            if (a[i]==b[j])
                        cout << a[i] << " ";
ADD: Хотя нет, вроде не то, поспешил.

Добавлено через 5 минут
Различные имеется ввиду, что они входят всего один раз в каждую последовательность?
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
22.04.2012, 12:01  [ТС]     Напечатать различные числа, встречающиеся в обеих последовательностях #3
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
2
3
4
for (i=0; i<n; i++)
        for (j=i + 1; j<m; j++)
            if (a[i]==b[j])
                        cout << a[i] << " ";
ADD: Хотя нет, вроде не то, поспешил.

Добавлено через 5 минут
Различные имеется ввиду, что они входят всего один раз в каждую последовательность?
Да, именно так.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
22.04.2012, 12:52     Напечатать различные числа, встречающиеся в обеих последовательностях #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
27
28
29
30
31
bool flag;
   //......
   for ( int i = 0; i < an; i++ ) {
      flag = true;
      
      for ( int j = 0; j < an; j++ )
         if ( a[ i ] == a[ j ] && i != j )
            flag = false;
            
      if ( flag ) {
         flag = false;
         
         for ( int j = 0; j < bn; j++ )
            if ( a[ i ] == b[ j ] ) {
               flag = true;
               
               for ( int k = 0; k < bn; k++ )
                  if ( b[ k ] == b[ j ] && k != j ) {
                     flag = false;
                     break;
                  }
               
               break;
            }
      }
      
      if ( flag )
         std::cout << a[ i ] << ' ';
   }
   
   std::cout << std::endl;
Добавлено через 17 минут
Единственно упустил, вот тут
C++
1
2
3
for ( int j = 0; j < an; j++ )
         if ( a[ i ] == a[ j ] && i != j )
            flag = false;
можно добавить break, чтоб он не искал дальше, если вдруг найдет хоть одно равное число.
C++
1
2
3
4
5
for ( int j = 0; j < an; j++ )
         if ( a[ i ] == a[ j ] && i != j ) {
            flag = false;
            break;
         }
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
05.05.2012, 12:42  [ТС]     Напечатать различные числа, встречающиеся в обеих последовательностях #5
Условие задачи немного поменялось. Помогите пожалуйста составить программу, которая выводила бы не числа, входящие всего один раз в каждую последовательность, а числа, встречающие в обеих последовательностях без повторов.

Например,
1-я последовательность: {5, 3, -2, 3, 4, 5, 1}
2-я последовательность: {6, 4, 3, 12, 5, -2}
Результат: 3, -2, 5
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
05.05.2012, 12:56     Напечатать различные числа, встречающиеся в обеих последовательностях #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <set>
#include <iterator>
#include <algorithm>
 
int main()
{
   std::vector<int> vec1 = {5, 3, -2, 3, 4, 5, 1};
   std::vector<int> vec2 = {6, 4, 3, 12, 5, -2};
   std::sort(vec1.begin(), vec1.end());
   std::sort(vec2.begin(), vec2.end());
   std::set<int> s;
   std::set_intersection(vec1.begin(), vec1.end(), 
        vec2.begin(), vec2.end(), std::inserter(s, s.begin())); 
   std::copy(s.begin(), s.end(), std::ostream_iterator<int>(std::cout, " "));
   return 0;  
}
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
05.05.2012, 15:58  [ТС]     Напечатать различные числа, встречающиеся в обеих последовательностях #7
Цитата Сообщение от user_p01 Посмотреть сообщение
Помогите пожалуйста составить программу, которая выводила бы не числа, входящие всего один раз в каждую последовательность, а числа, встречающие в обеих последовательностях без повторов.
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
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int a[100], b[100], i, j, n, m, k;
    bool flag=false;
    cout << "Введите количество чисел первой последовательности:\n";
    cin >> n;
    cout << "Введите числа первой последовательности:\n";
    for (i=0; i<n; i++)
        cin >> a[i];
    cout << "Введите количество чисел второй последовательности:\n";
    cin >> m;
    cout << "Введите числа второй последовательности:\n";
    for (j=0; j<n; j++)
        cin >> b[j];
    cout << "Различные числа, встречающиеся в обеих последовательностях\n";
    for ( int i = 0; i < n; i++ ) 
    {
      flag = true;
      
      for ( int j = 0; j < n; j++ )
         if ( a[ i ] == a[ j ] && i != j )
            flag = false;
            
      if ( flag ) 
      {
         flag = false;
         
         for ( int j = 0; j < m; j++ )
            if ( a[ i ] == b[ j ] ) 
            {
               flag = true;
               
               for ( int k = 0; k < m; k++ )
                  if ( b[ k ] == b[ j ] && k != j ) 
                  {
                     flag = false;
                     break;
                  }
               
               break;
            }
      }
      
      if ( flag )
         cout << a[ i ] << ' ';
   }
      system("pause");
      return 0;
}
Помогите пожалуйста исправить этот код.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2012, 17:23     Напечатать различные числа, встречающиеся в обеих последовательностях
Еще ссылки по теме:

Ввести длину отрезка с указанием шкалы измерения (c–сантиметры, i–дюймы), напечатать результат в обеих шкалах C++
Для каждого числа найти, в каких последовательностях оно встречается C++
Напечатать различные числа, встречающиеся в одной последовательности, но не встречающиеся в другой C++

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

Или воспользуйтесь поиском по форуму:
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
05.05.2012, 17:23     Напечатать различные числа, встречающиеся в обеих последовательностях #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool flag;
 
for ( int i = 0; i < n; i++ ) {
   flag = true;
 
   for ( int j = 0; j < i; j++ ) {
      if ( a[ i ] == a[ j ] )
         flag = false;
         break;
      }
 
   if ( flag )
      std::cout << a[ i ] << ' ';
}
И тоже самое для второй.
Yandex
Объявления
05.05.2012, 17:23     Напечатать различные числа, встречающиеся в обеих последовательностях
Ответ Создать тему
Опции темы

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