Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
19 / 19 / 7
Регистрация: 25.03.2009
Сообщений: 222

В двумерном массиве найти количество строк с одинаковыми элементами

19.01.2015, 10:46. Показов 2046. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые участники форума.
Напишите,пожалуйста, программ (Паскаль) для решения следующей задачи.
Считать таблицу строк чисел из текстового файла в прямоугольную матрицу. Сравнивать соседние строки. Если есть одинаковые элементы в соседних строках - считать все совпадения (пары) от начала до конца строки (т.е. обеих строк). В cамой же строке нет одинаковых элементов. Если количество совпадений (пар) соседних строк равно заданному отборочному критерию (0, 1, 2..) - считать такие инциденты, или строки от начала до конца файла. Один инцидент связывает две строки.
Я пытался сделать, но безрезультатно.

Pascal
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
const n = 638; m = 8; {в двумерном массиве найти количество одинаковых элементов}
var f: text;
    str: string;
    a, b: array[1..n, 1..m] of integer;
    i, j, k, p, nap, cmp: integer;
begin
 Assign(f, 's-4ucm.txt'); ReSet(f);
 readln(f, str);
 for i := 1 to n do
  begin
   for j := 1 to m do
    begin
     read(f, a[i, j]);
     b[i, j] := 0;
     write(a[i, j]: 3);
    end;
    writeln;
  end;
  for i := 1 to n-1 do
   for k := 2 to n do
    for j := 1 to m do    
     for p := 1 to m do
      if(a[k, p] = a[i, j]) and ((k = i + 1)) then b[i, j] := 1;
      cmp := 0;
      for i := 1 to n-1 do
       nap := 0;
       for j := 1 to m do
         if (b[i, j] = 1) then inc(nap);
         if nap = 1 then inc(cmp);
        writeLn(' Количество пар соседних строк, содержащих по ', nap, ' одинаковых элементов = ', ' ', cmp);
 Close(f);
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2015, 10:46
Ответы с готовыми решениями:

Определить есть ли в двумерном массиве столбец с одинаковыми элементами
Доброго времени суток, нужна помощь с программой. Дан двумерный массив размером n × m, заполненный случайными числами....

Найти количество строк в двумерном массиве char*
Дан массив со строками,содержащими некоторые параметры.Как их посчитать?

В целочисленной матрице nxn найти номера строк с одинаковыми элементами, и с элементами, расположенными по возрастанию
Задана целочисленная квадратная матрица n-го порядка. Найти номера строк, которые имеют: а) все одинаковые элементы; б) элементы,...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
19.01.2015, 12:03
Лучший ответ Сообщение было отмечено kayslu как решение

Решение

Pascal
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
{$reference System.Core.dll}
uses System.Linq, System.IO;
 
function Line(s : string) : integer;
begin
  result := integer.Parse(s);
end;
 
var 
  a : array of array of integer;
  nap : integer := 3;
  lines : integer := 0;
begin
  a := &File.ReadAllLines('d:\test\thread1356961.txt').
    Select((s : string) -> s.Split('  '.ToCharArray()).Select(Line).ToArray()
  ).ToArray();
  
  for i : integer := 0 to a.Length - 2 do
  begin
    if a[i].Intersect(a[i+1]).Count() = nap then 
    begin
      writeln('Lines : ', i:4, i+1:4);
      Inc(lines);
    end;
  end;
  
  writeln('Количество пар соседних строк, содержащих по ', nap, ' одинаковых элементов = ', lines);
end.
вот на таком файле:
1 2 3 4 5 6 7 8
2 30 40 50 60 7 8 9
11 23 14 27 33 29 0 1
1 2 3 5 4 6 7 8
1 20 30 40 5 6 70 8
2 300 4 5 6 7 8 9
выдает правильный ответ:
Pascal
1
2
3
Lines :    0   1
Lines :    4   5
Количество пар соседних строк, содержащих по 3 одинаковых элементов = 2
Это нужно было?
1
19 / 19 / 7
Регистрация: 25.03.2009
Сообщений: 222
19.01.2015, 14:11  [ТС]
Пока у меня ошибки: неверная входная строка (стр.14) и нет ссылки на экземпляр объекта (стр.18), и еще что-то по 6-й строке.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
19.01.2015, 14:23
Я проверял со своим файлом, формат твоего входного файла мне неизвестен. Не приложил файл для теста - допиливай под себя сам...
0
19 / 19 / 7
Регистрация: 25.03.2009
Сообщений: 222
19.01.2015, 15:17  [ТС]
Обычный текстовый файл у меня. Ожидал, программа будет всеядной
Вложения
Тип файла: txt as5.txt (113 байт, 3 просмотров)
Тип файла: txt 45-4-12=30.txt (1.0 Кб, 3 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
19.01.2015, 15:36
Программа и есть всеядная, но нужно знать как минимум используемые разделители, чтобы добавить их в список. Результат обработки первого файла:
Code
Количество пар соседних строк, содержащих по 3 одинаковых элементов = 0
, не работало только из-за того, что строка начинается с пробела, и нужно добавить защиту от этого:

Pascal
14
15
16
  a := &File.ReadAllLines('d:\test\thread1356961_1.txt').
    Select((s : string) -> s.Split('  '.ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries).Select(Line).ToArray()
  ).ToArray();
Второго файла:
Code
Lines :    3   4
Lines :    5   6
Lines :    7   8
Lines :    9  10
Lines :   13  14
Lines :   16  17
Lines :   18  19
Lines :   19  20
Количество пар соседних строк, содержащих по 3 одинаковых элементов = 9
0
19 / 19 / 7
Регистрация: 25.03.2009
Сообщений: 222
19.01.2015, 18:24  [ТС]
Спасибо, volvo, программа стала работать. Кажется, ноль игнорируется как элемент, но это не суть. У меня вопрос: если в качестве пар брать не соседние строки, а через строку, две и т.д., можно ли использовать строку

if a[i].Intersect(a[i + 1]).Count() = nap then

? Как здесь решить проблему вылета за границу диапазона индексов.?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2015, 18:24
Помогаю со студенческими работами здесь

Определить количество столбцов с неповторяющимися элементами в двумерном массиве
подскажите алгоритм для того, как посчитать столбцы, в которых все элементы отличаются(с неповторяющимися элементами) для Си

В двумерном массиве заменить элементы строк с четными индексами элементами строк с нечетными индексами
Дан массив чисел, А (5, 4). Превратить массив , заменив элементы строк с четными индексами элементами строк с нечетными индексами (элементы...

Количество столбцов и строк в двумерном массиве
Нужно в цикле пройтись по неизвестному двумерному массиву. Как получить у него количество столбцов и строк?

Неизвестное количество строк в двумерном массиве
Как обеспечить ввод неограчиненного числа строк, который прекращается, к примеру, пустой строкой или специальным символом? #include...

Количество отсортированных строк в массиве двумерном
Дана квадратная матрица n x n (двумерный массив) целых чисел. Подсчитать количество упорядоченных (в любом направлении) строк. p.s....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru