Всем кто знает програмирование
24 Декабря 2024, 02:38:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: ВНИМАНИЕ Почта на домене 2126.ru прекращает свою работу
   Начало   Главная Поиск Правила Камасутра Блоги Чат (1) Галерея Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Всем кто знает програмирование  (Прочитано 806 раз)
0 Пользователей и 1 Гость смотрят эту тему.
svitik ТС
Частый гость
***

Карма +0/-0
Offline Offline

Сообщений: 209

Воронеж

« : 14 Мая 2005, 18:23:36 »

Нужна помощь. Попросили поискать в инете задачку по Visual Basic а негде нету. Задача следуещего плана даны два массива X и Y. В каждом массиве найти max и min. Если элементы между max и min  двух массиво равны , то поменять в каждом массиве местами max  и min.
Всем кто ответит и помогет огромное спасибо:D
Записан

Недостаточно рано встать, надо еще и проснуться.
Ветеран
Редкий гость
**

Карма +0/-0
Offline Offline

Сообщений: 81

г.Омск

« Ответ #1 : 14 Мая 2005, 19:07:01 »

Могу сообщить только идею алгоритма.
 Задачу можно решить за один цикл, но лучше если задача не для олимпиады сделать по циклу для каждого массива, т.к. количество элементов массива может быть различным (X не равно Y).
 Необходимо создать цикл от 1 до наибольшего (X или Y) для данного массива. Далее ввести переменные maxX  minX  maxY  minY (для каждого массива соответственно) , а переменную цикла обозначить допустим за i  .Кроме этого за переменную jX и jY  обозначить порядковый номер нужного элемента.
 Далее возьмем за идею, что первый элемент массива X(1) самый максимальный. Его и присвоим переменной MaxX (до входа в цикл). Соответственно также для MinX. Дальше после входа в цикл от 2 до X после увеличения счетчика цикла i на единицу проходим цикл еще раз и проверяем выполняются ли условие X(i) > MaxX Если да, то идем по ветке обхода, где в переменную MaxX запишем X(i) Аналогично для Xmin. Кроме этого в переменную jX при выполнении условия X(i) > MaxX записываем порядковый номер этого элемента.
 В итоге, у нас в нужных переменных будут максимальное значение в массиве, минимальное значение в массиве и порядковые номера этих элементов.
 Первая часть задачи выполнена.
 Для выполнения второй части задачи необходимо создать два других аналогичных массивов X1 и Y1 и записать в них элементы массивов X и Y соответственно.
 Далее какой - либо логической переменной (да, нет) допустим G Присваиваем "правда". И проверяем ряд условий. При несовпадении хотя бы одного из них переменной G присваивается "ложь".
 1) кол-во элементов между мах и мин. в каждом массиве должно быть одинаковым, т.е. выполнялось условие (jXMax - jXMin)  должно быть равно по модулю (jYMax - jYMin)
 2) Организуем еще один цикл от 1 до кол-ва сравниваемых элементов доп. по переменной цикла k
 проверяем в цикле равенство X (k) = Y (k) если данное для каждого элемента между макс. и минимальным истинно, то оставлием переменную G без изменения. Если хоть одно не верно G:= "Правда" и досрочно выходим из цикла.
 После всего проверяем значение G Если "Правда", то меняем согласно условию задачи в каждом массиве MaxX и MinX местами. Для этого вводим третью буферную переменную T
 T:= MinX   (знак присваивания в турбопаскале)
 MinX := MaxX
 MinX := T
 Идея обмена как если нужно поменять местами в двух стаканах "молоко" и "чай" с помощью пустого третьего.
 Остается теперь реализовать данный алгоритм на любом языке программирования.
 P.S. Можно все сделать и в одном или в 2-х циклах, но это потребует колоссальных умственных затрат и возможны кучи ошибок. Алгоритм становится непонятным.
Записан
Ветеран
Редкий гость
**

Карма +0/-0
Offline Offline

Сообщений: 81

г.Омск

« Ответ #2 : 14 Мая 2005, 19:09:49 »

Возможно я немного ошибся и потребуется ввести еще какие-нибудь дополнительные переменные, но все будут схожими для каждого из массивов.
Записан
svitik ТС
Частый гость
***

Карма +0/-0
Offline Offline

Сообщений: 209

Воронеж

« Ответ #3 : 14 Мая 2005, 22:11:28 »

Спасибо и на этом;)
Записан

Недостаточно рано встать, надо еще и проснуться.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines

Яндекс.Метрика

Google последней посетил эту страницу 23 Октября 2024, 19:16:16