Подсказка намекает на то, что можно выделить массив нулевых элементов размером, равным числу возможных значений элементов исходного массива. Встретив элемент со значением x, увеличивать x-овый элемент этого массива. Если достигается значение 2 — значит, дубликат.
21 сен 2018 в 7:01
21 сен 2018 в 7:02
Выполняем сортировку подсчётом (любым доступным методом — накоплением значений или в статический массив), в процессе выводим элементы, промежуточное количество которых равно 2.
21 сен 2018 в 7:49
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
есть как минимум 1 вариант с одним проходом:
// хешсет, скорость — линейная, память — линейная public void PrintDublicates_HashSet(int[] n) < var set = new HashSet(); foreach(var item in n) if (!set.Add(item)) Console.WriteLine(item); >
Варианты с несколькими проходами
// сортировка — скорость — nlogn, память — константа public void PrintDublicates_Sort(int[] n) < Array.Sort(n); for(int i=1; i// подсчет. Скорость — линейная, память — зависит от значения макс элемента // при условии, что элементы неотрицательны public void PrintDublicates_Count(int[] n) < int max = n.Max(); int[] counts = new int[max+1]; for (int i = 0; i < n.Length; i++) < counts[n[i]]++; if (counts[n[i]] >1) Console.WriteLine(n[i]); > >
PrintDublicates_HashSet(new int[] ); Console.WriteLine(); PrintDublicates_Sort(new int[] ); Console.WriteLine(); PrintDublicates_Count(new int[] );
Вывод в консоль
Язык C++ с нуля | #31 Поиск элементов массива в c++
1 3 1 3 1 3
Источник: ru.stackoverflow.com
Написать программу которая находит в массиве значения повторяющиеся два
Задача: Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран. (Решить с помощь динамических массивов)
Проблема в том, что мое решение находя повторяющееся значение выводит его на экран один раз а потом дойдя до повторяющегося значения в масиве, снова выводит его на экран. Подскажите как поправить код чтобы повторяющиеся значения выводились только по разу.
Решение:
#include using namespace std; int main () < const int size=10; int *mas=new int [size]; int rep=0; int a=0; for (int i=0;i>mas[i]; > cout if (a>=2) cout delete [] mas; return NULL; >
Пользователь
Регистрация: 04.02.2010
Сообщений: 50
мм.. посмотри вот. может поможет, программа будет выводить сколько единиц, двоек.. и т.д.. у тебя в массиве.. при желании можно переделать под твое задание
#include
#include
#include
using namespace std;
int main ()
Я не волшебник.. я только учусь
Последний раз редактировалось romec1; 21.04.2010 в 15:33 .
Пользователь
Регистрация: 04.01.2010
Сообщений: 23
Нахождение и замена повторяющихся членов массива в C#
Вот немного переработанный вариант, но тоже с проблемой ратотает правильно только если значение повторяеться один раз, если одинаковых значений в массиве больше 2-х то не срабатывает.
#include using namespace std; int main () < setlocale(LC_ALL,»rus»); const int size=10; int *mas=new int [size]; int *temp=new int [size]; int rep=0; int k=0, a=0; for (int i=0;i>mas[i]; > cout if (a>=2) < temp[k]=rep; k++; >> cout delete [] mas; delete [] temp; return NULL; >
Наркоман самоучка
Форумчанин
Регистрация: 22.07.2007
Сообщений: 276
Ниже реализация Вашей задачи с помощью динамических массивов.
#include using namespace std; const int cArrSize = 10; int main( void ) < int* pNums; int* pRepeatedNums; bool find; pNums = new int[cArrSize]; pRepeatedNums = new int[cArrSize]; for (int i = 0; i < cArrSize; ++i) < cout > pNums[i]; find = false; for (int j = 0; j < i; ++j) if (pNums[j] == pNums[i]) < ++pRepeatedNums[j]; find = true; >if (!find) pRepeatedNums[i] = 1; > for (int i = 0; i < cArrSize; ++i) < if (pRepeatedNums[i] >1) cout delete [] pNums; delete [] pRepeatedNums; system( «pause» ); return 0; >
Регистрация: 22.05.2007
Сообщений: 9,475
А я бы отсортировал массив и потом нашел элементы с одинаковыми соседями — это и будут повторяющиеся значения.
Пользователь
Регистрация: 04.01.2010
Сообщений: 23
Ниже реализация Вашей задачи с помощью динамических массивов.
Спасибо огромное, работает на ура! Единственное, вот пытаюсь понять алгоритм решения. Зачем там переменная bool find и какова её роль здесь. Да и получаеться в первом цикле мы вводим цифры в массив и тут же этот массив проверяем, так?
—-
Впринципе разобрался, щас еще отладчиком пройдусь пару раз и пойму до конца. Спасибо
Последний раз редактировалось yugik; 21.04.2010 в 19:07 .
Источник: www.programmersforum.ru
Программирование на C, C++, C#
//a) int max=0; do < const int q=6; int A[q][q]; srand(time(NULL)); for(int i=0;i
setlocale(LC_ALL, «Russian»); int a, b; cout << «Введите первое число:»; cin >> a; cout << «.
void init(int *a, int size); void out(int *a, int size); void out_c(int *a, int size); void main() < setlocale(LC_ALL, «Russian.
int a, b; setlocale(0, «rus»); cout << «Введите начало диапазона:»; cin >> a; cout << «Введи.
unsigned int time=86399; ////cout << «Enter time:»; ////cin >> time; //int day = time / 24 / 3600; //.
int s, hours, min; cout << «Enter distance (km):»; cin >> s; cout << «Enter hours and min: int res(); void main() < char brosok; do < setlocale(LC_ALL, «Russian»); srand(time(NULL)); co.
int a, b; setlocale(0, «rus»); cout << «Введите начало диапазона:»; cin >> a; cout << «Введи.
int begin_hours, begin_min, begin_sec; int end_hours, end_min, end_sec; cout
double gb, bit; cout << «Enter the size of the movie(Gb):»; cin >> gb; cout << «Enter speed co.
Архив блога
- ►2016 (145)
- ►апреля (48)
- ►февраля (44)
- ►января (53)
- ▼2015 (182)
- ►декабря (30)
- ►сентября (13)
- ►июня (13)
- ►мая (23)
- ►апреля (44)
- ▼марта (59)
- Пользователь вводит 3 суммы в копейках, небходимо .
- 20 инопланетян поочередно прилетают на землю с цел.
- Вводить различные числа. Когда будет введен 0, то .
- Вводим любое число с клавиатуры и нужно определить.
- Подсчитать количество натуральных чисел n ( 102 < .
- Написать программу, которая находит в массиве само.
- Написать программу, которая находит в массиве знач.
- Написать программу, которая находит сумму четных и.
- Написать программу, которая выводит содержимое мас.
- Написать программу, которая находит минимальное и .
- Написать программу, которая находит сумму всех отр.
- Показ содержимого массива на экран
- Инициализация массива при помощи цикла
- Найти сумму всех чисел от 1 до 100
- Выбрать наибольшее из трёх заданных чисел
- Определить, есть ли среди цифр заданного целого тр.
- Известны год и номер месяца рождения человека. Опр.
- Определить максимальное и минимальное значения из .
- При помощи цикла показать на экран календарь текущ.
- Написать программу, которая выводит на экран — сле.
- Создать программу, которая выводит на экран просты.
- Вывести на экран прямоугольник из символов 20 на 20
- Написать программу, которая выводит на экран табли.
- Цикл в цикле
- Пользователь вводит с клавиатуры число, необходимо.
- Пользователь вводит с клавиатуры число, необходимо.
- Пользователь вводит с клавиатуры число — программа.
- Использование кириллицы в консольных приложениях
- Пользователь вводить число. Вывести на экран числа.
- Пользователь с клавиатуры последовательно вводит ц.
- Часы бьют каждый час, столько раз, сколько времени.
- Операторы break и continue для конструкции for
- пример конструкции for
- Дано натуральное число n. Написать программу, кото.
- Написать программу, которая находит сумму всех цел.
- Разработать программу, которая выводит на экран го.
- Написать программу, выводящую на экран линию из 5 .
- Написать программу, которая находит сумму всех цел.
- Пример do while
- Пример while
- Напишите программу, реализующую популярную телевиз.
- Известно, что 1 дюйм равен 2.54 см. Разработать пр.
- Дано натуральное число а (a меньше 100). Напишите .
- Напишите программу, проверяющую число, введенное с.
- Программа, которая переводит систему буквенных оце.
- Структура множественного выбора switch
- Практический пример на принадлежность точки кольцу.
- Лесенка if — else if
- Программа, будет определять, какое из двух чисел, .
- Тернарный оператор УТВЕРЖДЕНИЕ ИЛИ ВЫРАЖЕНИЕ?ДЕЙСТ.
- Если к блоку if или else относится только одна ком.
- Конструкция if без else
- Конструкция логического выбора if
- Пример, использующий преобразование типов
- Программа для выяснения параметров окружности
- Введите три числа и выведите на экран значение сум.
- В C нет операции возведения в квадрат.Напишите про.
- Напишите программу, которая переводит гривны в $, .
- Напишите программу, вычисляющую среднее арифметиче.
Источник: prog88.blogspot.com