Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Kutuzov0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 28
#1

Составить программу обмена значениями трёх переменных - C++

13.06.2015, 01:27. Просмотров 1299. Ответов 19
Метки нет (Все метки)

Условия задачи такие: Составить программу обмена значениями трёх переменных величин a,b,c по след схеме:
b присвоить значение c, a присвоить значение b, c присвоить значение a;
http://www.cyberforum.ru/cpp-beginners/thread1160685.html
Написал программу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <vcl.h>
#include <iostream.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{
int a,b,c;
cin >> a >> b;
c=a;
a=b;
b=c;
cout  << a << " " << b << "\n";
cin >> a;
 
        return 0;
Запускаю cmd, ввожу значение трёх переменных, должны поменяться местами, и ни чего cmd исчезает. Из за чего?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2015, 01:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Составить программу обмена значениями трёх переменных (C++):

Программа обмена значениями двух переменных a и b
3.8 Составить программу обмена значениями двух переменных a и b. Разработать...

Составить программу обмена местами максимального и минимального элементов главной диогонали матрицы 4x4.
как я понял надо работать только с главной диогональю зарание спасибо!

Составить программу, вычисляющую значения функции F от 2-ух переменных с++
Помогите! Нужно составить программу, вычисляющую значение функции F от двух...

Составить программу, вычисляющую значения функции F от 2х переменных с++
Задание: Составить программу, вычисляющую значение функции F от двух переменных...

Не происходит обмена значениями. В чем проблема?
#include &lt;iostream&gt; using namespace std; void change(int &amp;a, int &amp;b); ...

19
Perfilov
264 / 164 / 56
Регистрация: 25.02.2015
Сообщений: 435
13.06.2015, 01:36 #2
может решение тут: http://www.cyberforum.ru/post6630678.html
0
Velesthau
524 / 426 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
13.06.2015, 01:37 #3
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
ввожу значение трёх переменных
Где трех-то?
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
cin >> a >> b;
http://www.cyberforum.ru/cpp-beginners/thread1260162.html#post6630678
и перед cin>>a; последним поставь cin.ignore(); тогда будет ждать ввода.
0
Kutuzov0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 28
13.06.2015, 02:17  [ТС] #4
Velesthau, хорошо вроде как получилось, спасибо. Следующий вопрос, почему не открываются билдеровские файлы в среде, с флэшки?
0
Kutuzov0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 28
13.06.2015, 02:25  [ТС] #5
Как в VS запустить эту же прогу пишет: Составить программу обмена значениями трёх переменных
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
13.06.2015, 03:37 #6
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
Как в VS запустить эту же прогу пишет:
Сначала скомпилировать нужно.
0
Kutuzov0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 28
13.06.2015, 21:08  [ТС] #7
lss, То есть? В заголовке всё правильно?
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
13.06.2015, 23:13 #8
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
То есть?
Скомпилировать нужно, потом запускать.
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
В заголовке всё правильно?
В каком заголовке? Если имеешь ввиду заголовочные файлы и #pragma argsused, то убрать то, что относиться к билдеру (студия напишет, что не так), iostream.h, заменить на iostream, добавить using namespace std;
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,205
13.06.2015, 23:21 #9
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
c=a;
a=b;
b=c;
и что мы имеем?
например a=1 b=2 c=3
c=a; c=1 a=1
a=b; a=2 b=2
b=c; b=1 c=1
итого a=2 b=1 c=1
как то мало на обмен похоже
нужно вводить еще одну переменную, для временного хранения
например
C++
1
2
3
4
int tmp=a;
a=b;
b=c;
c=tmp;
0
Mamoruhiko
41 / 39 / 47
Регистрация: 13.05.2015
Сообщений: 222
14.06.2015, 01:15 #10
Частный случай решения задачи "Ханойская башня". Тут есть необходимая для решения ТЗ информация.
0
Kutuzov0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 28
14.06.2015, 01:44  [ТС] #11
Цитата Сообщение от lss Посмотреть сообщение
добавить using namespace std;
куда добавить? Не понятно.
Цитата Сообщение от ValeryS Посмотреть сообщение
как то мало на обмен похоже
плин, вчера всё получилось теперь опять cmd пропадает.
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
14.06.2015, 01:55 #12
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
куда добавить? Не понятно.
Раз и это непонятно, то читай учебники, там всё понятно объясняют.
0
Mamoruhiko
41 / 39 / 47
Регистрация: 13.05.2015
Сообщений: 222
14.06.2015, 02:58 #13
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
//функция которая меняет местами значения двух переменных и выводит ту, которой было необходимо присвоить значение другой;
void trade(int x, int y)
{
    x = x + y;
    y = x - y;
    x = x - y;
    cout << x << " ";
}
 
int main()
{
    int a, b, c;
    cout << "Enter a, b, c: ";
    cin >> a >> b >> c;
    cout << "Before trade: " << a << " " << b << " " << c << endl << "After trade: ";
    //вызов описанной выще функции;
    trade(a, b);
    trade(b, c);    
    trade(c, a);
    cout << endl;
    system("pause");
}
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,205
14.06.2015, 07:16 #14
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
Частный случай решения задачи "Ханойская башня".
серьезно?
и что общего? три переменных? а если будет 5? это ближе к циклическому сдвигу

Добавлено через 3 минуты
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
void trade(int x, int y)
"уж сколько раз твердили миру"
недостатки своего метода знаешь?
и почему c ХОR решение не привел?
но самое то смешное что функция не будет работать, ничего она не поменяет
0
Mamoruhiko
41 / 39 / 47
Регистрация: 13.05.2015
Сообщений: 222
14.06.2015, 13:25 #15
Цитата Сообщение от ValeryS Посмотреть сообщение
серьезно?
и что общего? три переменных? а если будет 5? это ближе к циклическому сдвигу
Соль в том, что я неправильно ТЗ прочитал, поэтому "сумничал"
Цитата Сообщение от ValeryS Посмотреть сообщение
недостатки своего метода знаешь?
Это же костыли
Цитата Сообщение от ValeryS Посмотреть сообщение
и почему c ХОR решение не привел?
Честно говоря, не знаком с XOR.
Цитата Сообщение от ValeryS Посмотреть сообщение
но самое то смешное что функция не будет работать, ничего она не поменяет
У меня всё меняет.

Добавлено через 2 минуты
C++
1
//функция которая меняет местами значения двух переменных и выводит ту, которой было необходимо присвоить значение другой;
Тогда лучше так:
C++
1
//функция которая присваивает первой переменной значение второй и выводит её на экран
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
14.06.2015, 13:27 #16
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
У меня всё меняет.
В функции main она у тебя ничего не меняет, ты просто внутри trade выводишь то, что тебе нужно.
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,205
14.06.2015, 14:43 #17
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
Это же костыли
нет
то что менять можно только целочисленные
а попробуй поменять два таких double 1e100 и 1e-100
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
Честно говоря, не знаком с XOR.
странно бмен двух переменных без третьей через плюс минус знаешь а через XOR нет
это же классика
C++
1
2
3
a^=b;
b^=a;
a^=b;
вот тема где это обсуждалось
http://www.cyberforum.ru/cpp-beginners/thread1130279.html
почитай много, интересного узнаешь
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
У меня всё меняет.
"Этого не может быть потому, что не может быть никогда"(с)
аргументы в функцию передаются по значению, по ссылке, по указателю
у тебя по значению,сиречь функция работает с копиями, и изменения дальше функции не вылезут
0
Mamoruhiko
41 / 39 / 47
Регистрация: 13.05.2015
Сообщений: 222
14.06.2015, 19:27 #18
Цитата Сообщение от ValeryS Посмотреть сообщение
вот тема где это обсуждалось
Написать функцию swap
почитай много, интересного узнаешь
Благодарю
0
Kutuzov0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 28
15.06.2015, 00:15  [ТС] #19
Mamoruhiko, хм.. клёво только зачем так усложнять! И что такое XOR?
0
Mamoruhiko
41 / 39 / 47
Регистрация: 13.05.2015
Сообщений: 222
15.06.2015, 14:53 #20
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
Mamoruhiko, хм.. клёво только зачем так усложнять!
Хотите проще? В теме этот способ уже упоминался:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
    int a, b, c, tmp;
    cout << "Enter a, b, c: ";
    cin >> a >> b >> c;
    cout << "Before trade: " << a << " " << b << " " << c << endl << "After trade: ";
    tmp=a;
    a=b;
    b=c;
    c=tmp;
    cout << a << " " << b << " " << c << endl;
    system("pause");
}
Цитата Сообщение от Kutuzov0 Посмотреть сообщение
И что такое XOR?
Цитата Сообщение от ValeryS Посмотреть сообщение
это же классика
C++
1
2
3
a^=b;
b^=a;
a^=b;
1
15.06.2015, 14:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2015, 14:53
Привет! Вот еще темы с решениями:

Вывод трёх переменных
Самое простое задание, которое можно себе представить, не получается решить....

Задание: составить программу, вычисляющую значения функции f от двух переменных a и b
Cоставить программу, вычисляющую значения функции f от двух переменных a и b....

Перебор всех значений трёх булевых переменных
Вобщем мне надо проверить функцию на тавтологию, для этого как я понимаю надо...

Создать функцию для расчёта максимального из трёх переменных - C++
Даны действительные числа x, y, z. Создать собственную функцию для расчёта...


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

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

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