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

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

  • автор:

Как поменять два массива местами?

Пусть дан массив из n элементов и массив из m элементов.
Нужно придумать алгоритм, по которому элементы второго массива заполнят первый массив, а элементы первого массива — второй. То есть нужно поменять местами два отрезка. Пример: —> Пользоваться новой вспомогательной переменной или массивом нельзя. Имеются только параметры n, m и элементы массивов. Обновление Мне удалось придумать, как менять местами два элемента без помощи новой переменной, но для меня остается загадкой то, как поменять их в угодном мне порядке, чтобы получились нужные массивы.

Отслеживать
11 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
задан 15 сен 2014 в 16:31
1 1 1 серебряный знак 1 1 бронзовый знак

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

15 сен 2014 в 16:32

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

15 сен 2014 в 16:40

У тебя есть длинна массивов. меняешь числа 1-4-7, 2-5-8 по кругу, пока не перенесутся элементы от(m-n)до m на первые места. после можно расставить на нужные позиции.

16 сен 2014 в 19:53

Точнее, сначала обмен между массивами (по размеру меньшего), затем циклический сдвиг влево большего массива на размер меньшего (тоже можно выполнять обменом соседних элементов в 2-х вложенных циклах). — @jeyando, для обмена 2-х элементов без промежуточной переменной Вы, я думаю, использовали операцию «XOR»?

Как поменять местами соседние элементы одномерного массива?

60564c08c4534686946221.png

Есть процедура, которая меняет значения переменных местами: Как с помощью неё поменять соседние элементы одномерного массива, наполненного десятью случайными двухзначными числами?

  • Вопрос задан более трёх лет назад
  • 418 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 1

BasiC2k

.NET developer (open to job offers)

Перебираете элементы массива через цикл с шагом:

For i = 0 to Ubound(array) Step 2

Т.е парами. И в цикле меняете значения у элементов:

с помощью временной переменной, как в Вашем примере.
Желательно перед этим проверить, что массив имеет четное количество элементов.

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

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

Для обмена элементов можно использовать встроенную функцию swap: swap(a[i], a[k] ).

Пример 14.2. Задан одномерный массив целых чисел. Поменять местами максимальный и минимальный элементы массива. Предполагается, что каждый из них встречается в массиве только один раз.

Этапы выполнения задания

I. Исходные данные: одномерный массив а , количество элементов n .

II. Результат: преобразованный массив a .

III. Алгоритм решения задачи.

1. Ввод исходных данных.
2. Найдем максимальный элемент массива и его индекс (n_max) .
3. Найдем минимальный элемент массива и его индекс (n_min) .
4. Поменяем местами элементы, стоящие на местах n_max и n_min .
5. Вывод результата.

IV. Описание переменных: n, n_min, n_max – int, а – vector .

Пример 14.3. Задан одномерный массив целых чисел. Циклически сдвинуть все элементы массива влево на 1, первый на последнее место. Например, массив 1 2 3 4 5 будет преобразован в 2 3 4 5 1.

Этапы выполнения задания

I. Исходные данные: одномерный массив а , количество элементов n .

II. Результат: преобразованный массив a .

III. Алгоритм решения задачи.Описание переменных: n – int, а – vector .

1. Ввод исходных данных.
2. В цикле осуществим обмен соседних элементов.
3. Вывод результата.

Решением задачи 14.3 может быть также следующий алгоритм (пример 14.4):

1. Сохраним значение первого элемента в буферной переменной.
2. В цикле сдвинем все элементы на 1 влево.
3. Запишем значение буфера на последнее место в массиве.

Если в массив добавить еще один элемент в конце, то его можно использовать в качестве буферной переменной. В этом случае в цикле нужно будет сделать на 1 сдвиг больше. Затем удалить последний элемент. Удалить последний элемент можно с помощью команды pop_back() .

Осуществим обмен элементов следующим образом:

Тогда мы потеряем значение элемента, стоящего изначально на месте a[i] , и получим два элемента со значением, равным a[k] .

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

Author24 — интернет-сервис помощи студентам

Как поменять местами два элемента массива char
Есть два элемента массива типа char(не по одному символу), нужно поменять их местами. Как это.

Как поменять элементы массива местами
Например есть массив A= Надо получить массив A=

В массиве поменять местами 2 элемента: первый положительный и последний отрицательный
Помогите пожалуйста написать: В заданном одномерном массиве целого типа поменять местами.

Поменять в массиве местами первые два элемента с последними двумя
Динамическая память. Одномерный массив. Дан массив целых чисел. Поменять местами первые два.

2307 / 1133 / 702
Регистрация: 25.04.2016
Сообщений: 3,229

1 2 3
int tmp = array[1]; array[1] = array[4]; array[4] = tmp;

Регистрация: 18.12.2020
Сообщений: 6

я так пытался, а так же я не зря помянул то что массив был составлен rand, то есть у меня есть 2 переменные, которые меняются с каждой сборкой и это не обязательно 1 и 4е элементы

2456 / 1061 / 481
Регистрация: 17.11.2018
Сообщений: 2,740

ЦитатаСообщение от Muks Посмотреть сообщение

например, в массиве <2,4,5,7,3>, составленным rand, поменять местами 4 и 3

Muks, следи за руками. В твоём посте всего несколько слов. Но даже из этих слов понять ничего не возможно.
Вот ты пишешь: поменять местами 4 и 3 . Что ты имеешь ввиду? Элементы со значениями 4 и 3?
Элементы с порядковыми номерами 4 и 3? Или элементы с индексами 4 и 3? Все варианты подходят под твой примерчик.
И что, по-твоему, человек, который хочет тебе помочь, должен делать? Ты лучше, вместо того, что бы писать всякую ерунду, никому не понятную, напиши условие задачи, приведи примеры. Если есть уже написанный код или его часть, тоже давай сюда. Тогда людям будет проще тебе помочь. И гораздо быстрее, к тому же.

2307 / 1133 / 702
Регистрация: 25.04.2016
Сообщений: 3,229

Лучший ответ

Сообщение было отмечено Muks как решение

Решение

Если я правильно понял:

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 61 62 63 64
#include #include #include /* Размер массива: */ #define N 5 void swap_numbers (int *, int *); // Меняет два целых значения местами void random_array (int [], int); // Заполняет массив случайными от 1 до N void printf_array (int [], int); // Выводит массив на экран int search_value (int [], int, int); // Находит индекс элемента в массиве int main (void) { int a[N]; srand( (unsigned)time(NULL)/2 ); // новая точка отсчета случайных random_array(a, N); // заполняем массив int first = 0; // первое число для перестановки int second = 0; // второе число для перестановки while (first == second) { first = 1 + rand() %N; // генерируем несовпадающие second = 1 + rand() %N; // случайные числа от 1 до N } printf("a = %d\n", first); // выводим их на экран printf("b = %d\n\n", second); printf_array(a, N); // выводим массив на экран int f_pos = search_value(a, N, first); // позиция первого числа в массиве int s_pos = search_value(a, N, second); // позиция второго числа в массиве if (f_pos >= 0 && s_pos >= 0 && f_pos != s_pos) // меняем местами swap_numbers(&a[f_pos], &a[s_pos]); printf_array(a, N); // выводим получившийся массив return 0; } // ------------------------------------------------------------- void swap_numbers (int * a, int * b) { int tmp = *a; *a = *b; *b = tmp; } // ------------------------------------------------------------- void random_array (int a[], int size) { int i; for (i = 0; i  size; i++) // Заполняем массив по a[i] = i+1; // порядку от 1 до size for (i = size-1; i > 0; i--) // Перемешиваем по алгоритму swap_numbers(&a[i], &a[rand() %(i+1)]); // Ричарда Дурштенфельда } // ------------------------------------------------------------- void printf_array (int a[], int size) { for (int i = 0; i  size; i++) printf("%-2d", a[i]); puts(""); } // ------------------------------------------------------------- int search_value (int a[], int size, int value) { int position = -1; // Если value в массиве не окажется, вернем -1 for (int i = 0; i  size && position  0; i++) if (a[i] == value) position = i; return position; } // -------------------------------------------------------------

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Поменять местами последние 2 отрицательных элемента в матрице, с помощью указателей
Нужно поменять местами последние 2 отрицательных эл-та в матрице,с помощью указателей. Вот что у.

Поменять местами значение первого четного элемента массива со значением последнего нечетного элемента массива
34. Дан массив С(30). Поменять местами значение первого четного элемента массива со значением.

Поменять местами значение первого четного элемента массива со значением последнего нечетного элемента массива.
Дан массив С(30). Поменять местами значение первого четного элемента массива со значением.

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

Поменять местами два элемента массива
помогите плиз: поменять местами два элемента массива!

Или воспользуйтесь поиском по форуму:

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

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