Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на паскале:составить функцию
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
vesna
здравствуйте!скажу сразу:искал и на FAQ и на Поиске.не нашёл.

под расстоянием между двумя n-разрядными двоичными кодами понимают количество несовподений в каждой из n-позиций.
Условие:составить функцию rasst(n1n2),аргументами которой являются два длинных положительных числа,рассматриваемые как32-разрядные двоичные коды. возвращаемое функцией значение должно совпадать с "расстоянием" междуn1и n2.

если кто сможет помоч,огромное СПАСИБО,потому что в информатике я norespect.gif
volvo
Цитата
здравствуйте!скажу сразу:искал и на FAQ и на Поиске.не нашёл.
А знаешь, почему не нашел? Потому что как ты не соизволил дать нормальное название своему топику, так, возможно, и раньше кто-то не назвал тему как положено. И тема была закрыта, или даже существует, но поиском не находится...

Поменяй название темы на более информативное, "задача на паскале" - это плохая идея, иначе согласно пункту 1 Правил Раздела тема будет закрыта или удалена. То же самое касается и второй твоей темы...
volvo
vesna, здесь у тебя вся игра на битовых операциях. Проверяешь последние биты чисел, если они равны - то ничего не делать, если не равны - то увеличить счетчик несовпадений, а потом сдвинуть оба числа на один бит вправо... Продолжать, пока не просмотришь все 32 бита... Вот так, например:
function rasst(n1, n2: longint): integer;
var i, res: integer;
begin
res := 0;
for i := 0 to 31 do begin
inc(res, (n1 and $1) xor (n2 and $1));
n1 := n1 shr 1; n2 := n2 shr 1;
end;
rasst := res;
end;
vesna
огромное СПАСИБО
Вы меня очень выручили!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.