Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Два наименьших и два наибольших элемента 
:(
    Опции темы
vadims
Дата 8.7.2005, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Alex101
А что означает конструкция min2:=min1 xor min2 - побитовое или логическое "исключающее или" или что-то другое ???


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Alex101
Дата 8.7.2005, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 1
Всего: 10



vadims Побитовое "исключающее ИЛИ".
Надо все три строки смотреть - это обмен переменных значениями.


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Guest
Дата 8.7.2005, 11:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Akina @ 8.7.2005, 10:09)
вообще коли integer, то начать бы с

Код

min[0]=-32768
min[1]=-32768
max[0]=32767
max[1]=32767


и потом только считывание и сравнение.

Цитата(vadims @ 8.7.2005, 09:57)
Излишества на мой взгляд

не излишество, а ошибка. Если второе введенное число будет самым большим (или самым маленьким) - сбойнет.

И вправду сбой дает...
Как ты сказал наверное самый лучший вариант:
Код

uses crt;
const count_d=10;
var d,i:Integer;
    min:array [0..1]of Integer;
    max:array [0..1]of Integer;
begin
     Clrscr;
     min[0]:=maxint; min[1]:=maxint;
     max[0]:=-maxint; max[1]:=-maxint;
     Write('Введите 10 целочисленных элементов:');
     for i:=1 to count_d do begin
         Read(d);
         if (d<min[0]) then begin
            min[1]:=min[0];
            min[0]:=d;
         end
         else if (d<min[1]) and (d<>min[0]) then
                min[1]:=d;
         if (d>max[0]) then begin
           max[1]:=max[0];
           max[0]:=d;
         end
         else if (d>max[1]) and (d<>max[0]) then
               max[1]:=d;
     end;
     WriteLn('Min:',min[0]);
     WriteLn('Min:',min[1]);
     WriteLn('Max:',max[0]);
     WriteLn('Max:',max[1]);
     Readkey;
end.


Всем кто помогал большущее спасибо smile
  Вверх
Alex101
Дата 8.7.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 1
Всего: 10



Цитата
max[0]:=-maxint; max[1]:=-maxint

Лучше max[0]:=-maxint-1; max[1]:=-maxint-1;


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
vadims
Дата 8.7.2005, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Alex101 Обясни пожалуйста - никак не въеду

1. К чему эти операции ???
max1:=min2 xor max1;
min2:=min2 xor max1;
max1:=min2 xor max1

2. Чем лучше ???
max[0]:=-maxint-1; max[1]:=-maxint-1


Это сообщение отредактировал(а) vadims - 8.7.2005, 11:57


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Alex101
Дата 8.7.2005, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 1
Всего: 10



Цитата(vadims @ 8.7.2005, 11:47)
Чем лучше ???

maxint=32767, а maxnegativeint=-32768


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
vadims
Дата 8.7.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Alex101
- Максимум это согласен.
Кстати, а компилятор не должен отсечь конструкцию -maxint ???

Взгляни на мой предыдущий пост - я его как раз редактировал когда ты отвечал


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Akina
Дата 8.7.2005, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(vadims @ 8.7.2005, 13:01)
Кстати, а компилятор не должен отсечь конструкцию -maxint ???

Нет, это просто предопределенная Public Const. Но должно существовать и MinInt - это так, к слову...
Добавлено @ 12:54
Кстати. Если это в разделе "Алгоритмы" - почему циклимся на Паскалевом коде? А если нет - то в некоторых языках есть процедура SWAP...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Alex101
Дата 8.7.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 1
Всего: 10



Цитата(vadims @ 8.7.2005, 11:47)
1. К чему эти операции ???
max1:=min2 xor max1;
min2:=min2 xor max1;
max1:=min2 xor max1

Меняются местами значения max1 и min2


Цитата(Akina @ 8.7.2005, 12:52)
в некоторых языках есть процедура SWAP...

Все равно мои три строчки будут работать быстрее smile


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
vadims
Дата 8.7.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Цитата(Alex101 @ 8.7.2005, 13:10)
Меняются местами значения max1 и min2
А тоже самое и на ассемблере написать слабо ? smile
Еще ведь быстрее будет


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Akina
Дата 8.7.2005, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Alex101 @ 8.7.2005, 14:10)
Все равно мои три строчки будут работать быстрее

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Alex101
Дата 8.7.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 1
Всего: 10



Цитата(Akina @ 8.7.2005, 13:43)
а SWAP - именно таковая) рассматриваться просто не должна, ибо оффтоп.

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

Sorry for offtop
Цитата(vadims @ 8.7.2005, 13:25)
А тоже самое и на ассемблере написать слабо ?

Не-а smile
Код

mov ax, min2
mov cx, max1
xchg ax,cx


Это сообщение отредактировал(а) Alex101 - 8.7.2005, 14:14


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.