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

Удаление нулевых строк и столбцов в двумерном массиве

05.05.2021, 18:32. Показов 1881. Ответов 2

Студворк — интернет-сервис помощи студентам
По заданию нужно считать двумерный массив из файла, удалить из него нулевые строки и столбцы и записать в файл. Со строками проблем нет. Если в массиве 1 нулевой столбец, то все работает. Но если 2 нулевых столбца, то один удаляется нормально, а второй тоже убирается, но на его место копируется следующий столбец. Помогите пожалуйста исправить.

Исходный массив:
Название: Снимок.PNG
Просмотров: 69

Размер: 12.2 Кб

То что получается на выходе:


Функция удаления строк и столбцов:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 int[][] b=new int[arr.length][arr[0].length];
       int[][] c=new int[arr.length][arr[0].length];
 
       int sumRow=0,x=0;
 
       for(int i=0;i<arr.length;i++)
       {
           for(int j=0;j<arr[0].length;j++)
           {
               sumRow+=arr[i][j];
           }
           if(sumRow!=0)
           {
               for(int k=0;k<arr[0].length;k++)
               {
                   b[i-x][k]=arr[i][k];
               }
           }
           else
           {
               x++;
           }
           sumRow=0;
       }
 
       int sumCol=0,y=0,temp=0;
       for(int i=0;i<arr.length;i++)
       {
           for(int j=0;j<arr[0].length-x;j++)
           {
               sumCol+=b[j][i];
           }
 
           if(sumCol!=0)
           {
               for(int k=0;k<arr[0].length-x;k++)
               {
                   if(temp==0)
                   {
                       c[k][i]=b[k][i];
                   }
                   if(temp==1 && arr[0].length>3)
                   {
                       c[k][i]=b[k][i];
                   }
               }
           }
           else
           {
               for(int k=0;k<arr[0].length-x;k++)
               {
                   c[k][i]=b[k][i+1];
                   temp=1;
               }
           }
           sumCol=0;
       }
 
 
       InputOutputStreamExam.writeToTxt(arr, c, y, temp,  x);
Функция вывода в файл:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 public static void writeToTxt (Integer [][] arr, int [][] c, int y, int temp, int x) {
        try {
            System.out.println("Запись...");
            File file1 = new File("вывод.txt");
            PrintWriter pw = new PrintWriter(file1);
 
            for(int i=0;i<arr.length-x;i++)
            {
                for(int j=0;j<arr[0].length-y-temp;j++)
                {
 
                    pw.print(c[i][j]+"\t");
                }
                pw.println();
            }
 
            pw.close();
            System.out.println("Данные записаны в файл");
        }catch(IOException ex){
            System.out.println(ex.getMessage());
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2021, 18:32
Ответы с готовыми решениями:

Удаление строк и столбцов в двумерном массиве
Задание: В двумерном массиве удалить строку (столбец) с заданным номером. Строки и столбцы вводятся когда уже запускается форма. ...

Удаление строк и столбцов в двумерном массиве
Подключая только модули iostream,conio,math. Уплотнить заданую матрицу А, удаляя из нее сроки и столбцы заполненные нулями.

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

2
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.05.2021, 18:41
1) находишь индексы строк, которые надо удалить
Т.е. пишешь метод boolean[] rowsShouldBeDeleted(int[][] array)
Вернет массив размера n, где n - количество строк, true - если строку надо удалить
2) такой же метод для столбцов
3) по полученным массивам считаем высоту и ширину результирующего массива
4) создании новый массив
5) переписываем в него элементы из старого, если их индексы не входят в найденные массивы
2
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
05.05.2021, 18:55
Цитата Сообщение от maria484 Посмотреть сообщение
Со строками проблем нет.
Можно создать функцию переворота(Тип строки станут столбцами и наоборот):
1)Удалить нулевые строки
2)Перевернуть
3)Еще разок удалить строки
4)Перевернуть
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2021, 18:55
Помогаю со студенческими работами здесь

удаление нулевых строк и столбцов
помогите, плиз, написать функцию или просто код для main, которая удаляет нулевые строки и столбцы из матрицы nхn. матрица не динамическая ...

Удаление столбцов в двумерном массиве
Здравствуйте. мне нужно написать программу: Ввести двухмерный массив A и одномерный массив B. Из массива A удалить те столбцы, в которых...

Процедура удаления всех нулевых строк в двумерном вещественном массиве
Написать процедуру удаления всех нулевых строк в двумерном вещественном массиве

Удаление всех нулевых строк и столбцов
Добрый день! Помогите, пожалуйста. Задача простая, но что-то я зациклилась... Есть матрица T (допустим, 30х30, хотя размер может...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru