Обмен значений переменных при помощи поразрядных операций

      Комментарии к записи Обмен значений переменных при помощи поразрядных операций отключены

Обмен значений переменных с использованием дополнительной переменной

С= А; А= В; В= С

Обмен значений переменных без использования дополнительной переменной

А = А + В; В = A – B; А = А – В

Обмен значений переменных при помощи поразрядных операций

Поразрядное «исключающее или» (то же самое, что сложение по модулю 2), обладает замечательным свойством X ^ X = 0. Это свойство обычно используют в ассемблерных программах для быстрого обнуления регистров процессора. Эта операция ассоциативна и коммутативна (то есть выполняются сочетательный и переместительный законы).

Поэтому (Х ^ Y) ^ Y = Х ^ (Y ^ Y) = X ^ 0 = X.

Аналогично, (Y ^ X) ^ Y = (Х ^ Y) ^ Y = Х.

20. Структурированные операторы. Понятие составного оператора. Пример.

Структурированные операторы представляют собой конструкции, построенные по определенным правилам из других операторов. К структурированным операторам относятся:

? составной оператор;

? условный оператор;

? оператор выбора;

? операторы цикла (повтора);

? оператор доступа.

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

Формат составного оператора: { ; …; ;}

Пример составного оператора:

{

S:=0;

Cout

}

21. Структурированные операторы. Условный оператор. Формы условного оператора. Пример.

Условный оператор обеспечивает выполнение или невыполнение некоторых операторов в зависимости от соблюдения определенных условий. Условный оператор в общем случае предназначен для организации ветвления программы на два направления.

Формат составного оператора:

if () ; [else ;]

С помощью условного оператора можно реализовывать алгоритмы с разветвлением.

В общем случае условный оператор можно представить в виде схемы:

Условие представляет собой выражение, логического типа. Оператор работает следующим образом: если условие истинно (имеет значение true), то выполняется оператор1, в противном случае — оператор 2. Оба оператора могут быть составными.

Пример условных операторов:

if (х0) x=x+1;

else x=0;

if (q = 0) a=1;

22. Алгоритмы нахождения наибольшего (наименьшего) из трех чисел. Пример.

Найти наибольшее значение из трех заданных чисел.

#include

int main ()

{

int a,b,c;

cout

cinabc;

int max=a;

if (bmax) max=b;

if (cmax) max=c;

cout

return 0;}

Найти наибольшее значение из трех заданных чисел, неиспользуя условный оператор

#include

#include

int main ()

{

int a,b,c;

cout

cinabc;

int max=(a+b+abs(a-b))/2; //нашли max среди a и b

max=(max+c+abs(max-c))/2; //нашли max среди c и max

cout

return 0;

}

23. Алгоритм нахождения количества (суммы) чисел удовлетворяющих некоторому условию из трех заданных.

24. Алгоритм нахождения произведения чисел удовлетворяющих некоторому условию из трех заданных.

25. Структурированные операторы. Оператор выбора. Пример.

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

Формат оператора выбора:

switch ()

{

case: ;

case: ;

case: ;

[default: ;]

}

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

Оператор выбора выполняется следующим образом:

• вычисляется значение выражения селектора;

• производится последовательный просмотр вариантов на предмет совпадения значения селектора с константными выражениями;

• если для очередного варианта этот, поиск успешный, то выполняется оператор этого варианта, после чего выполняются все остальные ветви.

• если все проверки оказались безуспешными, то выполняется оператор стоящий после слова default (при его наличии).

26. Операторы передачи управления. Пример.

В С/С++ есть четыре оператора, изменяющих естественный порядок выполнения вычислений:

? оператор безусловного перехода goto;

? оператор выхода из цикла break;

? оператор перехода к следующей итерации цикла continue;

? оператор возврата из функции return.

Курсы программирования. Алгоритм №9. Обмен местами значений двух переменных