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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
-Lambert-
Сообщений: n/a
#1

Нужно найти в массиве и распечатать пары одинаковых чисел - C++

10.12.2012, 03:08. Просмотров 375. Ответов 3
Метки нет (Все метки)

Нужно найти в массиве и распечатать пары одинаковых чисел при помощи одномерных массивов.
Пример работы программы:

Ввод чисел 1 2 3 1 2 5 1 2 3 1 2

Программа ввыводит [11] [22] [33] [11] [22]

Тоесть испозованые елементы не должны повторяться.

Мой код:

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
// lab №4 (1 semestr)
 
#include <iostream>
using namespace std;
 
int main()
{
 
    locale :: global(locale("rus"));
 
    const int N = 10;
 
    int Z[N];
    int i = 0;
    int j = 0;
 
    for(i = 0 ; i < N ; i++)
    {
        cin >> Z[i];
    }
 
    for(i = 0 ; i < N ; i++)
    {
        for(j = i + 1 ; j < N ; j++)
        {
            if(Z[i] == Z[j])
            {
                cout << "Пары одинаковых чисел: " << "[" << Z[i] << Z[j] << "]" << endl;
                break;
            }
        }
    }
 
    system("pause");
    return 0;
}
В программа всеравно берутся использовавшиеся елементы. Кому не сложно помогите разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 03:08     Нужно найти в массиве и распечатать пары одинаковых чисел
Посмотрите здесь:

Нахождение в массиве двух одинаковых чисел C++
C++ Найти и вывести все имеющиеся пары стоящих рядом одинаковых символов
Определить длину наибольшей последовательности одинаковых чисел в массиве C++
C++ Поиск 2-х и более одинаковых чисел в массиве
C++ В двумерном массиве нужно найти количество положительных и отрицательных чисел
C++ Нахождение одинаковых чисел в массиве
Если в одномерном массиве встречаются 2 подряд идущих одинаковых числа, то одно нужно удалить C++
Имеются ли в массиве пары взаимно обратных соседних чисел? C++
C++ Найти сумму одинаковых чисел в двумерном массиве
Найти в массиве пары чисел, разность между которыми минимальна C++
C++ Найти пары простых чисел
В массиве найти сумму каждой соседней пары элементов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
10.12.2012, 03:39     Нужно найти в массиве и распечатать пары одинаковых чисел #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
34
35
36
37
38
39
40
41
#include <iostream>
using namespace std;
 
int main()
{
 
    locale :: global(locale("rus"));
 
    const int N = 10;
 
    int Z[N], used[N];
    int i = 0;
    int j = 0, kol = 0;
    bool fl;
    for(i = 0 ; i < N ; i++)
    {
        cin >> Z[i];
    }
 
    for(i = 0 ; i < N ; i++)
    {
        fl = false;
        for(j = 0 ; j < kol ; j++)
            if (Z[i] == used[j])
                fl = true;
        if (!fl)
            for(j = i + 1 ; j < N ; j++)
            {
                if(Z[i] == Z[j])
                {
                    cout << "Пары одинаковых чисел: " << "[" << Z[i] << Z[j] << "]" << endl;
                    used[kol] = Z[i];
                    kol++;
                    break;
                }
            }
    }
 
    system("pause");
    return 0;
}
activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
10.12.2012, 03:41     Нужно найти в массиве и распечатать пары одинаковых чисел #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
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>
#include <vector>
#include <iterator>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
typedef unsigned int uint;
 
int main()
{
    const uint size = 20;
    std::vector<int> v(size);
    std::vector<int> f;
    std::vector<int>::iterator it;
 
    std::srand(std::time(0));
 
    for (it = v.begin (); it != v.end (); ++it)
    {
        *it = std::rand() % size;
        std::cout << std::setw(3) << *it;
    }
    std::cout << '\n';
 
    for (it = v.begin (); it != v.end () - 1; ++it)
        for (std::vector<int>::iterator i = it + 1; i != v.end (); ++i)
        {
            if (*it == *i)
            {
                bool flag = true;
 
                for (std::vector<int>::iterator t = f.begin (); t != f.end (); ++t)
                    if (*t == *it)
                    {
                        flag = false;
                        break;
                    }
 
                if (flag)
                {
                    f.push_back ( *i );
                    break;
                }
            }
        }
    for (it = f.begin (); it != f.end (); ++it)
        std::cout << "[" << *it << *it << "]" << "  ";
    std::cout << '\n';
 
    return 0;
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
10.12.2012, 08:41     Нужно найти в массиве и распечатать пары одинаковых чисел #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <list>
#include <algorithm>
#include <utility>
 
#include <boost/optional.hpp>
 
boost::optional<std::pair<int, int>> find_pair(std::list<int>::iterator& pos, std::list<int>& v)
{
   boost::optional<std::pair<int, int>> result;
   auto nextpos = pos;
   std::advance(nextpos, 1);
   auto i = std::find(nextpos, v.end(), *pos);
   if (i != v.end())
   {
      std::cout << *pos << " " << *i << std::endl;
      result = std::make_pair(*pos, *i);
      v.erase(pos++);
      v.erase(i);
   }
   return result;
}
 
int main()
{
   const std::vector<int> v = {1,2,3,1,2,5,1,2,3,1,2};
   std::list<int> mutable_v(v.begin(), v.end());
   std::vector<std::pair<int, int>> pairs;
   for (auto pos = std::begin(mutable_v); pos != std::end(mutable_v);)
   {
      auto res = find_pair(pos, mutable_v);
      if (!res)
      {
         ++pos;
      }
      else
      {
         pairs.push_back(res.get());
      }
   }
   for (const auto& p : pairs)
   {
      std::cout << p.first << " " << p.second << std::endl;
   }
}
http://liveworkspace.org/code/3RF7BQ$6
Yandex
Объявления
10.12.2012, 08:41     Нужно найти в массиве и распечатать пары одинаковых чисел
Ответ Создать тему
Опции темы

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