Как поменять 2 массива местами c
Перейти к содержимому

Как поменять 2 массива местами c

  • автор:

Информатика. 10 класс (Повышенный уровень)

Среди задач преобразования элементов массива можно выделить задачи следующих типов:

1. Изменение элементов массива в зависимости от условий.
2. Обмен местами элементов в массиве.
3. Удаление элемента из массива.
4. Вставка элемента в массив.

Некоторые из задач преобразования массивов встречаются очень часто. Поэтому в класс vector были добавлены функции, позволяющие преобразовывать массивы.

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

Как поменять 2 массива местами c

как поменять элементы массива местами (Си)

самый простой способ для понимания это представить себе переменную в виде стакана с водой

итого мы имеем 2 стака с жидкостями которые нужно поменять местами (содержимое стакана)

как бы вы сделали это в реальной жизни? так же и в программе! — посредством третьего стакана!

int a = 10;
int b = 20;
int temp; //наш третий стакан — посредник

temp = a; //перелили в третий стакан содержимое первого
a = b; //первый у нас освободился? заполняем его содержимым второго
b = temp; //второй освободился? заполняем его содержимым третьего (а там что?)

Самый простой способ поменять местами строковые элементы массива?

Может быть в Js есть более элегантный способ? (ну как функция .SORT для сортировки) Или это единственный способ?

Отслеживать
123k 24 24 золотых знака 126 126 серебряных знаков 303 303 бронзовых знака
задан 15 янв 2017 в 23:45
Менеджер Типографии Менеджер Типографии
587 2 2 золотых знака 5 5 серебряных знаков 18 18 бронзовых знаков

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

В современном js такой способ есть, называется деструктуризирующее присваивание (destructuring assignment):

[mass[1], mass[3]] = [mass[3], mass[1]]; 
[a, b] = [b, a]; 

Вот только IE11 и Андроиды так не умеют из коробки, если хочется писать так чтобы работало везде — придется транспилировать.

Еще есть везде-рабочий «ниндзя» способ, за который в приличном обществе бьют ногами за нечитаемость:

mass[1] = [mass[3], mass[3] = mass[1]][0]; 
a = [b, b = a][0]; 

Отслеживать
ответ дан 15 янв 2017 в 23:57
Утка Учится Укрываться Утка Учится Укрываться
7,147 3 3 золотых знака 29 29 серебряных знаков 56 56 бронзовых знаков
Отлично объяснили. Спасибо.
16 янв 2017 в 1:03

вот ещё одна старая рабочая «нидзя» для коррекции массива

var arr = [2,1,3,5,4,0] arr[1] = arr.splice(0,1, arr[1])[0] //console.log(arr) 

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

function correctArr(_arr, _param) < /* коррекция элементов массива по паре индекса * _arr -- массив требующий коррекции * _param -- пара [n1,n2] -- индексы массива для взаимной перестановки */ _arr[_param[1]] = _arr.splice(_param[0],1, _arr[_param[1]])[0] >//correctArr(arr, [1,0]) //console.log(arr.toString()) 

можно написать метод c циклом с обращением к функции, и возвращением нового массива

function corrects_Arr() < var _param, _arr = arguments[0].slice(), _arguments = Array.prototype.slice.call(arguments, 1) for(var i = 0; i < _arguments.length; i++)< correctArr(_arr, _arguments[i]) >return _arr > /* console.log( arr.toString() +" "+ "инспектируемый массив остался прежним" +"\n"+ corrects_Arr(arr, [0,1], [4,3]).toString() +" "+ "вернули скорректированный массив" ) */ 

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

Array.prototype["myCorrects"] = function(_param) < if(_param)< this[_param[1]] = this.splice(_param[0],1, this[_param[1]])[0] this.constructor.prototype.myCorrects.apply(this, Array.prototype.slice.call(arguments, 1)) >return this > arr = arr.myCorrects([0,1], [3,4]).splice(-1,1).concat(arr) console.log(arr.toString()) 

Скажите пж, как поменять элементы массива местами??c++

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

#include
using namespace std;
int main ()
<
const int size=5;
int ar[size]=;

int max=ar[0];
int min=ar[0];

Лучший ответ

Минимальный в новую переменную,
Максимальный на место минимального. Переменную с минимальным на место максимального
Когда ищешь минимум и максимум, введи 2 переменные, в которые сохрани адрес минимума и максимума.

Остальные ответы

нужно запомнить индекс макс и мин элементов в момент когда они обнаружаются и потом через переменную переприсвоить
int temp=a[k];
a[k]=a[j];
a[j]=temp;

где k и j индексы минимального и максимального элементов

Минимальному значению, присвоbnm значение максимального элемента, а максимальному надо присвоить значение (место в массиве) минимального. Затем правильно вывести значение на экран через writeln.
Примерно так:
min:=a(название массива) [3;4] ->это максимум допустим.
max:=a[1;2] ->допустим это минимум

Ahmed Dzhangarov, вывод на экран через writeln на си? УмнО! 😀
Вообще, числовые переменные можно поменять местами без промежуточной (как у Upi omg) переменной:
a=a+b
b=a-b
a=a-b
Не утверждаю, что это правильно и идеально — просто интересный вариант 🙂
Пример:
a=10;
b=17;
a=a+b; // a= 27
b=a-b; // b= 10
a=a-b; // a=17

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *