Оглавление:
Задача — Обмен значений численных переменных
— программирование на Pascal, Си, Кумир, Basic-256, Python
Пользователь вводит два числа. Одно присваивается одной переменной, а второе — другой. Необходимо поменять значения переменных так, чтобы значение первой оказалось во второй, а второй — в первой.
Существует два способа обменять значения переменных. Первый подходит для любых типов данных, а второй — только для численных.
1-й способ. Через «буферную» переменную
- Пусть первое введенное значение присвоено переменной a, второе — b.
- Присвоим некой третьей переменной (например, c) значение хранимое в a. Таким образом окажется, что одно и то же значение будет сохранено в двух переменных.
- Запишем значение переменной b в a. Таким образом, мы «затрем» прежнее содержимое a, а значение b будет храниться в двух переменных.
- Однако значение a не потеряно, т.к. заранее было сохранено в c. Теперь мы можем присвоить переменной b значение хранимое в c.
В результате данных трех присвоений окажется, что в переменной a будет значение b, в b — значение a.
2-й способ. Путем арифметических операций
- Запишем в переменную a сумму значений двух переменных: a и b.
- Переменной b присвоить разность между новым значением переменной a и значением b. Таким образом в b окажется старое значение a.
- Переменной 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. 5
6
a=5; b=6
a=6; b=5
Язык Си
// 1-й способ
#include <stdio.h>
main() {
int a,b,c;
scanf(«%d», &a);
scanf(«%d», &b);
printf(«a=%d; b=%dn», a, b);
c = a;
a = b;
b = c;
printf(«a=%d; b=%dn», a, b);
}
// 2-й способ
#include <stdio.h>
main() {
int a,b,c;
scanf(«%d», &a);
scanf(«%d», &b);
printf(«a=%d; b=%dn», a, b);
a = a + b;
b = a — b;
a = a — b;
printf(«a=%d; b=%dn», a, b);
} 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)) 5
2
a=5; b=2
a=2; b=5
Для Python существует и третий способ решения задачи — через кортеж. Выглядит это, например, так: a,b = b,a. В результате данного действия значение b окажется связанным с a, значение a — с b.
КуМир
| 1-й способ:
алг обмен_значений
нач
цел а, б, в
ввод а
ввод б
вывод «а=»,а,»; б=»,б, нс
в := а
а := б
б := в
вывод «а=»,а,»; б=»,б, нс
кон
| 2-й способ:
алг обмен_значений
нач
цел а,б
ввод а
ввод б
вывод «а=»,а,»; б=»,б, нс
а := а + б
б := а — б
а := а — б
вывод «а=»,а,»; б=»,б, нс
кон 5
88
а=5; б=88
а=88; б=5
Basic-256
# 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 6
4
a=6; b=4
a=4; b=6