Даны две целые переменные а б составить фрагмент программы после исполнения которого значения

Даны две целые переменные a, b. Составить фрагмент программы, после исполнения которого значения переменных поменялись бы местами (новое значение a равно старому значению b и наоборот), при этом нельзя использовать дополнительные переменные.

Решение.

С использованием дополнительной переменной, решение данной задачи не представляет труда:

t := a; a := b; b := t;

Но по условию мы не можем использовать другие переменные. Попытка записать так:

a := b; b := a;

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

Для решения поставленной задачи есть несколько способов.

1) стандартный алгоритм:

a:=a+b; b:=a-b; a:=a-b;

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

2) Использование XOR(исключающая дизъюнкция):

a:=a xor b; b:=a xor b; a:=a xor b;

>Функция XOR производит сложение операндов в соответствии с таблицей истинности:

Переменные и принципы работы с данными в VBA (Серия VBA 3)


1 xor 1 = 0 1 xor 0 = 1 0 xor 1 = 1 0 xor 0 = 0

Результат преобразовывается в десятичную форму счисления.

Оставить комментарий

Комментарии

05 января 2007 года
0 / / 05.01.2007
5 января 2007, 18:33:50
($a,$b)=($b,$a) the Perl language
30 мая 2006, 13:44:16

<
> Но как мне таким способом поменять строковые переменные?

А ты попробуй посимвольно! А если одна из строк длиннее, то конец длинной добавь к короткой и ВСЁ. Единственный недостаток состоит в том, что это будет работать только если строка «a» меньше своей возможной длинны.
>
program a1;
var
a,b:string;
BEGIN
a:=’Text’;
b:=’LongTexttttt’;
write(a,’ и ‘,b);
a[byte(a[0])+1]:=#1;
repeat
if byte(a[byte(a[0])+1])>b[0] then
begin
b:=b+a[byte(a[byte(a[0])+1])];
end;
a[byte(a[byte(a[0])+1])]:=a[byte(a[byte(a[0])+1])] xor b[byte(a[byte(a[0])+1])];
b[byte(a[byte(a[0])+1])]:=a[byte(a[byte(a[0])+1])] xor b[byte(a[byte(a[0])+1])];
a[byte(a[byte(a[0])+1])]:=a[byte(a[byte(a[0])+1])] xor b[byte(a[byte(a[0])+1])];
a[byte(a[0])+1]:=chr(byte(a[byte(a[0])+1])+1);
until a[byte(a[0])+1]=a[0];
write(a,’ и ‘,b);
END.

Читайте также:
Программа которая убирает все рекламы

30 июля 2005, 03:23:22

Вот это, конечно, прикольно:
a:=a+b;
b:=a-b;
a:=a-b;

Но как мне таким способом поменять строковые переменные?

26 июля 2005, 15:52:50

чё вы все ерепенитесь.
хорошая статья-пример!

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

так что моя оценка — 5.

Источник: codenet.ru

Даны две целые переменные а б составить фрагмент программы после исполнения которого значения

Даны две целые переменные a , b . Составить фрагмент программы, после исполнения которого значения переменных поменялись бы местами (новое значение a равно старому значению b и наоборот).

Задание 12 // ЕГЭ по информатике 2022

Решение

Введём дополнительную целую переменную t .

t := a; a := b; b := t;

Замечание. Попытка обойтись без дополнительной переменной, написав

a := b; b := a;
не приводит к цели (безвозвратно утрачивается начальное значение переменной a ).

Источники и прецеденты использования

книга
Автор А.Шень
Название Программирование: теоремы и задачи
Издательство МЦНМО
Издание второе
Год издания 2004
глава
Номер 1
Название Переменные, выражения, присваивания
параграф
Номер 1
Название Задачи без массивов
задача
Номер 1.1.1

Проект осуществляется при поддержке и .

Источник: problems.ru

Даны две целые переменные A, B. Составить фрагмент программы, после исполнения которого, значения переменных поменялись

Как быстро выучить стихотворение наизусть? Запоминание стихов является стандартным заданием во многих школах.

Как научится читать по диагонали? Скорость чтения зависит от скорости восприятия каждого отдельного слова в тексте.

Как быстро и эффективно исправить почерк? Люди часто предполагают, что каллиграфия и почерк являются синонимами, но это не так.

Как научится говорить грамотно и правильно? Общение на хорошем, уверенном и естественном русском языке является достижимой целью.

  • Обратная связь
  • Правила сайта
Читайте также:
Программа да винчи требования

Источник: www.soloby.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru