Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
2 / 2 / 5
Регистрация: 31.03.2014
Сообщений: 102
1

Подсчитать элементы столбца матрицы

04.05.2014, 11:35. Показов 5955. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задание: Дана матрица А размером п х т. Определить k – количество особых элементов массива А, считая его элемент особым, если он больше суммы остальных элементов его столбца. Собственно, из этого вытекает и вопрос: строки умею выводить-считать, как находить столбцы?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2014, 11:35
Ответы с готовыми решениями:

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца
Разделить элементы каждого столбца заданной матрицы на последний элемент столбца. Полученную...

Дана целочисленная матрица и натуральное число к . выяснить все ли элементы к-того столбца матрицы четные
дана целочисленная матрица M*N и натуральное число к . выяснить все ли элементы к-того столбца...

Разделить элементы каждого столбца матрицы на максимальный элемент этого столбца.
: Дано матрицу действительных чисел. Составить схему алгоритма и программу обработки двумерного...

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца
Разделить элементы каждого столбца заданной матрицы на последний элемент столбца.

10
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
04.05.2014, 13:00 2
Цитата Сообщение от Edward111 Посмотреть сообщение
как находить столбцы?
так же как и строки, только индексы местами поменяй при обращении к массиву...
по строкам ты идёшь как....

Java
1
2
3
....
arr[i][j]
....
а будет
Java
1
2
3
....
arr[j][i]
....
1
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
04.05.2014, 16:56 3
Цитата Сообщение от Edward111 Посмотреть сообщение
строки умею выводить-считать, как находить столбцы?
если покажете как Вы это делаете, будет более понятен Ваш вопрос
0
2 / 2 / 5
Регистрация: 31.03.2014
Сообщений: 102
04.05.2014, 17:49  [ТС] 4
Понятно. Собственно, всё просто. Если матрица квадратная, то всё выводится:

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
import static java.lang.System.out;
public class OsobyElement {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        out.println("Создание и вывод массива случайных чисел по строкам");     
int[][]k = new int[3][3];
for(int i = 0; i<k.length; i++){
    for(int j = 0; j<k[i].length; j++){
        k[i][j] = (int)(Math.random()*12);
        out.print(k[i][j]+"  ");
    }
    out.println();
    }
out.println();
out.println("Вывод столбцов");
for(int i = 0; i<k.length; i++){
    for(int j = 0; j<k[i].length; j++){
        out.print(k[j][i]+"  ");
    }
    out.println();
    }
    
}
}
Но если попытаться изменить число строк или столбцов, например new
Java
1
int[3][4]
или
Java
1
int[4][3]
, то сразу ошибка:
Java
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
Если сделать k.length-1 в любом цикле второго блока,
то не будет либо строки либо столбца последних
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
04.05.2014, 18:27 5
Лучший ответ Сообщение было отмечено Edward111 как решение

Решение

если длина всех строк одинакова, то
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        out.println("Создание и вывод массива случайных чисел по строкам");     
int[][]k = new int[3][8];
for(int i = 0; i < k.length; i++){
    for(int j = 0; j < k[i].length; j++){
        k[i][j] = (int)(Math.random()*12);
        out.print(k[i][j]+"  ");
    }
    out.println();
    }
 
out.println();
 
out.println("Вывод столбцов");
 
for(int j = 0; j < k[0].length; j++){
    for(int i = 0; i < k.length; i++){
 
        out.print(k[i][j] + " ");
    }
        out.println();
 }
1
2 / 2 / 5
Регистрация: 31.03.2014
Сообщений: 102
05.05.2014, 03:31  [ТС] 6
Всё отлично работает, но вот с примитивной сортировкой столбцов никак не разберусь. Ни по возрастанию, ни по убыванию не удается мне их расставить. Код работает, но неправильно. То есть, массив создается, но не сортируется. Числа не понять куда летят.

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
import static java.lang.System.out;
public class PrimerSortSt {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         out.println("Создание и вывод массива случайных чисел по строкам");     
         int[][]k = new int[3][6];
         for(int i = 0; i < k.length; i++){
             for(int j = 0; j < k[i].length; j++){
                 k[i][j] = (int)(Math.random()*12);
                 out.print(k[i][j]+"   ");
             }
             out.println();
             }
          
         out.println();
          
         out.println("Примитивная сортировка столбцов, вывод столбцов");
          
         for(int j = 0; j < k[0].length; j++){
             for(int i = 0; i < k.length; i++){
                 for(int s = 0; s < k.length; s++){
                     for(int z = k[i].length-1; z>s ; z--){
                 if(k[0][s]<k[0][z]){
                     int m = k[0][s];
                     k[0][s] = k[0][z];
                     k[0][z] = m;
                 }
                 }
          
             }
              }
              }
         for(int i = 0; i < k[0].length; i++){
             for(int j = 0; j < k.length; j++){
                 out.print(k[j][i]+"   ");
             }
             out.println();
         }
             }
    }
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
05.05.2014, 08:31 7
тема сортировки не новая. Поищи на форуме

Где-то советовали, что проще всего сделать из 2-мерного массива 1-мерный. Отсортировать его. Затем сделать его опять 2-мерным
0
2 / 2 / 5
Регистрация: 31.03.2014
Сообщений: 102
05.05.2014, 09:29  [ТС] 8
Нашёл рабочий вариант сортировки по столбцам в интернете. Причём, работает с разным количеством элементов в строках.

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
import static java.lang.System.out;
public class PrimerSortSt {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         out.println("Создание и вывод массива случайных чисел по строкам");     
         int[][]k = new int[3][4];
         for(int i = 0; i < k.length; i++){
             for(int j = 0; j < k[i].length; j++){
                 k[i][j] = (int)(Math.random()*12);
                 out.print(k[i][j]+"   ");
             }
             out.println();
             }
          
         out.println();
         
         out.println("Примитивная сортировка столбцов");
          
         for(int l=0; l<k.length; l++){
                for(int i = 0; i < k[l].length - 1; i++){
                    for(int j = 0; j < k[l].length - i - 1; j++){
                        if(k[l][j] > k[l][j + 1]){
                            int min = k[l][j];
                            k[l][j]=k[l][j+1];
                            k[l][j + 1] = min;
                        }
                    }
                }
         }
                        
         for(int i = 0; i < k[0].length; i++){
             for(int j = 0; j < k.length; j++){
                 out.print(k[j][i]+"   ");
             }
             out.println();
         }
             }
    }
Может кто-то разъяснить этот участок кода? А тосписал без понимания...:-(
Java
1
2
3
4
5
6
7
8
9
10
11
 for(int l=0; l<k.length; l++){
                for(int i = 0; i < k[l].length - 1; i++){
                    for(int j = 0; j < k[l].length - i - 1; j++){
                        if(k[l][j] > k[l][j + 1]){
                            int min = k[l][j];
                            k[l][j]=k[l][j+1];
                            k[l][j + 1] = min;
                        }
                    }
                }
         }
0
27 / 27 / 24
Регистрация: 23.04.2011
Сообщений: 64
05.05.2014, 11:59 9
Или я задачу не понял, или это абсурдная задача:
"Определить k – количество особых элементов массива А, считая его элемент особым, если он больше суммы остальных элементов его столбца."
Пример:
3 1 3
1 2 1
5 8 1

Сумма первого столбца: 9
Т.е. сумма больше всех отдельных элементов этого столбца, так же и в других столбцах.
Задача не будет решена, т.к. особых элементов не будет найдено!
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
05.05.2014, 12:35 10
здесь ключевое слово "остальных"
т.е. в 1-ом столбце особым элементом является 5, т.к. 5 > 3 + 1

p.s. на будущее 1 вопрос - 1 тема
1
7 / 7 / 2
Регистрация: 14.12.2013
Сообщений: 94
05.05.2014, 14:38 11
Высоту столбца матрицы я всегда брал как k[0].length. если я правильно понял ваш вопрос, то решение элементарно. В контексте ООП двумерный массив представляет собой массив массивов. В своих программах при работе с матрицами делаю так
1
05.05.2014, 14:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2014, 14:38
Помогаю со студенческими работами здесь

Разделить элементы каждого столбца заданной матрицы В на последний элемент столбца
Разделить элементы каждого столбца заданной матрицы В на последний элемент столбца

Вывести все элементы k-го столбца матрицы, начиная с нижнего элемента столбца
Дан двумерный массив. Вывести на экран: 1) все элементы 3строки,начиная с последнего элемента этой...

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца
Разделить элементы каждого столбца заданной матрицы B на последний элемент столбца Удалил вопросы,...

Разделить элементы каждого столбца матрицы на максимальный элемент этого столбца
Дан массив целых чисел. Разделить элементы каждого столбца матрицы на максимальный элемент этого...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru