0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270
|
|||||||||||
1 | |||||||||||
Написать функцию swap26.03.2014, 14:26. Показов 13145. Ответов 73
Метки нет (Все метки)
был вот такой код:
0
|
26.03.2014, 14:26 | |
Ответы с готовыми решениями:
73
Заменить функцию swap Чем можно заменить функцию swap? Массив: Описать функцию swap(A,B), меняющую местами максимальные элементы матриц А и В. Напишите функцию Swap(a, b), аргументами которой могут быть числа любого типа |
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
14.03.2015, 18:32 | 41 |
опускать и подразумевать. Дробным он от этого не становится.
Добавлено через 5 минут Вы утверждали, что ксор меняет местами действительные переменные, а на самом деле в Вашем примере ксор меняет местами целые коды переменных. Действительных? Эйси. Но путём грязного хака и благодаря совпадению разрядностей фактического действительного и встроенного целого типов. Функция то работает с целыми переменными. А попробуйте ксором поменять местами непосредственно действительные переменные без приведения. Добавлено через 2 минуты Указатель тоже целый, даже если его нельзя присвоить ни одному другому целому и ни какое другое целое нельзя присвоить указателю. Соответственно возможность поменять местами ксором два указателя - не аргумент. Не важно, что гарантирует и чего не гарантирует стандарт, указатель есть переменная, или константа, хранящая адрес, а адрес есть номер байта, он концептуально целый. Можно обвешать его флагами как автобус с послами всего Евросоюза, можно прицепить к нему размер адресуемой памяти, можно накрутить любые фокусы со сдвигами и базированием, базы сложить в каталог страниц виртуальной памяти, но всё это лишь упаковка, а в основе всё тот же номер байта.
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
|
||||||
14.03.2015, 20:21 | 42 | |||||
я и не работал с дробными
еще раз, я привел плавающие к виду целого и поменял бит в бит а я не отрицаю Не совпадению, а знанию платформы на которой я работаю, где-нибудь на AVRке я бы применил другой "грязный хак", знание и пользование две разных вещи наконец то догадался где я меняю указатели? и можно ли их поменять? в функции идет разыменование к тому типу который мне нужен на ассемблере пожалуйста, а Си не дает Добавлено через 2 минуты т.е я вот так не могу написать
0
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
14.03.2015, 20:28 | 43 |
Не догадался, а прочитал в прототипе и не наконецто, а сразу.
Добавлено через 39 секунд О чём собственно и речь. Добавлено через 1 минуту На c++ можете. Но указатель остаётся целым даже в том случае, когда так писать нельзя и дело не в стандарте языка, а в самой концепции адресации однородной памяти.
0
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
|
14.03.2015, 20:30 | 44 |
Ого, так хором можно такие вещи вытворять... Ничего себе. Ребят, лень тему всю читать, также можно поступать с числами с плав. запятой?
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
|
|
14.03.2015, 20:35 | 45 |
вообще то нет
но попытайся, вдруг что получится почитал бы, такой вопрос бы не возник я присваиваю адрес, в данном случае на Винде, адрес начала исполняемого модуля а адрес и есть целое число, очень трудно представить себе дробный адресс
0
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
14.03.2015, 20:39 | 46 |
Ну так я и говорю, что он целый. Язык может запретить такое присваивание на том основании, что адрес и число - разные сущности. Но внутренняя реализация остаётся всё тем же целым номером байта, вопрос лишь в том, как нумеровать.
0
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
14.03.2015, 20:52 | 48 |
А его там и так нет, это не паскаль.
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
15.03.2015, 03:49 | 50 |
худший.
не эффективен. Добавлено через 25 минут не эквивалентна, поскольку запись справа обладает точками следования.
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
||||||
15.03.2015, 04:00 | 51 | |||||
Терпеть не могу, когда этот код на C++ записывают в три строчки :
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
||||||
15.03.2015, 04:10 | 53 | |||||
Я имел в виду этот код:
0
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
15.03.2015, 13:48 | 55 |
Как бы вы не меняли две переменные местами, операции всё равно будут зависимы от предыдущих и оптимизировать порядок, или распараллелить не получится. Максимум можно распараллелить обмен частей переменных, например, при обмене местами слов менять местами старшие байты параллельно с младшими. Для стандартных интов xor это уже гарантирует. А вот то, что он может быть вообще не применим, это фактор.
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
15.03.2015, 13:56 | 56 |
MrGluck, а вы уверены, что это выражение без скобок будет всегда вычисляться справа налево?
0
|
Форумчанин
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
15.03.2015, 14:44 | 57 |
Да т.к. operator ^= одна из разновидностей assigment operator.
Добавлено через 51 секунду А они, как известно, сохраняют результат вычисления в левом операнде. Добавлено через 1 минуту Вот пруф. Там также сказано про порядок вычисления.
1
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
15.03.2015, 14:49 | 59 |
0
|
MrGluck
|
15.03.2015, 14:59
Написать функцию swap
#60
|
0
|
15.03.2015, 14:59 | |
15.03.2015, 14:59 | |
Помогаю со студенческими работами здесь
60
Создать функцию SWAP, преобразующую заглавные буквы передаваемой ей строки в строчные и наоборот Написать функцию, которая, в зависимости от выбора пользователя вызывает соответствующую функцию Написать функцию, которая могла бы передать значение в другую функцию не могу разобраться как написать функцию сортировки и исправить функцию добавления в стек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |