Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/40: Рейтинг темы: голосов - 40, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 15.05.2017
Сообщений: 15

Найти единственное число, которое повторяется в массиве дважды

02.06.2017, 11:19. Показов 7913. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив размера N из целых чисел, принимающих любое целое значение в диапазоне от 1 до M, при этом одно число в этом массиве повторяется два раза. Найти это число.

За помощь огромное СПАСИБО!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.06.2017, 11:19
Ответы с готовыми решениями:

Циклы: найти в массиве максимальное число, которое повторяется
Добрый вечер. Запутался совсем с этими массивами.. Так прошу помощи. В этом коде, нужно найти максимальное число которое повторяется. Не...

Найти число в двумерном массиве, которое чаще всего повторяется
Найти число в двумерном массиве, которое чаще всего повторяется.

Найти наибольшее число в массиве, которое повторяется по крайней мере 2 раза, но не более чем 3 раза
подскажите с задачкой пожалуйста Найти наибольшее число в массиве, которое повторяется по крайней мере 2 раза, но не более чем 3 раза....

32
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
02.06.2017, 14:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Там в условии еще про диапазон от 1 до M сказано, но это учитывать не стал.
Fixer_84, человек, идущий, пусть даже на стажера, должен такие вещи уж сам доделывать.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
02.06.2017, 14:04
Цитата Сообщение от Fixer_84 Посмотреть сообщение
C++
1
2
3
for (int i = t; i < N; i++)
{
    if (A[i] == A[i+1])
Есть вариант выхода за границу массива
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
02.06.2017, 14:13
MrGluck, Я пробовал менять на N - 1, но тогда для 1 1 1 2 2 не видит 2. Привидите, пожалуйста, пример последовательности для которой код выше работает неправильно.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
02.06.2017, 14:31
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Привидите, пожалуйста, пример последовательности для которой код выше работает неправильно.
Выход за границы массива - UB. Как только мы доходим до последнего элемента, мы его получаем.
0
1 / 1 / 1
Регистрация: 16.05.2017
Сообщений: 7
20.06.2017, 02:09
Я, конечно, некропостер, но ведь это задачка не на программирование, а на логику.
Всё решается в 1 проход.
Для N = M + 1 можно просто посчитать сумму и вычесть N*M/2.
Для N < M + 1:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main()
{
    // Исходные данные
    const int M = 11;
    const int N = 8;
    const int x[N] = { 1, 5, 3, 6, 2, 9, 3, 11 };
 
    int cntx[M+1] = { 0 };
    for (int i = 0; i < N; i++)
    {
        if (++cntx[x[i]] == 2)
        {
            std::cout << x[i];
            return 0;
        }
    }
    return 0;
}
Для особо въедливых тестеров - решение в 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>
 
int main()
{
    // Исходные данные
    const int M = 11;
    const int N = 10;
    const int x[N] = { 1, 5, 3, 1, 6, 2, 9, 3, 1, 11 };
 
    int cntx[M+1] = { 0 };
    for (int i = 0; i < N; i++)
    {
        cntx[x[i]]++;
    }
    for (int j = 1; j <= M; j++)
    {
        if (cntx[j] == 2)
        {
            std::cout << j;
            return 0;
        }
    }
    std::cout << "Nothing found";
    return 0;
}
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 05:48
Добавил в исходный код лишнюю 3. Должен выдать, что таких чисел нет. Выдает 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
#include "stdafx.h"
#include <iostream>
 
int main()
{
    // Исходные данные
    const int M = 11;
    const int N = 9;
    const int x[N] = { 1, 5, 3, 6, 3, 2, 9, 3, 11 };
 
    int cntx[M + 1] = { 0 };
    for (int i = 0; i < N; i++)
    {
        if (++cntx[x[i]] == 2)
        {
            std::cout << x[i];
            system("pause");
            return 0;
        }
    }
    system("pause");
    return 0;
}
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
20.06.2017, 07:47
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
#define SIZE(x) (sizeof(x) / sizeof(x[0]))
 
using namespace std;
 
const int M = 20;
 
int main() {
    int a[] = {1,2,9,4,5,6,7,8,3,2,2,20,4};
    int b[M+1] = {0};
    for (int i = 0; i < SIZE(a); i++) b[a[i]]+=1;
    for (int i = 0; i < SIZE(a); i++) 
        if (b[a[i]]==2) { 
            cout << a[i] << endl;
            return 1;
        }
    return 1;
}
Добавлено через 1 минуту
Упс, LexaStealth раньше этот вариант предложил
0
1 / 1 / 1
Регистрация: 16.05.2017
Сообщений: 7
20.06.2017, 11:11
Цитата Сообщение от мановар Посмотреть сообщение
Добавил в исходный код лишнюю 3. Должен выдать, что таких чисел нет. Выдает 3. И где логика?
Это вариант "тяп ляп - и в продакшен".
Цитата Сообщение от LexaStealth Посмотреть сообщение
Для особо въедливых тестеров - решение в 2 прохода:
Вообще, такие задачи обычно дают не на проверку программистских скиллов и не на знание С++. Это задача на проверку логики, математики и смекалки (или на знание алгоритмов вроде сортировки подсчётом). После определённых событий я стал включать подобные задачи в свои вопросы кандидатам.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2017, 11:17
Цитата Сообщение от LexaStealth Посмотреть сообщение
После определённых событий я стал включать подобные задачи в свои вопросы кандидатам.
У меня всё диаметрально наоборот. Решение таких задачек не показывает уровень знаний человека и способность писать прод код. Так что все задачки на "смекалку, логику, знания N сортировок" были исключены. Если человек быстро решит эту задачу за N^2, это не значит что он плохой программист.
0
20.06.2017, 11:29

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Решение таких задачек не показывает уровень знаний человека и способность писать прод код.
Согласен. Для этого я обычно даю небольшое тестовое задание на дом.
Вообще, зависит от задач. У меня большинство задач на вычислительное ядро, где такие знания очень нужны.
Подобные вопросы стал добавлять когда пробился человек, который отлично знает кодирование, но со смекалкой, логикой, математикой всё очень туго.

0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 11:33
Цитата Сообщение от LexaStealth Посмотреть сообщение
Это вариант "тяп ляп - и в продакшен".
Вот эту логику или подход к делу, я никогда не понимал и не пойму. Зачем гнать за ведомо туфту, если можешь сделать как положено. Не хотел бы я с Вашей конторой связываться, а то вот получишь такой "тяп-ляп" и репу потом чеши.
0
20.06.2017, 11:38

Не по теме:

Цитата Сообщение от мановар Посмотреть сообщение
Зачем гнать за ведомо туфту, если можешь сделать как положено.
Всё чётко по ТЗ же.
Дан массив размера N из целых чисел, принимающих любое целое значение в диапазоне от 1 до M, при этом одно число в этом массиве повторяется два раза. Найти это число.
Нигде не написано, что оно встречается ровно 2 раза. Может встречаться хоть 10 раз, но под условие задачи это попадает.

0
20.06.2017, 12:17

Не по теме:

Наконец то в разделе появился эксперт по лингвистике. Если что, буду обращаться.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.06.2017, 12:17

Как найти единственное число в массиве, которое не встречается 2 раза
Написать функцию, которая будет принимать массив чисел, в массиве будут повторяющиеся числа и одно число которое не повторяется, надо найти...

Найти в массиве число, которое повторяется наибольшее количество раз
есть много похожих тем, но мне нужно что бы если есть не одно число. которое повторяется не раз тоже выводилось. пример кода, который...

Найти трёхзначное число, которое первым встретится дважды
Найти трёхзначное число, которое первым встретится дважды Условие задачи 1. Дан ряд чисел ln2, ln3, ln4, ln5, ln6, ln7, ... (длина не...

Как найти число, которое повторяется наибольшее количество раз?
textBox1 получает текст: 300 301 301 301 300 300 301 302 302

Найти максимальное число в матрице, которое повторяется не более одного раза
Var a:array Procedure TForm1.Button1Click Var max,j,i,k,s:integer; Begin StringGrid.Rowcount:=10; StringGrid.ColCount:=10; ...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru