Что такое оператор условия. Условный оператор

Условные операторы позволяют выбирать для выполнения те или иные части программы в зависимости от некоторых условий. Если, например, в программе используются вещественные переменные x и z, и на каком-то этапе решения задачи требуется вычислить z=max(x, y), то желаемый результат получается в результате выполнения либо оператора присваивания z:=x, либо оператора присваивания z:=y. Поскольку значения переменных x и y заранее неизвестны, а определяются в процессе вычислений, то в программе необходимо предусмотреть оба эти оператора присваивания. Однако на самом деле должен выполниться один из них. Поэтому в программе должно содержаться указание о том, в каком случае надо выбирать для исполнения тот или иной оператор присваивания.

Это указание естественно сформулировать с использованием отношения x>y. Если это отношение при текущих значениях x и y справедливо (принимает значение true), то для исполнения должен выбираться оператор z:=x; в противном случае для исполнения должен выбираться оператор z:=y (при x=y безразлично, какой оператор выполнять, так что выполнение оператора z:=y в этом случае даст правильный результат).

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

if B then S1 else S2

Здесь if (если), then (то) и else (иначе) являются служебными словами, В – логическое выражение, а S1 и S2 – операторы.

Выполнение такого условного оператора в Паскале сводится к выполнению одного из входящих в него операторов S1 или S2: если заданное в операторе условие выполняется (логическое выражение В принимает значение true), то выполняется оператор S1, в противном случае выполняется оператор S2.

Алгоритм решения упомянутой выше задачи вычисления z= max(x, y) можно задать в виде условного оператора Паскаля

if x>y then z:= x else z:= y

При формулировании алгоритмов весьма типичной является такая ситуация, когда на определенном этапе вычислительного процесса какие-либо действия надо выполнить только при выполнении некоторого условия, а если это условие не выполняется, то на данном этапе вообще не нужно выполнять никаких действий. Простейшим примером такой ситуации является замена текущего значения переменной х на абсолютную величину этого значения: если x<0, то необходимо выполнить оператор присваивания x:= - x; если же x>=0, то текущее значение х должно остаться без изменений, т.е. на данном этапе вообще не надо выполнять каких-либо действий.

В подобных ситуациях удобна сокращенная форма записи условного оператора в Паскале:

if B then S

Правило выполнения сокращенного условного оператора Паскаля достаточно очевидно: если значение логического выражения В есть true, то выполняется оператор S; в противном случае никаких иных действий не производится.

В языке программирования Паскаль в условном операторе между then и else , а также после else по синтаксису может стоять только один оператор. Если же при выполнении (или невыполнении) заданного условия надо выполнить некоторую последовательность действий, то их надо объединить в единый, составной оператор, т.е. заключить эту последовательность действий в операторные скобки begin... end (это важно!) . Если, например, при x< y надо поменять местами значения этих переменных, то условный оператор будет записан следующим образом в Паскале:

if xthen begin r:=x; x:=y; y:=r end

Наличие сокращенной формы условного оператора Паскаля требует большой осторожности при использовании. Например, условный оператор

if B1 then if B2 then S1 else S2

допускает, вообще говоря, две разные трактовки:

  • как полный условный оператор Паскаля вида

if B1 then begin
if B2 then S1 end
else S2

  • как сокращенный условный оператор Паскаля вида

if B1 then begin
if B2 then S1 else S2 end

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

Оператор выбора Паскаля

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

Структура оператора выбора в Паскале такова:

Case <ключ_выбора> of
<список_выбора>
end

Здесь case, of, else, end – зарезервированные слова (случай, из, иначе, конец);

  • <ключ_выбора> - выражение порядкового типа;
  • <список_выбора> - одна или более конструкций вида:
    • <константа_выбора>: <оператор>;
  • <константа_выбора> - константа того же типа, что и выражение
    • <ключ_выбора>;

<операторы> - произвольные операторы Паскаля.

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else <оператор_иначе> можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.

Например, составим программу, которая по номеру дня недели выводит на экран его название:

Пример программы с использованием Case of

Program dni_nedeli;
Var n: byte;
Begin
Readln(n);
Case n of
1: writeln("понедельник ");
2: writeln("вторник ");
3: writeln("среда ");
4: writeln("четверг ");
5: writeln("пятница ");
6: writeln("суббота ");
7: writeln("воскресенье");
else writeln("дня недели с номером", n,"нет");
  end;
end.

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

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов " y" или " Y" выведет на экран «Да», а при вводе " n" или " N" – слово «Нет».

Пример программы с использованием Case of с несколькими переменными

Var ch: char;
Begin
Readln(ch);
Case ch of
N, n: writeln("Да ");
Y, y: writeln("Нет ");
End;
End.

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

При решении большинства задач вычислительные процессы разветвляются. Для определения дальнейшего направления исполнения программы используются выбирающие операторы. К этому классу относится условный оператор и оператор выбора .

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

Условный оператор может быть в двух формах: полной и краткой.

Полная форма условного оператора

Полная форма условного оператора в языке Паскаль имеет следующий вид:

  • if выражение then
  • оператор1
  • оператор2

Элемент выражение является логическим выражением. Если выражение имеет значение true (истина), то выполняется оператор1 (ветвь then ), иначе – оператор2 (ветвь else ). Затем, управление передается оператору, следующему после условного.

Рассмотрим фрагмент кода программы, определяющей минимальное значение из двух чисел:

{Фрагмент кода программы}

  • if (a > b) then
  • minDig:= b
  • minDig:= a;
  • writeln (minDig);

Если значение переменной a окажется больше значения переменной b , то выполнится оператор присваивания по ветке then (minDig получит значение b ), иначе - по ветке else (minDig получит значение a ), затем будет выведено значение переменной minDig .

В условном операторе после then и после else может располагаться только один оператор. Поэтому, если требуется использовать не один, а несколько операторов, то применяется составной оператор.

Краткая форма условного оператора

Краткая форма условного оператора записывается в следующем виде:

  • if выражение then
  • оператор

Если выражение принимает значение true (истина), то выполняется оператор , в противном случае происходит переход к следующему оператору программы. Так, в ниже следующем фрагменте кода программы, если число х окажется нечетным, то его значение будет увеличено на 1 (т. е. станет четным), в противном случае происходит переход к выводу значения х на экран.

Продолжаем изучать язык программирования Паскаль. Рассмотрим первую алгоритмическую конструкцию, которая изучается при изучении языка — условие (ветвление) . Статья предназначения для начинающих программистов, а также для учителей информатики. Задачи в конце статьи помогут закрепить знания и проверить себя.

Алгоритмическая конструкция УСЛОВИЕ используется в тех случаях, когда перед нами стоит выбор: сделать так или иначе.

Условие бывает:

  1. Неполное
  2. Полное

Неполное условие

Блок-схема неполного условия выглядит следующим образом:

Неполное условие

ЕСЛИ УСЛОВИЕ ИСТИННО, ТО ВЫПОЛНЯЕТСЯ ДЕЙСТВИЕ , ИНАЧЕ НИЧЕГО НЕ ПРОИСХОДИТ

На языке Паскаль данная алгоритмическая конструкция выглядит следующим образом:

IF условие THEN действие;

Если условие, стоящее после IF истинно THEN.

Что такое условие?

Условие — это выражение, которое может быть либо истинным, либо ложным. Условие обязательно содержит логические операторы <, >, =, <=, >=, <> (не равно) .

Например:

if a=7 then writeln("Привет!"); end.

Если введенное значение переменной a равно 7 , то на экране мы увидим слово Привет! Если не равно — то на экран ничего выводится не будет.

Рассмотрим другой пример:

var a:integer; begin readln(a); if a=7 then writeln("Привет!"); writeln("До встречи"); end.

Что мы увидим на экране, введя число 7? Увидим:

Привет!
До встречи

Что мы увидим на экране, введя число 10?

До встречи

Почему так? Почему До встречи выводится на экран в любом случае? Команда

writeln("До встречи");

не относится к конструкции If-Then

var a:integer; begin readln(a); if a=7 then writeln("Привет!"); writeln("До встречи"); // условие подсвечено голубым цветом end.

Как сделать так, чтобы оба действия относились к конструкции If-Then?

Необходимо заключить эти действия в так называемые операторные скобки : begin… end;

var a:integer; begin readln(a);

if a=7 then begin writeln("Привет!");

Writeln("До встречи");
end;

end.
Теперь, если мы введем число 10, то на экране ничего не увидим.

Составное (сложное) условие

Иногда приходится использовать сложное условие. Для его составления используются логические союзы: and или or.

  • Если мы используем and, то составное условие будет истинно, когда все простые условия истинны.
  • Если мы используем or, то составное условие будет истинно, когда хотя бы одно простое условие будет истинно.

Например:

a>7 и a<15 на языке паскаль будет записываться

(a>7) and (a<15)

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

(a=7) or (a>15)

Составное условие будет истинно, если: либо a=7 , либо a>17.

Задача:

Используя конструкцию If-Then, найти максимальное среди трех введенных чисел.

Решение

var a, b, c:integer; begin readln(a); readln(b); readln(c); if (a>b) and (a>c) then writeln("число ", a, " максимальное"); if (b>a) and (b>c) then writeln("число ", b, " максимальное"); if (c>a) and (c>b) then writeln("число ", c, " максимальное"); end.

Полное условие

Блок-схема полного условия выглядит так:

IF условие THEN действие_1 ELSE действие_2;

  • Если условие истинно , то выполняется действие, стоящее после слова Then .
  • Если условие ложно , то выполняется действие, стоящее после слова Else.

Если действий, которые выполняются, если условие истинно или ложно несколько — используются операторные скобки .

if условие then begin действие; действие; ............... end else begin действие; действие; ................ end ;

(перед else точка с запятой не ставится)

Задачи для самостоятельного выполнения:

  1. Сумма покупки составляет а рублей. Если а больше 1000 рублей, то предоставляется скидка 15%. Вывести на экран сумму покупки с учетом скидки либо сообщение о том, что скидка не предоставляется.
  2. Известны площади круга и квадрата. Определить:
    • уместится ли круг в квадрате
    • уместится ли квадрат в круге
  3. Определить, является ли число а делителем числа b
  4. Проверить, принадлежит ли число введенное с клавиатуры, интервалу (-5;3).
  5. Дано двузначное число. Определить:
    • входит ли в него цифра 3
    • входит ли в него цифра а
  6. Определить, является ли треугольник со сторонами a, b, c равнобедренным
  7. Даны три различных числа. Определить, какое из них (первое, второе или третье)
    • самое большое
    • самое маленькое
    • является средним

(список задач будет пополняться)

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

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

Так (или, иначе, условной инструкцией ветвления) называют конструкцию языка программирования. Она обеспечивает выполнение какой-то команды или их набора. Но это возможно только тогда, когда соблюдается условие истинности определённого логического выражения или поступило указание от пользователя (оператора техники) на воплощение.

Общее описание применения

Оператор условный применяют тогда, когда выполнение или игнорирования определённого набора команд (реже команды) зависит от того, существуют ли для этого определяющие факторы. Также может применяться он с прицелом на ветвление. Оно является одной из трех базовых конструкций, которые применяются в

Оператор условного перехода

Прежде давайте немного отвлечёмся и вспомним довольно популярную картину Васнецов Виктора Михайловича «Витязь на распутье», написанную в 1878. Она изображает богатыря, который остановился на распутье и решает, куда ему ехать. Подобным образом действует и оператор условный. Так, если витязь примет предложение отправиться в одну сторону, но он пойдёт по одной ветви. И выбор может осуществляться только один. Если говорить про оператор условный, то срабатывает он только тогда, когда его логическое выражение имеет значение «истина». Большинство языков программирования для его обозначения использует ключевое слово if. Возможно построение каскадом, когда проверяется сначала одно условие, потом другое, затем третье, четвертное и так далее. Давайте рассмотрим этот вопрос более подробно. Какие существуют формы условных операторов? Всего их три:

  1. Условный оператор, в котором есть только одна ветвь. Выглядит он (усреднено) таким образом: if необходимые условия then выполняемые команды end. Компьютерная машина вычисляет, соответствует ли логическое значение показателю истины. Если условие совпадает с данными других частей программы, то начинает исполняться код, пока не будет ключевое слово end. В ассемблерах подобная форма работы является единственной доступной для программиста. Также может быть и такое, что в конце не будет какого-то ключевого слова, и тогда необходимо быть острожным, чтобы не приписать чего-то лишнего.
  2. Условный оператор, в котором присутствует две ветви. Выглядит он следующим образом: if заданное условие then команда1 else команда2 end. Используется данная программная конструкция в тех случаях, когда необходимо, чтобы одна из команд точно была выполнена. Поэтому если условие истинно, то выполняется первая часть кода, если нет - вторая. В некоторых случаях именно такое решение необходимо.
  3. Условный оператор с некоторым количеством условий. Он выглядит следующим образом:
    if первое условие then что делать
    else if если первое условие не подошло, проверяем следующее then что делать
    else if проверяем все условия одно за одним then что делать
    else если ни один вариант из вышеприведённых не подходит, значит выполняется эта команда end

Как видите, условный оператор использует различные конструкции. Их выполнение происходит последовательно. То есть, невозможна ситуация (на нормальной технике), при которой выполнение кода начнётся с конца - всегда с начала.

Пример с "Паскалем"

Чтобы понять, как это работает, предлагаем рассмотреть пример на одном из самых популярных языков программирования. Условный оператор в "Паскале" может быть простым и сложным. Первый тип - это символы вроде =, <, > и других подобных. Сложный условный оператор в паскале может принимать такой вид:

if а>=у
then
ор:=Sqr(а-у)
else
write (Введены недопустимые значения);

Что такое переключатель?

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

История развития

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

Подобные конструкции можно увидеть в таких языках программирования, как "Бейсик" и "Фортран". Нельзя сказать, что они значительно устарели, ведь до сих пор они могут похвастаться достаточно высокой эффективностью, если говорить вообще про программирование. Условный оператор, который используется в современных языках, является более сложной конструкцией, что сказывается на быстродействии. Возвращаясь к истокам этого элемента, хочется добавить, что для определения необходимой ветки не нужно последовательно обрабатывать и сравнивать результат выражения с другими значениями. Просто происходит запись в памяти массива команд безусловного перехода, в котором и содержаться нужные адреса. Когда выполняется необходимое указание, то нужная информация попросту вычисляется. И скорость работы программы становится независимой от количества меток.

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

Особенности вычисления логических выражений

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

  1. Полное вычисление. Проводится расчет всех параметров с предоставленными значениями, а потом И.
  2. Неполное вычисление. Отдельно считается каждый параметр. Если выражение имеет значение «истина», то обсчитывают следующий параметр. Действует в случае ИЛИ.

Заключение

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

Лабораторная Работа

На тему: "Оператор условия if - else "


1. Назначение и синтаксис

Оператор условия if-else служит для выбора направления работы программы в зависимости от условий, сложившихся в данной точке программы на момент ее выполнения.

Общая форма записи условного оператора

if ( <условие>)

<блок операторов 1>;

<блок операторов 2>;

Если на момент выполнения <условие> истинно, программа передает управление <блоку операторов 1> и, далее, первому оператору за пределами конструкции if-else. При этом <блок операторов 2> не выполняется. Иначе, если <условие> ложно, выполняется <блок операторов 2>, а <блок операторов 1> пропускается. Соответствующая блок-схема


Фигурные скобки в синтаксисе оператора if-else используются для выделения в тексте блоков 1 и 2. Старайтесь располагать закрывающую скобку под открывающей для улучшения читаемости программного кода. Для этой же цели текст внутри фигурных скобок необходимо смещать вправо на несколько позиций.

В качестве условия в операторах if-else могут использоваться любые логические выражения, принимающие значения «истинно» или «ложно» (true – false). Ниже приведена таблица с указанием простейших операций сравнения целых и вещественных чисел

Пример 1. Требуется написать программу, переводящую температуру по шкале Цельсия T C (°С) в температуру по Кельвину T K (К). Значение T C вводится пользователем с клавиатуры.

Решение. Используем известную формулу преобразования – T K = T C – T 0 , где T 0 = –273 °С – температура абсолютного нуля. Будем считать введенное T C некорректным, если оно меньше T 0 .

// – KelvinvsCelsius–

#include // для потокового В/В

#include // для консольного В/В (getch)

#pragma argsused

floatT0 = -273; // объявляем и инициализируем T0

floatTc, Tk; // объявляем вещественные Tc и Tk

cout<<» VvediteTc=»; // выводим приглашение

cin>>Tc; // запрашиваем Tc

if ( Tc < T 0) // проверяем условие Tc

cout<<» Tc < T0!»; // условие истинно, выводим на

} // экран сообщение об ошибке

Tk = Tc-T0; // условие ложно, рассчитываем

cout << «Tk =» << Tk; // Tk и выводим на экран

getch(); // задержка до нажатия на клавишу

return 0; // завершение программы

Наберите приведенный выше код, откомпилируйте его и запустите программу на выполнение. Исследуйте результаты работы при различных значениях T C .

2. Сокращенные варианты записи

При программировании обыденной является ситуация, когда требуются некоторое действие в ответ на сложившиеся условия (например, если получены неверные исходные данные от пользователя, то выдать сообщение об ошибке и выйти из программы). В таких случаях в программах на C++ может использоваться сокращенная запись оператора условия с отсутствующим блоком else. Общая форма такой записи

if ( <условие>)

<блок операторов>;

Здесь в случае истинности условия управление передается блоку операторов в фигурных скобках. В случае ложности условия этот блок пропускается. Соответствующая блок-схема отличается от предыдущей отсутствием одного «плеча»


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

if ( <условие>)

оператор 1;

оператор 2;

Здесь в качестве операторов 1 и 2 могут быть не только простые однострочные арифметические действия или операторы ввода-вывода, но и сложные многострочные конструкции, например другие (вложенные) операторы условия или операторы цикла, которые будут рассмотрены ниже.

3. Вложенные операторы

Операторы условия могут быть вложенными друг в друга, в соответствии с тем программным алгоритмом, который они реализуют. Допускается произвольная степень их «вложенности».

Если один оператор if-else вложен в другой, то первый оператор входит во второй полностью , а не только какой-либо одной своей частью if или else. Недопустимым является частичное перекрывание между собой их отдельных блоков.

В приведенном примере один из операторов (выделен полужирным шрифтом) вложен в другой. Запись Б) является ошибочной в силу того, что блок else внутреннего оператора условия частично пересекается с обоими блоками if и else внешнего оператора.

Пример 2. Пользователь вводит с клавиатуры три целых числа a, b, c. Необходимо вывести на экран наибольшее из этих чисел.

Решение. Один из возможных алгоритмов решения этой задачи показан на следующей блок-схеме.


Схема может быть реализована программно с помощью вложенных операторов if-else

// – Выбор наибольшего из 3 чисел –

#include

#include

#pragma argsused

int main (int argc, char* argv)

float a, b, c; // объявляем три переменные

cout<< «Vvedite a –»; // вводимзначения a, b, c

cout<< «Vvedite b –»;

cout<< «Vvedite c –»;

if (a>b) // если a > b

if (a>c) // иесли a > c

cout<<» max = «<

else // иначе, т.е. если a <= с

cout<<» max = «<

else // иначе, т.е. если a <= b

if (b>c) // и если b > c

cout<<» max = «<

else // иначе, т.е. если b <= а

cout<<» max = «<

getch(); // задержка до нажатия любой клавиши

Разберите блок-схему этого алгоритма и его программную реализацию. Модифицируйте алгоритм и программный код для поиска наименьшего из трех чисел.

4. Составные логические выражения

Условие в операторе if-else может быть выражено не только в виде простого сравнения двух числовых значений. Например, весьма распространены двойные условия, которые в математике записываются в виде «a < b < c». Запись означает, что значение b лежит в диапазоне между значениями a и c. В программе такие условия должны быть переформулированы с использованием простых операций сравнения и логических операций «И», «ИЛИ», «НЕ»

В частности, выражение «a < b < c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (a

if((a

Пример 3. На пустой шахматной доске в позиции (n, m) находится белая пешка, в позиции (k, l) – черный слон. Здесь первая координата есть номер столбца шахматной доски, вторая – номер строки (обе изменяются в диапазоне от 1 до 8). Оцените текущую ситуацию в соответствии с тремя вариантами

Пешка находится под ударом,

Слон находится под ударом,

Слон и пешка в «безопасности».

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

· «((k = n+1) ИЛИ (k = n‑1)) И (l = m+1)» – атака пешки на слона,

· «(k+l = n+m) ИЛИ (k-l = n-m)» – атака слона на пешку,

· иначе фигуры в безопасности.

// – Шахматная композиция –

#include

#include

int main (int argc, char* argv)

cout<<«Koordinaty beloi peshki:«<

cout<<» vvedite n –»;

cout<<» vvedite m –»;

cout<<«Koordinaty chernogo slona:«<

cout<<» vvedite k –»;

cout<<» vvedite l –»;

if(((k==n+1)||(k==n‑1))&&(l==m+1)) // атакован слон

cout<

if((k+l==n+m)||(k-l==n-m)) // атакованапешка

cout<

else // нетатаки

cout<

В продолжение темы:
Android

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