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

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

  • автор:

Developing.ru

Есть задача:Найти макс. элемент одномерного массива, минимальный и поменять местами максимальный и минимальный элемент одномерного массива.
Так, вот. Как поменять их местами? Поможет кто-нибудь реализовать это?
Собственно сам код:
З.Ы. —

//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include using namespace std; //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) < int num=0; int max=0; int min=0; int i=0; int t=0; int chislo=0; int a1, b1; srand( time( 0 ) ); cout>num; cout>a1; cout>b1; int *a = new int[num]; cout max = a[0]; min = a[0]; for (int i; imax) max=a[i]; if (a[i] cout>t; if (t==1) < coutif (t==2) < coutif (t==3) < //(Тут действие) >cout //--------------------------------------------------------------------------- 

Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:

1. Вопрос на засыпку — сколько целых чисел в диапазоне от A до B (границы включены). Немного подумав, можно выдать ответ. Это (B — A + 1). Правильность формулы несложно проверить на конкретных данных. Теперь дальше. Функция rand() возвращает случайное больше число. Чтобы получить число от нуля до N-1 нужно взять остаток от деления rand() на N. Отсюда следует, что случайное число от A до B можно получить по формуле (A + rand() % (B — A + 1)). У тебя же формула не такая.

2. Вот этот цикл будет работать непредсказуемо:

for (int i; i 

Почему? Потому, что переменная i не инициализирована, а коль так (по причине того, что она создана на стеке), в ней будет некий мусор, который вряд ли будет равен нулю. Правильным будет инициализировать i нулём.

3. Та часть задания, которая не доделана. Чтобы поменять местами элементы массива нужно запомнить не их значения, как у тебя сейчас сделано, а их индексы. Индекс - это куда более информативное значение. Зная его, можно легко осуществить обмен, плюс значения самого элемента массива тоже никто не мешает получить, вызвав оператор []. Предположим, мы нашли индекс максимального элемента max_index и индекс минимального элемента min_index. Тогда обмен будет делаться очень просто:

int temp = a[max_index]; a[max_index] = a[min_index]; a[min_index] = temp; 

Теперь осталось только подправить цикл выше, чтобы он искал не значения, а индексы. А также подправить вывод максимального и минимального значения элемента. Это оставляю на самостоятельную работу.

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

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

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

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

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

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

Массивы

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

Procedure Zamena (Var m : MyArray; n:integer);
Var
i : integer;
Begin
for i := 1 to n do
if m[i] < 0
then
m[i] := -m[i];
End;

Нахождение номеров элементов с заданным свойством

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

Procedure PoiskChet(m : MyArray; n:integer);
Var
i : integer;
Begin
for i := 1 to n do
if m[i] mod 2 =0
then
Write(i:5);
End;

Нахождение количества элементов с заданным свойством

Задача. Найти количество положительных и отрицательных элементов в данном массиве. Опишем процедуру, которой будем отправлять параметры - массив, количество элементов в массиве и два счетчика, один для элементов, больших нуля, а второй - для отрицательных элементов.

Procedure OtrPol(m : MyArray; n:integer; Var k1, k2 : Integer);
Var
i : integer;
Begin
k1 :=0;
k2 :=0;
for i := 1 to n do
if m[i] > 0
then
Inc(k1)
else
if m[i] < 0
then
Inc(k2);
End;

Есть ли в данном массиве элементы с данным свойством?

Для решения таких задач удобнее использовать циклы с условиями и составлять функции, результат которых имеет логический тип. Задача. Есть ли отрицательный элемент в массиве? Начинаем с первого элемента (i=1). Пока не просмотрен последний элемент (i<=n) и не найден отрицательный (m[i]>=0), будем переходить к следующему (Inc(i)). Таким образом, мы закончим просмотр массива в одном из двух случаев: первый – просмотрели все элементы и не нашли отрицательный, тогда i>n, второй – нашли нужный, при этом i

Function Control (m : MyArray; n:integer) : Boolean;
Var
i : integer;
Begin
i := 1;
while (i<=n) and (m[i]>0) do
Inc(i);
Control := (i<=n);
End;

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

Также поменять два элемента местами можно следующим способом:

 $a = [1, 2]; [$a[1], $a[0]] = $a; print_r($a); // [ // [0] => 2 // [1] => 1 // ] 

05 марта 2022

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

 $items = [1, 'two', false]; // Поменяем местами первый и последний элемент // Сохраняем первый элемент в переменную $temp $temp = $items[0]; // Заменяем первый элемент массива последним $items[0] = $items[2]; // А теперь заменяем последний элемент значением из переменной $temp $items[2] = $temp; // Итоговый массив // [ // false, // "two", // 1, // ] 

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

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