Обмен значений численных переменных

Задача

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

Пояснение к задаче и алгоритм решения

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

1-й способ. Через "буферную" переменную

  1. Пусть первое введенное значение присвоено переменной a, второе - b.
  2. Присвоим некой третьей переменной (например, c) значение хранимое в a. Таким образом окажется, что одно и то же значение будет сохранено в двух переменных.
  3. Запишем значение переменной b в a. Таким образом, мы "затрем" прежнее содержимое a, а значение b будет храниться в двух переменных.
  4. Однако значение a не потеряно, т.к. заранее было сохранено в c. Теперь мы можем присвоить переменной b значение хранимое в c.

В результате данных трех присвоений окажется, что в переменной a будет значение b, в b - значение a.

2-й способ. Путем арифметических операций

  1. Запишем в переменную a сумму значений двух переменных: a и b.
  2. Переменной b присвоить разность между новым значением переменной a и значением b. Таким образом в b окажется старое значение a.
  3. Переменной a присвоить разность между ее текущим значением и новым значением переменной b. В результате в a окажется старое значение b.

Исходный код на языке программирования Pascal

// 1-й способ:

var a,b,c: integer;
begin
        readln(a);
        readln(b);
        writeln('a=',a,'; b=',b);
        c := a;
        a := b;
        b := c;
        writeln('a=',a,'; b=',b);
end.

// 2-й способ:

var a,b: integer;
begin
        readln(a);
        readln(b);
        writeln('a=',a,'; b=',b);
        a := a + b;
        b := a - b;
        a := a - b;
        writeln('a=',a,'; b=',b);
end.

Пример(ы) выполнения программы на языке Pascal

5
6
a=5; b=6
a=6; b=5

Исходный код на языке программирования C

// 1-й способ

#include <stdio.h>
main() {
        int a,b,c;
        scanf("%d", &a);
        scanf("%d", &b);
        printf("a=%d; b=%d\n", a, b);
        c = a;
        a = b;
        b = c;
        printf("a=%d; b=%d\n", a, b);
}

// 2-й способ

#include <stdio.h>
main() {
        int a,b,c;
        scanf("%d", &a);
        scanf("%d", &b);
        printf("a=%d; b=%d\n", a, b);
        a = a + b;
        b = a - b;
        a = a - b;
        printf("a=%d; b=%d\n", a, b);
}

Пример(ы) выполнения программы на языке C

9
0
a=9; b=0
a=0; b=9

Исходный код на языке программирования Python

# 1-й способ:

a = int(input())
b = int(input())
print('a=%d; b=%d' % (a,b))
c = a
a = b
b = c
print('a=%d; b=%d' % (a,b))

# 2-й способ:

a = int(input())
b = int(input())
print('a=%d; b=%d' % (a,b))
a = a + b
b = a - b
a = a - b
print('a=%d; b=%d' % (a,b))

# 3-й способ:

a = int(input())
b = int(input())
print('a=%d; b=%d' % (a,b))
a,b = b,a
print('a=%d; b=%d' % (a,b))

Пример(ы) выполнения программы на языке Python

5
2
a=5; b=2
a=2; b=5

Особенности решения на языке программирования Python

Для Python существует и третий способ решения задачи - через кортеж. Выглядит это, например, так: a,b = b,a. В результате данного действия значение b окажется связанным с a, значение a - с b.

Исходный код на языке программирования КуМир

| 1-й способ:

алг обмен_значений
нач
  цел а, б, в
  ввод а
  ввод б
  вывод "а=",а,"; б=",б, нс
  в := а
  а := б
  б := в
  вывод "а=",а,"; б=",б, нс
кон

| 2-й способ:

алг обмен_значений
нач
  цел а,б
  ввод а
  ввод б
  вывод "а=",а,"; б=",б, нс
  а := а + б
  б := а - б
  а := а - б
  вывод "а=",а,"; б=",б, нс
кон

Пример(ы) выполнения программы на языке КуМир

5
88
а=5; б=88
а=88; б=5

Исходный код на языке программирования Basic

# 1-й способ:

input a
input b
print "a=" + a + "; b=" + b
c = a
a = b
b = c
print "a=" + a + "; b=" + b

# 2-й способ:

input a
input b
print "a=" + a + "; b=" + b
a = a + b
b = a - b
a = a - b
print "a=" + a + "; b=" + b

Пример(ы) выполнения программы на языке Basic

6
4
a=6; b=4
a=4; b=6

Тема

Линейные алгоритмы

Уровень сложности

Простой

Дата публикации