Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
garnier
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 115
#1

Определить, имеются ли в матрице только два одинаковых элемента - C++

19.11.2015, 19:45. Просмотров 395. Ответов 15
Метки нет (Все метки)

Написать программу: Определить, имеются ли в двумерном массиве только два одинаковых элемента.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2015, 19:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, имеются ли в матрице только два одинаковых элемента (C++):

Определить, есть ли в матрице два одинаковых элемента - C++
Помогите решить задачу. Сам новичок в С++ 1. Определить, есть ли в данном двумерном массиве два одинаковых элемента. 2. Поменять...

Дана целочисленная матрица A (N,M), в которой имеются ровно два одинаковых элемента. Найти индексы этих элементов - C++
Дана целочисленная матрица A (N,M), в которой имеются ровно два одинаковых элемента. Найти индексы этих элементов. Написал такую...

Определить есть ли в последовательности хотя бы два одинаковых элемента - C++
Помогите пожалуйста, срочно нужен код программы на С++. Чем проще будет написана тем лучше и комментарии чтобы понять код Даны...

Определить, есть ли в бинарном дереве хотя бы два одинаковых элемента - C++
Задано бинарное дерево. Определить, есть ли в этом дереве хотя бы два одинаковых элемента. Вывести на экран все одинаковые элементы в...

имеются ли в строке S два соседствующих одинаковых символа - C++
Выясните, имеются ли в строке S два соседствующих одинаковых символа.

Даны целые числа с 1 до 95. Имеются ли два подряд нулевых элемента? - C++
Даны целые числа с 1 до 95. Имеются ли два подряд нулевых элемента?

15
Aymurat
101 / 95 / 29
Регистрация: 07.11.2014
Сообщений: 640
Завершенные тесты: 5
19.11.2015, 19:53 #2
Сравни элементы массива, поставь счетчик. Если == - счетчик++, и проверь равно ли счетчик 2
0
garnier
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 115
19.11.2015, 20:46  [ТС] #3
Написать программу сможете?
0
Nosey
1349 / 400 / 107
Регистрация: 22.10.2014
Сообщений: 863
Завершенные тесты: 2
19.11.2015, 20:55 #4
Цитата Сообщение от garnier Посмотреть сообщение
Написать программу сможете?
Конечно, пожалуйста:

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
#include <iostream>
#include <map>
 
template<typename T, size_t D1, size_t D2>
T* nonUniqueElementsByCount(T (&mat)[D1][D2], size_t count)
{
    std::map<T, size_t> map;
    for (T* begin = reinterpret_cast<T*>(mat), *end = begin + D1 * D2; begin != end; ++begin)
    {
        if (++map[*begin] > count)
            return begin;
    }
    return nullptr;
}
 
int main()
{
    int mat[3][3] = { { 1, 2, 3 }, { 4, 5, 3 }, { 7, 8, 9 } };
    auto target = nonUniqueElementsByCount(mat, 2);
    if (target)
        std::cout << "Встречающийся более двух раз элемент: " << *target << std::endl;
    else
        std::cout << "Встречающегося более двух раз элемента нету " << std::endl;
 
    int mat2[3][3] = { { 1, 2, 3 }, { 4, 5, 3 }, { 3, 8, 9 } };
    auto target2 = nonUniqueElementsByCount(mat2, 2);
    if (target2)
        std::cout << "Встречающийся более двух раз элемент: " << *target2 << std::endl;
    else
        std::cout << "Встречающегося более двух раз элемента нету " << std::endl;
}
1
garnier
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 115
19.11.2015, 21:04  [ТС] #5
Можно Вас еще немного помучить...И дать на большую часть строк комментарии?
0
Nosey
1349 / 400 / 107
Регистрация: 22.10.2014
Сообщений: 863
Завершенные тесты: 2
19.11.2015, 21:25 #6
garnier, Боюсь что это сильно не поможет.
Если для вас верхний код - это чёрная магия, то лучше напишите ваш неработающий вариант и вам помогут.
Если же не магия, то задавайте вопросы что не понятно.
0
garnier
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 115
19.11.2015, 21:33  [ТС] #7
скажем так, я могу задать просто статический 2х мерный массив, на этом мои действия заканчиваются. С заданием правильного условия у меня проблемы. Вы можете написать код программы...Как нибудь легче для меня?
0
Dimension
Dimension
569 / 438 / 135
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
19.11.2015, 21:41 #8
создайте еще один одномерный массив ,в нем подсчитывайте количество каждой цифры . потом пробегите по этому массиву и посмотрите ,если какое-то значение равно 2 ,то значит все хорошо
0
garnier
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 115
19.11.2015, 21:44  [ТС] #9
Я так не умею, только начался си, сам пытаюсь разбираться-никак. Можете написать готовую? Я потыкаюсь после и у Вас поспрашиваю про нее.
0
Dimension
Dimension
569 / 438 / 135
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
19.11.2015, 21:49 #10
C++
1
2
3
4
5
6
7
8
9
10
11
const int size;//какое то большое число ,например максимум  в матрице
int b[size];
for(int i=0;i<n;i++)
 for(int j=0;j<m;j++)
   b[a[i][j]]++;
for(int i=0;i<size;i++)
  if(b[i]==2){
    cout<<"имеются";
    return 0;
  }
cout<<"не имеются";
0
garnier
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 115
19.11.2015, 22:05  [ТС] #11
Вот, что получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int main()
{
    const int size = 10; int m, n, b, a, i;
    int b[size] = {2,3,51,22,44,5,6,7,8,2};
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            b[a[i][j]]++;
    for (int i = 0; i < size; i++)
        if (b[i] == 2) {
            std::cout << "имеются";
            return 0;
        }
    std::cout << "не имеются";
}
Дальше нужно исправить ошибки...
0
Dimension
Dimension
569 / 438 / 135
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
19.11.2015, 22:11 #12
а матрица то где ,в ней элементы должны быть
0
garnier
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 115
19.11.2015, 22:15  [ТС] #13
Вот задание, "Определить, имеются ли в двумерном массиве только два одинаковых элемента."
0
Dimension
Dimension
569 / 438 / 135
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
19.11.2015, 22:23 #14
ну и где двумерный массив у вас
0
Nosey
1349 / 400 / 107
Регистрация: 22.10.2014
Сообщений: 863
Завершенные тесты: 2
19.11.2015, 22:23 #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
    // const - не для украшения, size, m, n - должны быть известны во время компиляции,
    // во время выполнения их вводить нельзя. (std::cin >> m) - не выдет.
    const int size = 10; // максимальное значение элемента в матрице, не количество а значение.!!
    const int m = 3; // размеры матрицы
    const int n = 3; // размеры матрицы
    int b[size] = { 0 }; // вспомогательный массив размером с максимальный элемент матрицы.
    int a[n][m] = { { 1, 2, 3 }, { 4, 5, 3 }, { 7, 8, 9 } }; //непосредственно сама матрица в которой ищем повторения.
    for (int i = 0; i < n; i++) // перебираем матрицу
        for (int j = 0; j < m; j++) // перебираем матрицу
            b[a[i][j]]++; // в вспомогательный массив b по индексу равному значению матрицы добавим 1.
    // по завершению циклов в вспомогательном массиве индекс означает значение из нашей матрицы,
    //и значение в этом массиве равно количеству повторений в матрице.
    for (int i = 0; i < size; i++)
        if (b[i] == 2) // если что-то повторилось два раза - значит бинго. 
        {
            std::cout << "имеются";
            return 0;
        }
    std::cout << "не имеются";
}
0
19.11.2015, 22:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2015, 22:23
Привет! Вот еще темы с ответами:

Выяснить, имеются ли в данном массиве два идущих подряд положительных элемента - C++
Дан массив действительных чисел а1,…, аn. Выяснить, имеются ли в данном массиве два идущих подряд положительных элемента. Подсчитать...

Определить, имеются ли в матрице числа, в которых первая и последняя цифры совпадают - C++
Напишите код программы пожалуйста Нарушение п.5.18 Правил Запрещено размещать задания и решения в виде картинок и других файлов с их...

Проверить, есть ли в списке хотя бы два одинаковых элемента - C++
Прошу проверить правильность кода и помочь написать его дальше. Написать программу, обеспечивающую работу с динамическими структурами -...

Определить координаты левого нижнего элемента и правого верхнего элемента в матрице - C++
Задание №18 a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты...


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

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

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