Форум программистов, компьютерный форум CyberForum.ru

Функция swap - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 400, средняя оценка - 5.00
cfg
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 7
27.10.2009, 21:19     Функция swap #1
Всем привет. У меня проблема, при чем проблема не с самими указателями, а с функцией swap.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main()
{
int a,b;
   cin>>a>>b;
   swap(&a,&b);
   cout<<a<<b;
return(0);
}
Добавлено через 4 минуты
Пишет что некорректная инициализация не константной ссылки типа 'int*&' из временного выражения типа 'int*'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mecid
 Аватар для Mecid
678 / 227 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
27.10.2009, 21:22     Функция swap #2
покажи функцию свап
cfg
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 7
27.10.2009, 21:27  [ТС]     Функция swap #3
Извиняюсь, я просто с телефона, а эту функцию не реально так набрать

Добавлено через 41 секунду
Это стандартная функция
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.10.2009, 21:31     Функция swap #4
Я специально для Вас разбил чтение переменных и вывод их на экран. swap() меняет значения местами. Вот в таком виде работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
using namespace std;
int main()
{
int a,b;
cin>>a;
cin>>b;
swap(a,b);
cout<<a;
cout<<b;
return(0);
}
cfg
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 7
27.10.2009, 21:38  [ТС]     Функция swap #5
Спасибо огромное, valeriikozlow. Просто в книге был приведен пример с оператором взятия...

Добавлено через 1 минуту
Mecid, тоже спасибо.
cfg
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 7
28.10.2009, 18:09  [ТС]     Функция swap #6
Продолжаю изучение языка... Сегодня новая ошибка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<iostream>
#include<stdlib.h>
using namespace std;
 
 
int sravn(int a, int b) //процедура выводит возвращает меньшее значение
{
if (a>b) return(b);
else return(a);
    }
 
 
int main()
{
 
    srand(time(0));
 
    int m[10],i;
 
    for(i=0; i<10; ++i)//запись в масив 10 элементов
    {
        m[i]=rand()%50;
        }
    for (i=0; i<10; ++i)
    {
        cout<<m[i]<<' ';
        }cout<<endl;        
int q=m[0],l;
for (l=0; l<10; l++);   //ЭТОТ ЦИКЛ ВЫПОЛНЯЕТСЯ ОДИН РАЗ!?!?!   
{
            for (i=0; i<10; ++i)//Поиск меньшего
            {
                q=sravn(m[i],q);
                }
cout<<q<<endl;
swap(m[l],q);
}
 
    for (i=0; i<10; ++i)//вывод результата
    {
        cout<<m[i]<<' ';
        }
        
    return(0);
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
28.10.2009, 19:30     Функция swap #7
строка 29:
C++
1
for (l=0; l<10; l++);   //ЭТОТ ЦИКЛ ВЫПОЛНЯЕТСЯ ОДИН РАЗ!?!?!
сразу после условия цикла стоит опреатор ";". Это так называемый пустой оператор, он ничего не выполняет. Сам цикл у тебя выполняется 10 раз (не выполняя ничего), но по окончании цикла у тебя переменная l=10.
Затем строка 36:
C++
1
swap(m[l],q);
m[10] - за пределами границ массива.
Я думаю что Вы хотели данным кодом провести сортировку массива. Я прав?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2009, 19:36     Функция swap
Еще ссылки по теме:

C++ Функция swap()
C++ Функция swap
Описать процедуру Swap(X, Y) C++
C++ Функция swap. error C2106: =: левый операнд должен быть левосторонним значением
C++ Двусвязный список. Функция swap

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

Или воспользуйтесь поиском по форуму:
cfg
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 7
28.10.2009, 19:36  [ТС]     Функция swap #8
M128K145, при редактировании моего поста вы удалили часть моего кода...

Добавлено через 2 минуты
valeriikozlov, так точно спасибо, уже исправил.
Yandex
Объявления
28.10.2009, 19:36     Функция swap
Ответ Создать тему
Опции темы

Текущее время: 20:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru