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, // ]