Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 1
Регистрация: 15.12.2010
Сообщений: 87

Поменять элементы массива местами

30.04.2019, 17:46. Показов 4582. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана прямоугольная матрица. Найти в каждой строке матрицы максимальный и минимальный элементы. Максимальный поменять с первым элементом, а минимальный – с последним элементом. Измененную матрицу вывести на экран.
Не уверен в правильности нахождения min и max. Так же не могу понять как поменять местами элементы. Подскажите хотя бы с алгоритмом работы

Кликните здесь для просмотра всего текста
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
import java.util.Scanner;
public class Кр1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Введите размер массива ");
        int b1 = sc.nextInt();
        int b2 = sc.nextInt();
        int[][] a = new int[b1][b2];
        int min = 100;
        int max = -50;
        int j;int i=0;int c =0;
        for (i = 0; i < b1; i++) {
            for (j = 0; j < b2; j++) {
                a[i][j] = (int) (Math.random() * (150 + 1)) - 50;
                if (min >= a[i][j])
                    min = a[i][j];
                if (max <= a[i][j])
                    max = a[i][j];
                System.out.print(a[i][j] + "\t");
            }
            System.out.println();
        }
        System.out.println();
        for (i = 0; i < b1; i++) {
            for (j = 0; j < b2; j++) {
                    System.out.print(a[i][j] + "\t");
                }
            System.out.println();
            }
            }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2019, 17:46
Ответы с готовыми решениями:

Поменять местами элементы массива
Приведите фрагмент кода, меняющий местами i-ый и j-ый элементы массива.

Поменять местами элементы массива
В двумерном массиве, состоящем из целочисленных элементов, поменять местами (обмен проводить только в том случае, если оба указанных...

Как поменять элементы массива местами?
Как отсортировать массив чисел по возрастанию? пересмотрел кучу примеров и все равно ничего не понял, помогите пожалуйста public...

10
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
30.04.2019, 18:28
Нужно сохранять индексы минимального и максимального, а не только значения. Потом эти индексы использовать для обмена. А поменять в чём сложность? Записать нулевой элемент по индексу максимального (индекс же сохранён), а значение переменной max в a[i][0]

Кстати тут ищется последний максимальный элемент (и минимальный), я думаю это не требуется и надо искать первый - т.е. заменить нестрогие неравенства на строгие.

Ещё тут "особые случаи" могут быть - когда максимальные элементы уже в крайних элементах массива, надо убедиться что в таком случае всё будет правильно работать.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
30.04.2019, 22:44
Лучший ответ Сообщение было отмечено Ilya123 как решение

Решение

Ilya123,

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
import java.util.Random;
 
public class Start {
    public static void main(String[] args) {
        final int SIZE = 10;
        Random random = new Random();           
        
        int[][] array = new int[SIZE][SIZE];
        
        for (int i = 0; i < SIZE; i++) {
            for (int j = 0; j < SIZE; j++) {
                array[i][j] = random.nextInt(100);
                
                System.out.printf("%3d ", array[i][j]);
            }
            System.out.println();
        }   
        
        System.out.println();
        
        for (int i = 0; i < SIZE; i++) {
            int min = 100;
            int max = 0;
            int iMin = 0;
            int iMax = 0;
            
            for (int j = 0; j < SIZE; j++) {
                if (array[i][j] < min) {
                    min  = array[i][j];
                    iMin = j; 
                }
                else {
                    if (array[i][j] > max) {
                        max  = array[i][j];
                        iMax = j; 
                    }
                }
            }
            
            int tmp = array[i][0];
            array[i][0] = max;
            array[i][iMax] = tmp;
            
            tmp = array[i][SIZE - 1];
            array[i][SIZE - 1] = min;
            array[i][iMin] = tmp;
            
            System.out.printf("Min: %3d Max: %3d --> ", min, max);
            
            for (int j = 0; j < SIZE; j++) {                
                System.out.printf("%3d ", array[i][j]);
            }
            System.out.println();
        }
    }
}
1
0 / 0 / 1
Регистрация: 15.12.2010
Сообщений: 87
01.05.2019, 23:45  [ТС]
Спасибо, правда была проблема с рандомом он не хотел работать с отрицательными числами.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
01.05.2019, 23:46
Ilya123,

Java
1
array[i][j] = random.nextInt(199) - 99;
1
0 / 0 / 1
Регистрация: 15.12.2010
Сообщений: 87
01.05.2019, 23:50  [ТС]
Я переделал через
Java
1
Math.random()
Еще хотел узнать есть ли существенная разница с
Java
1
random.nextInt
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
01.05.2019, 23:52
Но тогда и это менять надо:

Java
1
            int max = -100;
Добавлено через 1 минуту
Ilya123,
Java
1
Math.random()
всё равно вызывает Random():

Java
1
2
3
4
5
6
7
8
...
    public static double random() {
        return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
    }
...
    private static final class RandomNumberGeneratorHolder {
        static final Random randomNumberGenerator = new Random();  // <-------------------
    }
1
0 / 0 / 1
Регистрация: 15.12.2010
Сообщений: 87
01.05.2019, 23:53  [ТС]
В начале так и делал, но он не менял отрицательные числа. при
Java
1
int max = 0;
. Как ни странно результат оказался правильным
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
01.05.2019, 23:56
Лучший ответ Сообщение было отмечено Ilya123 как решение

Решение

Цитата Сообщение от Ilya123 Посмотреть сообщение
Как ни странно результат оказался правильным
Просто совпадение.

Для узнавание какое число минимальное, надо указать в переменной максимальное да бы не упустить ни одно меньше.

То же самое для максимального. Что б узнать его, надо изначально указать минимальное.
1
0 / 0 / 1
Регистрация: 15.12.2010
Сообщений: 87
02.05.2019, 00:03  [ТС]
Да, да вы правы. Полностью согласен диапазон от -50 до 100. Но результат вот такой:
Java
1
2
            int min = 101;
            int max = -50;
.Внимательно посмотрев, увидел что и при =0, такое выдает. А я уж обрадовался
Миниатюры
Поменять элементы массива местами  
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
02.05.2019, 00:07
Цитата Сообщение от Ilya123 Посмотреть сообщение
диапазон от -50 до 100
-50 не самое маленькое число, т.к. random.nextInt(199) - 99; даёт диапазон от -100 до +100.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2019, 00:07
Помогаю со студенческими работами здесь

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

Как поменять местами элементы массива объектов?
Как поменять местами элементы массива объектов?

Поменять местами первый и последний элементы массива
Задан массив, например, а = {5,13,21,37,43,55,62,78,84,93}. Поменять в нем местами первый и последний элементы. (программа должна работать...

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

Попарно поменять элементы местами
Помогите Пожалуйста написать программу: Дан массив a вещественных чисел. Попарно поменять местами соседние элементы: a должен поменяться...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru