Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Математика


Ответ
 
Опции темы Опции просмотра
Старый 24.01.2009, 11:35   #21 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Цитата:
Сообщение от Darkcosinus Посмотреть сообщение
Хотите информатическую?
Поменять местами значение 2 переменных, не используя дополнительную переменную или указатели
Я вспомнила, как это сделать (правда, не на Паскале).
Есть 2 переменные: А и В. Поменять их местами можно за 3 действия.
1) А:=А+В; А:=А xor В;
2) В:=А-В; В:= А xor В;
3) А:=А-В; А:=А xor В;
ummasha вне форума   Ответить с цитированием
Старый 24.01.2009, 12:02   #22 (permalink)
Dr. Evil
Member
 
Аватар для Dr. Evil
 
Регистрация: 18.06.2008
Сообщений: 2,326
Записей в дневнике: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 211
По умолчанию

В Паскале это делается почти так же:

А:=А+В;
В:=А-В;
А:=А-В;
Dr. Evil вне форума   Ответить с цитированием
Старый 24.01.2009, 12:22   #23 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Спасибо
ummasha вне форума   Ответить с цитированием
Старый 24.01.2009, 14:43   #24 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ах вы умницы оба - ну будет вам от Darkcosinus! Я, знаете ли, тоже с чего-то подобного начал - и понеслось: a+b - нельзя (вдруг числа в формате BYTE и оба в районе 250), a-b - тоже нельзя (а вдруг одно из чисел отрицательное) ну и т.п. Сплошной type mismatch. Короче говоря, никак нельзя, потому что всегда можно подобрать такой тип данных и значения, чтобы получился type mismatch! Всё жду, чтобы Darkcosinus выложил, наконец, абсолютно универсальное решение для всех типов данных и всех, даже самых немыслимых, значений параметров. Да вот что-то молчит.
Vladimir_S вне форума   Ответить с цитированием
Старый 24.01.2009, 14:51   #25 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Не, на курсах нам это объяснили с точки зрения подходов к программированию:
а) пространственный: есть место под дополнительную переменную, используют программисты Майкрософта
б) временной: есть время подумать над задачей + можно сэкономить место на диске.
ummasha вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 24.01.2009, 15:31   #26 (permalink)
Dr. Evil
Member
 
Аватар для Dr. Evil
 
Регистрация: 18.06.2008
Сообщений: 2,326
Записей в дневнике: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 211
По умолчанию

Владимир, мне давали именно такой подход решения. Безусловно лучшим подходом будет использование дополнительной переменной, но так нельзя.

Про отрицательное число пожалуйста поподробнее, поскольку я только что проверил -- алгоритм работает как для положительных, так и для отрицательных чисел (естественно при соответствии типов данных).
А подобрать числа в любой задаче можно так (или поставить условие), что она быстро становится нерешаемой.
Dr. Evil вне форума   Ответить с цитированием
Старый 24.01.2009, 17:24   #27 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Dr. Evil Посмотреть сообщение
Владимир, мне давали именно такой подход решения. Безусловно лучшим подходом будет использование дополнительной переменной, но так нельзя.

Про отрицательное число пожалуйста поподробнее, поскольку я только что проверил -- алгоритм работает как для положительных, так и для отрицательных чисел (естественно при соответствии типов данных).
А подобрать числа в любой задаче можно так (или поставить условие), что она быстро становится нерешаемой.
А Вы просто пройдитесь по теме почти от начала, с #4, там все мои решения и перепалка с Darkcosinus'ом. И про отрицательные числа тоже.
Vladimir_S вне форума   Ответить с цитированием
Старый 24.01.2009, 17:33   #28 (permalink)
Dr. Evil
Member
 
Аватар для Dr. Evil
 
Регистрация: 18.06.2008
Сообщений: 2,326
Записей в дневнике: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 211
По умолчанию

А-а-а ) Понял. В вашем решении изначально было одно усложнение, с которым я не согласен -- зачем присваивать х=y-2*x ?

Действительно, я понял, что данный алгоритм имеет свои ограничения, но какое его не имеет. ИМХО Darkcosinus не прав в одном -- он же не указал, какой именно тип данных использовался для переменных, а потом именно по типу данных и начал придираться )

Теперь осталось дождаться официального вердикта )
Dr. Evil вне форума   Ответить с цитированием
Старый 24.01.2009, 18:17   #29 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Dr. Evil Посмотреть сообщение
А-а-а ) Понял. В вашем решении изначально было одно усложнение, с которым я не согласен -- зачем присваивать х=y-2*x ?
Так я просто, не стремясь к оптимизации, выдал первое пришедшее в голову решение. Мысль шла примерно так - получить величины х+у и х-у а потом из них - новые значения параметров. Действительно, громоздко. Но, тем не менее, решение правильное. Ниже я предложил другое, вроде Вашего - он (Darkcosinus) опять придрался!

Цитата:
Действительно, я понял, что данный алгоритм имеет свои ограничения, но какое его не имеет. ИМХО Darkcosinus не прав в одном -- он же не указал, какой именно тип данных использовался для переменных, а потом именно по типу данных и начал придираться )
Теперь осталось дождаться официального вердикта )
Вот и я про то же.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.01.2009, 09:44   #30 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Вот еще одна задача из книжки: найти все натуральные числа a,b,c из интервала от 1 до 20, для которых выполняется равенство:а2+ b2 = c2

Program KR_2_Var1_2;
Var a,b,c:integer;
Begin
For a:=1 to 20 do
For b:=1 to 20 do
For c:=1 to 20 do
If sqr(a)+sqr(b)=sqr(c) then writeln(a,' ',b,' ',c);
readln;
end.

Задача решается без всяких проблем, НО: в книжке вместо этого было а*а+b*b=с*с. И это "типа" квадраты чисел?

Последний раз редактировалось ummasha; 25.01.2009 в 10:13
ummasha вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:46.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.