Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 268
#1

Написать функцию swap - C++

26.03.2014, 14:26. Просмотров 3843. Ответов 73
Метки нет (Все метки)

был вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
for(i = 0; i < n - 1; i++)
    {
        for(j = i + 1; j < n; j++)
        {
            if(p[i].pro < p[j].pro)
            {
            swap (p[i], p[j]);
            }
        }
    }
нужно теперь написать функцию swap, вот мои наброски, но почему то ничего не получается, помогите:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(i = 0; i < n - 1; i++)
    {
        for(j = i + 1; j < n; j++)
        {
            if(p[i].pro < p[j].pro)
            {
                void swap (p[i].pro, p[j].pro);
                int t = p[i].pro;
                p[i].pro = p[j].pro;
                p[j].pro = t;
            }
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 14:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Написать функцию swap (C++):

Заменить функцию swap - C++
У меня есть программа. Я задаю массив, потом мне выводится массив, в котором удаляются все повторяющиеся элементы. Как можно заменить...

Чем можно заменить функцию swap? - C++
Чем можно заменить функцию swap? Она на моем компиляторе не работает. Библиотеку iostream включал.

Массив: Описать функцию swap(A,B), меняющую местами максимальные элементы матриц А и В. - C++
Надо исправить программу чтобы заработала. У самой уже ничего не получается=(( Описать функцию swap(A,B), меняющую местами максимальные...

Напишите функцию Swap(a, b), аргументами которой могут быть числа любого типа - C++
Напишите функцию Swap(a, b), аргументами которой могут быть числа любого типа. Функция меняет значения своих аргументов и не возвращает...

Создать функцию SWAP, преобразующую заглавные буквы передаваемой ей строки в строчные и наоборот - C++
Создать функцию SWAP, преобразующую заглавные буквы передаваемой ей строки в строчные и наоборот. С помощью этой функции преобразовать...

Написать функцию, которая, в зависимости от выбора пользователя вызывает соответствующую функцию - C++
Помогите, что то я не могу понять задачи, даже не знаю с чего начать)))) 5. Написать функцию, которая, в зависимости от выбора...

73
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
14.03.2015, 20:39 #46
Цитата Сообщение от ValeryS Посмотреть сообщение
я присваиваю адрес,
Цитата Сообщение от ValeryS Посмотреть сообщение
Код C++
1
char*a=0x40000000;
в данном случае на Винде, адрес начала исполняемого модуля
а адрес и есть целое число, очень трудно представить себе дробный адресс
Ну так я и говорю, что он целый. Язык может запретить такое присваивание на том основании, что адрес и число - разные сущности. Но внутренняя реализация остаётся всё тем же целым номером байта, вопрос лишь в том, как нумеровать.
0
ValeryS
Модератор
7020 / 5358 / 530
Регистрация: 14.02.2011
Сообщений: 18,072
14.03.2015, 20:50 #47
Цитата Сообщение от taras atavin Посмотреть сообщение
Ну так я и говорю, что он целый.
ну, слава богу, поняли друг друга
Цитата Сообщение от taras atavin Посмотреть сообщение
Язык может запретить такое присваивание на том основании, что адрес и число - разные сущности.
тогда придется бежать на ассемблер если запретят доступ к "железу", то что останется крутого у Си?
0
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
14.03.2015, 20:52 #48
А его там и так нет, это не паскаль.
0
ValeryS
Модератор
7020 / 5358 / 530
Регистрация: 14.02.2011
Сообщений: 18,072
14.03.2015, 20:54 #49
Цитата Сообщение от taras atavin Посмотреть сообщение
А его там и так нет,
чего нет? доступа к железу?
чтото я не слышал чтобы паскаль называли "Высокоуровневым ассемблером", а Си сколько раз
0
hoggy
6862 / 3069 / 525
Регистрация: 15.11.2014
Сообщений: 6,974
Завершенные тесты: 1
15.03.2015, 03:49 #50
Цитата Сообщение от MastAKK Посмотреть сообщение
.S. терпеть не могу использование третьей переменной. Имхо, с xor - один из лучших вариантов
худший.

не эффективен.

Добавлено через 25 минут
Цитата Сообщение от Alex5 Посмотреть сообщение
т.к. a ^= b ^= a ^= b; эквивалентно a ^= (b ^= (a ^= b) );
не эквивалентна, поскольку запись справа обладает точками следования.
0
Dennis Ritchie
548 / 140 / 29
Регистрация: 27.07.2014
Сообщений: 2,445
15.03.2015, 04:00 #51
Цитата Сообщение от MastAKK Посмотреть сообщение
терпеть не могу использование третьей переменной.
Терпеть не могу, когда этот код на C++ записывают в три строчки :
C++
1
2
3
void swap(int& par1, int& par2){
    par1 ^= (par2 ^= (par1 ^= par2));
}
0
Croessmah
Ушел
13782 / 8032 / 928
Регистрация: 27.09.2012
Сообщений: 19,798
Записей в блоге: 3
Завершенные тесты: 1
15.03.2015, 04:04 #52
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
когда этот код на C++ записывают в три строчки
действительно, зачем нам три строчки...
C++
1
void swap(int& par1, int& par2){par1 ^= (par2 ^= (par1 ^= par2));}
0
Dennis Ritchie
548 / 140 / 29
Регистрация: 27.07.2014
Сообщений: 2,445
15.03.2015, 04:10 #53
Цитата Сообщение от Croessmah Посмотреть сообщение
действительно, зачем нам три строчки...
Я имел в виду этот код:
C++
1
2
3
4
5
void swap(int& par1, int& par2){
   par1 = par1^par2;
   par2 = par2^par1;
   par1 = par1^par2;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7801 / 4845 / 754
Регистрация: 29.11.2010
Сообщений: 13,212
15.03.2015, 13:35 #54
Цитата Сообщение от Croessmah Посмотреть сообщение
действительно, зачем нам три строчки...
терпеть не могу, когда символы тратят бесполезно
C++
1
void swap(int&a,int&b){a^=b^=a^=b;}
название оставлено по ТЗ.
0
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
15.03.2015, 13:48 #55
Как бы вы не меняли две переменные местами, операции всё равно будут зависимы от предыдущих и оптимизировать порядок, или распараллелить не получится. Максимум можно распараллелить обмен частей переменных, например, при обмене местами слов менять местами старшие байты параллельно с младшими. Для стандартных интов xor это уже гарантирует. А вот то, что он может быть вообще не применим, это фактор.
0
Dennis Ritchie
548 / 140 / 29
Регистрация: 27.07.2014
Сообщений: 2,445
15.03.2015, 13:56 #56
Цитата Сообщение от MrGluck Посмотреть сообщение
терпеть не могу, когда символы тратят бесполезно
MrGluck, а вы уверены, что это выражение без скобок будет всегда вычисляться справа налево?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7801 / 4845 / 754
Регистрация: 29.11.2010
Сообщений: 13,212
15.03.2015, 14:44 #57
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
MrGluck, а вы уверены, что это выражение без скобок будет всегда вычисляться справа налево?
Да т.к. operator ^= одна из разновидностей assigment operator.

Добавлено через 51 секунду
А они, как известно, сохраняют результат вычисления в левом операнде.

Добавлено через 1 минуту
Вот пруф. Там также сказано про порядок вычисления.
1
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
15.03.2015, 14:49 #58
MrGluck, похоже ты не учел отсутствие точек следования.
раз, два.
3
Dennis Ritchie
548 / 140 / 29
Регистрация: 27.07.2014
Сообщений: 2,445
15.03.2015, 14:49 #59
Цитата Сообщение от MrGluck Посмотреть сообщение
А они, как известно, сохраняют результат вычисления в левом операнде.
Теперь я спокоен :
These operators have right-to-left associativity.
Цитата Сообщение от Tulosba Посмотреть сообщение
похоже ты не учел отсутствие точек следования.
А теперь не очень.
0
MrGluck
15.03.2015, 14:59     Написать функцию swap
  #60

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
MrGluck, похоже ты не учел отсутствие точек следования.
раз, два.
Виноват, признаю

0
15.03.2015, 14:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2015, 14:59
Привет! Вот еще темы с ответами:

Написать функцию, которая могла бы передать значение в другую функцию - C++
как сделать функцию которая бы могла передать значеие в другую функцию ну к примеру a=4*b; где b=sin(fi);

не могу разобраться как написать функцию сортировки и исправить функцию добавления в стек - C++
#include &lt;iostream&gt; #include&lt;Windows.h&gt; using namespace std; struct NE{ int x; NE *pnext,*ppor,*cur;}; class SPISOK { NE...

Написать функцию, которая, в зависимости от выбора пользователя вызывает функцию сложения, произведения - C++
Кто знает как можно решить эту задачу на С++? Написать функцию, которая, в зависимости от выбора пользователя вызывает функцию сложения,...

рекурсия.написать функцию,принимающую указ. на другую функцию, осуществл. некую операцию с переданным х - C++
рекурсия.написать функцию,принимающую указ. на другую функцию, осуществл. некую операцию с переданным х. прога должна иметь вид...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru