Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 17

Подсчитать количество уникальных элементов в двумерном числовом массиве

29.05.2016, 11:15. Показов 6854. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подсчитать количество уникальных элементов в двумерном числовом массиве . Паскаль ABC.NET
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.05.2016, 11:15
Ответы с готовыми решениями:

В произвольном числовом массиве подсчитать количество элементов, равных числу B и заменить их числом 5
напишите программу на языке паскаль. и алгоритм решения (Блок-Схема) В произвольном числовом массиве подсчитать кол-во элементов равных...

В двумерном числовом массиве подсчитать количество отрицательных и нулевых элементов
В двумерном числовом массиве подсчитать количество отрицательных и нулевых элементов и выдать на каких местах(строка, столбец) они...

Подсчитать количество элементов в произвольном числовом массиве
В произвольном числовом массиве подсчитать кол-во элементов кратных 3 и заменить их на число 5. вывести их номера.(Блок схема).

16
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 17
29.05.2016, 11:24  [ТС]
т.е это и есть уникальные элементы ?
0
 Аватар для Cyber_Monster_
148 / 129 / 155
Регистрация: 22.03.2016
Сообщений: 502
29.05.2016, 11:24
Последняя ссылка, бери мой код.
0
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 17
29.05.2016, 11:41  [ТС]
так там для одномерного массива а мне надо для двумерного
0
 Аватар для Cyber_Monster_
148 / 129 / 155
Регистрация: 22.03.2016
Сообщений: 502
29.05.2016, 12:08
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
begin
  var arr: array of array of integer;
  var par:= ReadInteger('Введите количество элементов массива: ');
  SetLength(arr,par);
  var Otv: set of integer;
  var HPar: set of integer;
  for var i:= 0 to arr.Length-1 do
    begin
      arr[i]:= ArrRandomInteger(par,-10,10).Println('; ').ToArray;
      foreach var x in arr[i] do
        begin
          if x in Hpar
            then
              Otv += [x];
          Hpar += [x];
        end;
    end;
  Writeln;
  for var i:= 0 to arr.Length-1 do
    arr[i].Where(x -> not (x in Otv)).Println('; ');
end.
1
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 17
29.05.2016, 12:34  [ТС]
Спасибо большое конечно! Но можно более понятный код я просто многое еще не проходил а сдесь слишком по научному написано .. set, +=, Where(x -> not (x in Otv)).Println('; ');, я такие штуки в первый раз вижу
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
29.05.2016, 12:40
Цитата Сообщение от ITLip Посмотреть сообщение
я просто многое еще не проходил а сдесь слишком по научному написано
Так или изучайте .net, а если используете его только для запуска программ, написанных в обычном Паскале, то и не лезьте в этот раздел и молчите про .net, а постите темы например здесь
https://www.cyberforum.ru/pascalabc/
0
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 17
29.05.2016, 12:58  [ТС]
Так я и изучаю net . Нельзя же все сразу изучить.

Добавлено через 3 минуты
Вот я и попросил чтобы более понятно написали если можно
А за код большое спасибо!
0
 Аватар для Cyber_Monster_
148 / 129 / 155
Регистрация: 22.03.2016
Сообщений: 502
29.05.2016, 12:58
Справка по F1 если что...
Там все есть
0
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 17
29.05.2016, 12:59  [ТС]
Что какой оператор означает , да ?
0
 Аватар для Cyber_Monster_
148 / 129 / 155
Регистрация: 22.03.2016
Сообщений: 502
29.05.2016, 13:07
Цитата Сообщение от ITLip Посмотреть сообщение
а сдесь слишком по научному написано .. set, +=, Where(x -> not (x in Otv)).Println('; ');, я такие штуки в первый раз вижу
Set of Integer - множество целых чисел (стандартный тип везде)
(a += 1) все - равно, что a = a+1
Where - https://ru.wikipedia.org/wiki/Where_(SQL)
Not - логическое отрицание
Println('; ') - '; ' - delim
Pascal
1
2
3
4
5
6
7
/// Выводит последовательность на экран, используя delim в качестве разделителя, и переходит на новую строку
function Println<T>(Self: sequence of T; delim: string): sequence of T; extensionmethod;
begin
  Self.Print(delim);
  Writeln;
  Result := Self;  
end;
Добавлено через 4 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Метод фильтрации Where
Описание методов
Методы приведены для последовательности sequence of T.
 
function Where(predicate: T->boolean): sequence of T; 
      Выполняет фильтрацию последовательности значений на основе заданного предиката. Возвращает подпоследовательность значений исходной последовательности, удовлетворяющих предикату.  
function Where(predicate: (T,integer)->boolean): sequence of T; 
      Выполняет фильтрацию последовательности значений на основе заданного предиката с учётом индекса элемента. Возвращает подпоследовательность значений исходной последовательности, удовлетворяющих предикату.  
 
Пример 
begin
  var a := Arr(1,2,3,5,6);
  a.Where(x -> x mod 2 = 0).Println; // 2 6
end.
1
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 17
29.05.2016, 17:07  [ТС]
Спасибо!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
29.05.2016, 17:25
Опять усложняем то, что очень просто:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
uses arrays;
begin
  var par := ReadInteger('Введите количество элементов массива: ');
  // создаем массив, каждым элементом которого является в свою очередь массив случайных чисел
  var mx := Range(1, par).Select(i -> ArrRandomInteger(par,-10,10).Println('; ').ToArray).ToArray;
  write('Уникальные элементы: ');
  // для получения уникальных - "выравниваем" матрицу (превращаем ее из двумерного массива в одномерный),
  // группируем элементы по значению, и оставляем только те, счетчик количества которых = 1, они - уникальны в массиве
  var unique := mx.SelectMany(x -> x).GroupBy(i -> i).Where(g -> g.Count = 1).Select(g -> g.Key).Println(', ').ToArray();
  // Все что осталось - вывести количество:
  writeln('Количество уникальных = ', unique.Count);
end.
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
29.05.2016, 21:02
Ну имхо так проще
Pascal
1
2
3
4
5
6
7
8
9
uses System.Collections.Generic;
begin
  var par := ReadInteger('Введите количество элементов массива: ');
  var st := new SortedSet <Integer>;
  var mx := Range(1, par).Select(i -> ArrRandomInteger(par, -10, 10).Println('; ').ToArray).ToArray;
  foreach var x in mx do
    foreach var y in x do st.Add(y);
  Writeln('Количество уникальных = ', st.Count);
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
30.05.2016, 01:01
Цитата Сообщение от Новичок Посмотреть сообщение
имхо так проще
Чем проще? Тем, что ты не комментировал свои 9 строк, а я написал 5 строк комментариев из 12-ти? Тем, что у тебя какой-то ненужный вложенный цикл присутствует?
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
30.05.2016, 03:58
Цитата Сообщение от volvo Посмотреть сообщение
Тем, что ты не комментировал свои 9 строк, а я написал 5 строк комментариев из 12-ти?
Нет, комментарии не в счет. Если не учитывать комментарии то мой код длиннее.
Но просто не люблю такие длинные выражения, ну опять же имхо.
Pascal
1
var unique := mx.SelectMany(x -> x).GroupBy(i -> i).Where(g -> g.Count = 1).Select(g -> g.Key).Println(', ').ToArray();
Кстати, а если взять количество элементов в двумерном массиве как N, этот код случайно не будет O(N2)?

Добавлено через 2 минуты
Я наверно туплю, но мне чет кажется что этот код за квадрат от количества элементов работает. Ведь для каждого числа(а их N) считается количество таких же чисел(а это проход циклом по всем N элементам).

Добавлено через 2 минуты
Или g.Count он бинарным поиском посчитает ведь массив отсортирован?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.05.2016, 03:58
Помогаю со студенческими работами здесь

Подсчитать количество разновидностей элементов в одномерном числовом массиве
Добрый день. Нужно подсчитать сколько разновидностей элементов находится в одномерном числовом массиве. Тест 6 1 6 4 5 3 2 - 6 ...

В двумерном массиве подсчитать количество положительных элементов
Составить программу для решения задачи. В двумерном массиве подсчитать количество положительных элементов.

В двумерном числовом массиве вычислить количество седловых точек
uses crt; var i,j,k,kol,z,x,b,c,n,m,min,max:integer; a:array of integer; begin clrscr; read (n,m); i:=1; while...

Определите в двумерном числовом массиве суммы положительных и отрицательных элементов
Определите в двумерном числовом массиве суммы положительных и отрицательных элементов.

Делегаты. Найти строку в двумерном числовом массиве с максимальной суммой элементов
Найти строку в двумерном числовом массиве с максимальной суммой элементов. Модифицировать программу для нахождения строки с минимальной...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru