С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 21.10.2019
Сообщений: 42

Заменить совпадающие строки 1 вхождением данной строки

22.11.2019, 16:14. Показов 3017. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Есть задание. Не понимаю, как это сделать.
Задание.
Заменить несколько одинаковых подряд идущих строк одним вхождением данной строки. (Совпадающие строки – строки, у которых все соответствующие элементы равны друг другу).
Есть программа с визуальным интерфейсом. Она создает табличку и в ней записаны числа. Реализована кнопка "Заполнить случайными числами", также можно ввести эти числа вручную в ячейки.
Сверху входные данные, снизу выводятся данные после проведения операции.
Есть вот такой метод, который просто увеличивает каждое число в каждой ячейке на 1. Мне вместо этого нужно, чтобы эта функция находила совпадающие строки и делала так, чтобы эти строки выводились только 1 раз на экран.
Надеюсь на вашу помощь.
Java
1
2
3
4
5
6
7
public static void Process(int[][] arr2) {
        for (int r = 0; r < arr2.length; r++) {
            for (int c = 0; c < arr2[r].length; c++) {
                arr2[r][c]++;
            }
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2019, 16:14
Ответы с готовыми решениями:

Вводится строка. Удалить все символы, совпадающие с первым символом данной строки C#
Доброго времени. Нужна помощь в создании данной программы

Даны две строки: S1 и S2. Удалить из строки S1 все подстроки, совпадающие с S2
8. Даны две строки: S1 и S2. Удалить из строки S1 все подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений.

Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, то вывести строку S без изменений

7
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.11.2019, 16:34
формируй новый массив
для каждой строки исходного массива - сравнить ее с предыдущей, если не равны, записать в новый массив, иначе не записывать
0
1 / 1 / 0
Регистрация: 21.10.2019
Сообщений: 42
08.12.2019, 16:49  [ТС]
Добрый день, еще раз. Написал наконец-то код, но он работает только частично. Иногда заменяет правильно, а иногда, при вводе, заменяет совпадающие строки не на эту же строку, на строку, в которой все числа это 0. Надеюсь на помощь.
Java
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
33
34
static int[][] Process(int[][] array){
        int newSize = array.length;
        for (int i = 0; i < array.length-1 ; i++) {
            if (isLinesSame(array[i],array[i+1])){
                newSize--;
            }
        }
        int[][] res = new int[newSize][array[0].length];
        for (int i = 0; i < array.length-1 ; i++) {
            if (isLinesSame(array[i],array[i+1])){
                newSize--;
            }
        }
        int count = 0;
        for (int i = 0; i < array.length-1 ; i++) {
            if (!isLinesSame(array[i],array[i+1])){
                res[count] = array[i];
                count++;
            }
        }
        if (!isLinesSame(array[array.length-2],array[array.length-1])){
            res[count] = array[array.length-1];
            //count++;
        }
        return res;
    }
    static boolean isLinesSame(int[] a, int[] b){
        for (int i = 0; i <a.length ; i++) {
            if (a[i] != b[i]){return false;}
        }
        return true;
    }
 
}
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
08.12.2019, 17:01
Schock, что-то сложна (и описано и реализовано)
может прошу много-го, но тут нужно какое-то графическое представление задачи или хотя-бы пример входных и выходных данных
0
1 / 1 / 0
Регистрация: 21.10.2019
Сообщений: 42
08.12.2019, 17:06  [ТС]
Входные данные
1 2 3
4 5 6
4 5 6
1 2 3
Выходные данные
1 2 3
4 5 6
1 2 3
Это так должно работать и так работает
Но если я введу ток так:
1 1 1
1 1 1
То на выходе у меня будет
0 0 0

Также если я введу
2 2 2
3 3 3
3 3 3
На выходе будет
2 2 2
0 0 0
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
08.12.2019, 17:07
Schock, а если будет так?
4 5 6
4 5 1
0
1 / 1 / 0
Регистрация: 21.10.2019
Сообщений: 42
08.12.2019, 17:09  [ТС]
sdasdaw, Выдаст точно такие же строки, как и должно. Единственная проблема, когда ниже строчек, которые нужно заменить, ничего нету. Тогда почему-то 0 выдает.
То есть если ввести
4 5 6
4 5 6
То выдаст
0 0 0

А если вот так
4 5 6
4 5 6
1 1 1
То выдаст все нормально,
4 5 6
1 1 1
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
08.12.2019, 17:45
Лучший ответ Сообщение было отмечено Schock как решение

Решение

Schock, удачи
Кликните здесь для просмотра всего текста
Java
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
33
34
35
36
37
38
39
40
41
42
43
44
public static void main(String[] args) {
    int[][] source = {{1, 2, 3}, {4,5,6}, {4,5,6}, {1,2,3}};
 
    printSolution(source);
}
 
static void printSolution(int[][] source) {
    int[] flaggerCopy = initFlaggers(source);
    int[][] result = fillUniqueArray(source, flaggerCopy);
 
    System.out.println(Arrays.deepToString(result));
}
 
private static int[] initFlaggers(int[][] source) {
    int[] result = new int[source.length + 1];
 
    for (int i = 0; i < source.length - 1; i++) {
        if (!Arrays.equals(source[i], source[i + 1])) {
            increaseSize(result, i + 1, result[0]++);
 
            if (i == source.length - 2) increaseSize(result, i + 2, result[0]++);
        }
    }
 
    return result;
}
 
private static void increaseSize(int[] flaggerCopy, int index, int tmp) {
    flaggerCopy[index] = 1;
}
 
private static int[][] fillUniqueArray(int[][] source, int[] flaggerCopy) {
    int[][] result = new int[flaggerCopy[0]][source[0].length];
 
    int filler = 0;
    for (int i = 0; i < source.length; i++) {
        if (flaggerCopy[i + 1] == 1) {
            System.arraycopy(source[i], 0, result[filler], 0, source[0].length);
            filler++;
        }
    }
 
    return result;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2019, 17:45
Помогаю со студенческими работами здесь

Заменить в данной матрице все элементы первой строки числом 7
Помогите пожалуйста, срочно нужно:Дана целочисленная матрица размера 5x6. Заменить в данной матрице все элементы первой строки числом 7.

Заменить в данной матрице все отрицательные элементы первой строки числом 0
Дана целочисленная матрица размера 5х5. Заменить в данной матрице все отрицательные элементы первой строки числом 0.

Заменить элементы главной диагонали матрицы средним арифметическим других элементов данной строки
Данный файл содержит элементы двумерного массива. Создать новый файл с входного, заменив элементы главной диагонали средним арифметическим...

В матрицах в каждой строке заменить нулевые элементы суммой элементов данной строки. Надо использовать подпрограмму.
Здравствуйте. Дана задача: В матрицах С(5,10) и D(10,20) в каждой строке заменить нулевые элементы суммой элементов данной строки....

В каждой строке матрицы действительных чисел размера n×m заменить 1-й элемент на отношение минимума данной строки к макс
В каждой строке матрицы действительных чисел размера n×m заменить 1-й элемент на отношение минимума данной строки к максимуму столбца,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru