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

Замена элементов в массиве

16.06.2016, 15:41. Показов 7287. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет
помогите решить небольшую проблему
Создаю двумерный массив, вывожу его на экран, после чего ищу в каждой строке наибольший элемент и ставлю его на место первого, а первый нужно поставить на его место, но почему то самый большой элемент ставит на место первого, а первый не ставится вместо него и там остаётся тот же наибольший элемент, по сути идёт замена элемента
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
import java.util.Arrays;
import java.util.List;
import java.util.Random;
 
public class massiv {
    public static void main(String[] args) {
 
        int a = 6, b = 7, c = 0, d = 0, max = 0, k = 0;
        int m[][] = new int[a][b];
        int n[] = new int[b];
 
        for (int i=0;i < a;i++){
            for (int j=0;j < b;j++){
                m[i][j]=(int)(Math.random()*10);
            }
        }
        for (int i=0;i < a;i++){
            for (int j=0;j < b;j++){
                System.out.print(m[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println();
 
        for (int i = 0; i<a; i++) {
            max = m[i][c]; // заносим в макс первый элемент, что бы с ним сравнивать
            for (int j = 0; j < b; j++) {
                if (m[i][j] > max){
                    max = m[i][j]; //заносим в макс новый элемент
                    k = j; //заносим индекс этого элемента
                }
                if (c != k){
                    int p = m[i][c];  // заносим в новую переменную элемент стоящий на первой позиции
                    m[i][c] = max; // заносим на место первого элемент из макс
                    m[i][k] = p; // заносим первый элемент на позицию нибольшего элемента
                }
            }
        }
 
        for (int i=0;i < a;i++){
            for (int j=0;j < b;j++){
                System.out.print(m[i][j]+" ");
            }
            System.out.println();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2016, 15:41
Ответы с готовыми решениями:

Замена символов в массиве
Заменить последние три символа слов, имеющих выбранную длину на символ &quot;$&quot;. Вот код, который у...

Замена ветви в массиве
Добрый день имеется два массива один massiv и второй массив massiv1. первый заполнен числами...

Поиск и различная замена в массиве строк
Добрый день. Есть массив строк, это IP адреса, некоторые из них с маской сети через &quot;/&quot;,...

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

2
155 / 154 / 53
Регистрация: 30.04.2016
Сообщений: 321
16.06.2016, 16:08 2
У тебя в цикле замена максимум должна происходить когда ты всю строку прошел, а у тебя оно происходит на каждом шаге итерации.
И переменным бы давать осмысленные имена и читалось бы хоть как-то и убрал бы лишнее, вот я не понял зачем переменная c если она всегда 0.
0
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
16.06.2016, 17:13 3
JanCover, даже не знаю чего бы прокомментировать... Одним словом: смотрите, сравнивайте, ищите ошибки...
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
class massiv {
    static int[][] m;
 
    public static void main(String[] args) {
 
        int a = 6, b = 7, c = 0, d = 0;
        m = new int[a][b];
        int n[] = new int[b];
 
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                m[i][j] = (int) (Math.random() * 10);
            }
        }
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                System.out.print(m[i][j] + " ");
            }
            System.out.println();
        }
        System.out.println();
 
        for (int i = 0; i < a; i++) {
            int max = Integer.MIN_VALUE;
            int maxI = 0;
            int maxJ = 0; // заносим в макс первый элемент, что бы с ним сравнивать
            for (int j = 0; j < b; j++) {
                if (m[i][j] > max) {
                    max = m[i][j]; //заносим в макс новый элемент
                    maxI = i;
                    maxJ = j; //заносим индекс этого элемента
                }
            }
            int p = m[i][0];  // заносим в новую переменную элемент стоящий на первой позиции
            m[i][0] = max; // заносим на место первого элемент из макс
            m[maxI][maxJ] = p; // заносим первый элемент на позицию нибольшего элемента
        }
 
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                System.out.print(m[i][j] + " ");
            }
            System.out.println();
        }
    }
}
Хотя я бы написал как-нибудь вот этак:
Кликните здесь для просмотра всего текста
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
class HelloArray {
    public static int[][] createMatrix(int n, int m) {
        int[][] array = new int[n][m];
        for (int[] temp : array) {
            for (int i = 0; i < temp.length; i++) {
                temp[i] = (int) (Math.random() * 30 - 10);
            }
        }
        return array;
    }
 
    public static int[][] replaceElements(int[][] array) {
        for (int[] temp : array) {
            int max = Integer.MIN_VALUE, indexMax = 0;
            for (int i = 0; i < temp.length; i++) {
                if (temp[i] > max) {
                    max = temp[i];
                    indexMax = i;
                }
            }
            int tmp = temp[0];
            temp[0] = temp[indexMax];
            temp[indexMax] = tmp;
        }
        return array;
    }
 
    public static void showMatrix(int[][] array) {
        for (int[] temp : array) {
            for (int tmp : temp) {
                System.out.printf("%4d", tmp);
            }
            System.out.println();
        }
    }
 
    public static void main(String[] args) {
        int[][] array = createMatrix(6, 8);
        showMatrix(array);
        System.out.println("===================================");
        showMatrix(replaceElements(array));
    }
}
0
16.06.2016, 17:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2016, 17:13
Помогаю со студенческими работами здесь

В одномерном массиве, состоящем из n вещественных элементов,вычислить количество элементов массива, меньших С
В одномерном массиве, состоящем из n вещественных элементов,вычислить 1. Количество элементов...

Задан массив из N элементов действительных чисел. Найти в этом массиве произведение элементов массива
Задан массив из N элементов действительных чисел. Найти в этом массиве произведение элементов...

В массиве из 16 элементов найти среднее арифметическое положительных элементов
В массиве из 16 элементов найти среднее арифметическое положительных элементов.

Замена элементов массива
Программа генерирует массив случайных чисел, а потом некоторые элементы массива меняет на нули так...


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

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