Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
jekakeba
0 / 0 / 1
Регистрация: 31.12.2016
Сообщений: 60
1

Поменять местами значения 2 переменных с использованием указателей

15.03.2017, 21:32. Просмотров 1500. Ответов 10
Метки нет (Все метки)

Здравствуйте, что-то недопонимаю....
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
# include <iostream>
using namespace std;
 
//3.Используя указатели и оператор разыменования, 
//обменять местами значения двух переменных.
 
void main()
{
    setlocale(LC_ALL, "Russian");
//Объявление и инициализация 2х переменных
    int a = 55;
    int b = 7;
//объявление типа данных указатель на int и инициализируем его адресом переменной b
    int *numa = &a;
//объявление типа данных указатель на int и инициализируем его адресом переменной a
    int *numb = &b;
//Инициализируем или перезаписываем переменную а с помощью операции разыменования адресом переменной 
//т.е. в а закидываем b, а в b записываем а
    a = *numb;
    b = *numa;
 
    cout << a << b << endl;// вывод результата....(но не правильно)
 
}
Подскажите, в чем ошибка, объясните плиз)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2017, 21:32
Ответы с готовыми решениями:

Поменять местами значения целых переменных х и у не используя дополнительных переменных
Знаю, что это очень простая задача, но никак не могу сделать, пожалуйста...

Поменять местами значения целых переменных
1.Поменять местами значения целых переменных Х, Y, Z таким образом, чтобы...

Поменять местами значения целых переменных A и B
Поменять местами значения целых переменных. А и B, не используя дополнительные...

Поменять местами значения вещественных переменных
Поменяйте местами значения вещественных переменных x и y

Значения переменных X, Y, Z поменять местами так
Значения переменных X, Y, Z поменять местами так, чтобы они оказались...

10
nmcf
6410 / 5672 / 2581
Регистрация: 14.04.2014
Сообщений: 23,998
15.03.2017, 21:40 2
Тебе третья нужна, для временного хранения.
0
sk007
Life Builder
414 / 414 / 341
Регистрация: 12.01.2011
Сообщений: 1,522
Завершенные тесты: 6
15.03.2017, 21:48 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    int a = 55;
    int b = 7;
 
    
    int *temp = new int();
    *temp = a;
 
    int *numb = &b;
 
    a = *numb;
    b = *temp;
 
    
    cout << a << endl;
    cout << b << endl;
    delete temp;
0
jekakeba
0 / 0 / 1
Регистрация: 31.12.2016
Сообщений: 60
15.03.2017, 22:30  [ТС] 4
sk007, пожалуйста, объясните вот эту строчку:
C++
1
int *temp = new int();
Дело в том, что такое еще не учили.... т.е. что такое
C++
1
new int()
?

Спасибо!
0
sk007
Life Builder
414 / 414 / 341
Регистрация: 12.01.2011
Сообщений: 1,522
Завершенные тесты: 6
15.03.2017, 22:35 5
Динамическое выделение памяти для одного объекта типа инт.
0
nmcf
15.03.2017, 23:04
  #6

Не по теме:

sk007, ну и зачем ты придумал это выделение? Просто int уже не в моде?

0
Mournful Max
16.03.2017, 02:36
  #7

Не по теме:

nmcf, Прихоть такая у него, чего Вы прицеплись :D

0
jekakeba
0 / 0 / 1
Регистрация: 31.12.2016
Сообщений: 60
16.03.2017, 15:40  [ТС] 8
nmcf, а нельзя без 3ей переменной ?
типа как-то так
а=5;
b = 7;
a = a + b;
a = a - a; //12 - 5 = 7
b = a - b; // 12 - 7 = 5

Добавлено через 6 минут
т.е. вот так:
a = 10
b = 20;

a = a+b // = 30
b = a - b// = 30 - 20 =10
a = a - b // 30 -10 = 20

Добавлено через 9 минут
можно, вот так:
C++
1
2
3
4
5
6
7
int *numa = &a;
    int *numb = &b;
    *numa = *numa + *numb;
    *numb = *numa - *numb;
    *numa = *numa - *numb;
    a = *numa;
    b = *numb;
0
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
16.03.2017, 15:48 9
Цитата Сообщение от jekakeba Посмотреть сообщение
nmcf, а нельзя без 3ей переменной ?
А смысл? Экономия памяти? Так у вас код выполняющий подобные трюки сожрет в десять раз больше места, чем занимает один разнесчастный int.
Плюс, если у вас там будет не int, а структура, то такие трюки вообще не будут работать.
0
nmcf
6410 / 5672 / 2581
Регистрация: 14.04.2014
Сообщений: 23,998
16.03.2017, 19:26 10
Цитата Сообщение от jekakeba Посмотреть сообщение
а нельзя без 3ей переменной ?
Была такая "задача на сообразительность" - обменять без третьей. Тебе это, что ли, нужно?
0
повар1
197 / 160 / 142
Регистрация: 24.02.2017
Сообщений: 651
Завершенные тесты: 1
16.03.2017, 21:06 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
 int a=11,temp;
 int b=55;
 int *p;
 cout<<a<<"    "<<b<<"\n";
 temp=a;
 p=&b;
 a=*p;
 p=&temp;
 b=*p;
 cout<<a<<"   "<<b<<"\n";
 
system("pause");
    return 0;
    }
Добавлено через 22 минуты
[CPP]# include <iostream>
using namespace std;

//3.Используя указатели и оператор разыменования,
//обменять местами значения двух переменных.

void main()
{
setlocale(LC_ALL, "Russian");
//Объявление и инициализация 2х переменных
int a = 55;
int b = 7;
//объявление типа данных указатель на int и инициализируем его адресом переменной b
int *numa = &a; //в numa записали адрес переменной а
//объявление типа данных указатель на int и инициализируем его адресом переменной a
int *numb = &b; //в numb записали адрес переменной b
//Инициализируем или перезаписываем переменную а с помощью операции разыменования адресом переменной
//т.е. в а закидываем b, а в b записываем а
a = *numb; //присвоили переменной а значение переменной b=7
b = *numa; //присвоили переменной b значение переменной a=7, т.к. в переменной а предыдущим действием
//уже записано значение 7

cout << a << b << endl;// вывод результата....(но не правильно)

}
0
16.03.2017, 21:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2017, 21:06

Указатели: поменять циклически местами значения переменных
При помощи указателей на переменные a, b, c, поменять циклически местами...

Поменять местами значения двух переменных, не используя дополнительной
4.Напишите программу,которая меняет местами значения двух переменных в памяти....

Значения переменных а, Ь и с поменять местами так, чтобы оказалось а >= Ь >= с.
Значения переменных а, Ь и с поменять местами так, чтобы оказалось а &gt;= Ь &gt;= с....


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

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

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