Условия
Условие – логическое выражение, о котором можно сказать истинно оно или ложно.Различают два вида условий – простые и составные.
Простым условием называется логическое выражение, составленное из двух арифметических выражений или двух величин, связанных одним из знаков отношений:
< - меньше чем
> - больше чем
<= - меньше или равно
>= - больше или равно
!= - не равно
== - равно
Например, простыми условиями являются:
x - y > 10
m <= c + a + b
n != k
x < 5
n % 2 == 0
Составное условие – логическое выражение, содержащее несколько простых условий объединенных логическими операциями.
Это операции ! (не), && (и) , || (или).
Примечание: false - ложь, true - истина.
Операция ! (не) - логическое отрицание. Результат операции not есть False, если операнд истинен, и True, если операнд имеет значение ложь.
Результат операции && (и) истина, только если оба ее операнда истинны, и ложь во всех других случаях.
Результат операции || (или) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.
Например:
Переменные логического типа описываются посредством идентификатора bool. Они могут принимать только два значения – false и true.
Инициализируются переменные логического типа таким образом:
bool flag, ans;
Переменные логического типа могут быть преобразованы в тип int, при этом true преобразуется в 1, а false в 0.
int flag = true; // flag присваивается значение 1
Разветвляющимся называется такой алгоритм, в котором выбирается один из нескольких возможных вариантов вычислительного процесса.
if (условие)
оператор1;
else
оператор2;
Краткая форма:
if условие
оператор;
if (если), else (иначе) - служебные слова.
Если условие, стоящее за служебным словом if, истинно, то выполняется оператор1. Если условие ложно, то при использовании полной формы оператора, выполняется оператор2.
После служебных слов then и else может стоять только один оператор, если операторов несколько, то они записываются в фигурных скобках: {оператор1; оператор2; оператор3}
Ввод: a, b
#include <iostream>
using namespace std;
int main()
{
int a, b, x;
cin >> a >> b;
cin >> x;
if (a <= x && x <= b)
cout << "yes\n";
else
cout << "no\n";
return 0;
}
Задание 5. Вывести на экран большее из двух данных чисел.
Ввод: x, y - числа
Вывод: max=..., min=...
Посмотреть решение
Тесты Посмотреть решение
Задание 9. Составьте программу, определяющую, является ли число А делителем числа В.
Тесты Посмотреть решение
Задание 10. Составьте программу, заменяющую меньшее из двух данных чисел суммой, а большее - произведением этих чисел (числа не равны).
Тесты Посмотреть решение
2. Даны положительные числа a, b, c, х. Выяснить, пройдет ли кирпич с ребрами a, b, c в квадратное отверстие со стороной х. Просовывать кирпич в отверстие можно только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.
3. Даны три числа a, b, c. Удвоить каждое из данных чисел, если a>=b>=c и заменить числа их модулями в противном случае.
4. Даны числа х, у. Если х и у отрицательны, то каждое значение заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на 5; если оба значения неотрицательны, то оба значения увеличить в 10 раз.
5. Если сумма трех попарно различных чисел x, y, z меньше единицы, то меньшее из х, у заменить суммой y и z, иначе большее из х и z заменить на 5у.
6. Даны три целых числа, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа, отличного от остальных.
7. Даны четыре целых числа, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных.
8. Длины сторон треугольника равны a, b, c. Определить, является ли этот треугольник: а) равносторонним, равнобедренным, разносторонним; б) остроугольным, тупоугольным или прямоугольным.
9. Даны величины трех углов четырехугольника ABCD: угол А равен a, угол В равен b, угол С равен c. Является ли этот четырехугольник параллелограммом, трапецией или не является ни параллелограммом, ни трапецией?
10. Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
1. Дано трехзначное число. Определить, верно ли, что все его цифры одинаковые.
2. Составить программу определения наибольшего и наименьшего из трех заданных чисел.
3. Даны три числа. Определить, существует ли треугольник со сторонами равными введенным числам. (Треугольник существует, если сумма меньших сторон больше наибольшей стороны и все числа положительны)
4. Составить программу определения номера координатной четверти для введенных чисел, координат точки.
5. Дано трехзначное число. Выяснить, является ли оно палиндромом («перевертышем»), т. е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево.
Составное условие – логическое выражение, содержащее несколько простых условий объединенных логическими операциями.
Это операции ! (не), && (и) , || (или).
Примечание: false - ложь, true - истина.
Значения операндов
|
Результат операции
|
|||
X
|
Y
|
!X
|
X &&Y
|
X || Y
|
false
|
false
|
true
|
false
|
false
|
false
|
true
|
true
|
false
|
true
|
true
|
false
|
false
|
false
|
true
|
true
|
true
|
false
|
true
|
true
|
Операция ! (не) - логическое отрицание. Результат операции not есть False, если операнд истинен, и True, если операнд имеет значение ложь.
Результат операции && (и) истина, только если оба ее операнда истинны, и ложь во всех других случаях.
Результат операции || (или) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.
Например:
5 == 5 || 5 == 7 // истинно, т.к. первое простое условие истинно
5 < 3 || 5 > 7 // ложно, т.к. оба простых условия ложны
5 == 5 && 5 == 7 // ложно, т.к. второе простое условие ложно
5 < 3 && 5 > 7 // ложно, т.к. оба простых условия ложны
5 > 3 && 5 < 7 // истинно, т.к. оба простых условия истинны
! (5 > 3) // ложно, т.к. простое условие ложно
! (5 < 3) // истинно, т.к. простое условие ложно
Логический тип данных
Запись составных условий упрощает использование переменных логического типа.Переменные логического типа описываются посредством идентификатора bool. Они могут принимать только два значения – false и true.
Инициализируются переменные логического типа таким образом:
bool flag, ans;
Переменные логического типа могут быть преобразованы в тип int, при этом true преобразуется в 1, а false в 0.
int flag = true; // flag присваивается значение 1
int ans = false; // ans присваивается значение 0
• !
• && , *, /, %
• ||, +, -
• операции отношения.
Порядок выполнения операций может изменяться скобками.
Порядок выполнения операций
Логические операции, операции отношения и арифметические операции часто встречаются в одном выражении. При этом отношения, стоящие слева и справа от знака логической операции, должны быть заключены в скобки, поскольку логические операции имеют более высокий приоритет. Вообще принят следующий приоритет операций:• !
• && , *, /, %
• ||, +, -
• операции отношения.
Порядок выполнения операций может изменяться скобками.
Например,
4 3 2 1
A || B && ! (A || B)
Сначала выполняется заключенная в скобки операция ||, а затем операции !, &&, ||. Если подставить вместо переменных А и В значения True и False, то, используя уже рассмотренный порядок действий, получим значение всего выражения равное True.
Переменным логического типа можно задать значение командой присваивания, а также можно вывести значения переменных логического типа с помощью оператора вывода.
Например, после выполнения оператора cout << (-1>2) на экран будет выведен 0.
Посмотреть решение
1) ни одно из чисел a, b, c не является положительным;
2) только одно из чисел a, b, c положительно.
Задание 2. Вычислите значения выражений при a=20, b=1, c=true, d=false:
а) (a > 10) && (b > 20) && (a < 30) && (b < 20);
b) ! (b < 10) || !(a < 20);
c) c || d && (b == 1);
Задание 3. Вычислите значения выражений при a=True, b=False:
а) a || b && !a;
б) (a || b) && !a.
4 3 2 1
A || B && ! (A || B)
Сначала выполняется заключенная в скобки операция ||, а затем операции !, &&, ||. Если подставить вместо переменных А и В значения True и False, то, используя уже рассмотренный порядок действий, получим значение всего выражения равное True.
Переменным логического типа можно задать значение командой присваивания, а также можно вывести значения переменных логического типа с помощью оператора вывода.
Например, после выполнения оператора cout << (-1>2) на экран будет выведен 0.
Задания
Задание 1. Верно ли, что все числа a, b, c положительны?Посмотреть решение
Экспериментальный раздел работы
Измените программу для определения истинности:1) ни одно из чисел a, b, c не является положительным;
2) только одно из чисел a, b, c положительно.
Задание 2. Вычислите значения выражений при a=20, b=1, c=true, d=false:
а) (a > 10) && (b > 20) && (a < 30) && (b < 20);
b) ! (b < 10) || !(a < 20);
c) c || d && (b == 1);
Задание 3. Вычислите значения выражений при a=True, b=False:
а) a || b && !a;
б) (a || b) && !a.
Разветвляющиеся алгоритмы. Оператор условия if
Разветвляющимся называется такой алгоритм, в котором выбирается один из нескольких возможных вариантов вычислительного процесса.
Общий вид оператора ветвления:
Полная форма:if (условие)
оператор1;
else
оператор2;
Краткая форма:
if условие
оператор;
if (если), else (иначе) - служебные слова.
Если условие, стоящее за служебным словом if, истинно, то выполняется оператор1. Если условие ложно, то при использовании полной формы оператора, выполняется оператор2.
После служебных слов then и else может стоять только один оператор, если операторов несколько, то они записываются в фигурных скобках: {оператор1; оператор2; оператор3}
Задания
Задание 4. Определить принадлежит ли заданное число х отрезку [a; b].Ввод: a, b
х
Вывод: текст "yes" или "no"
Вывод: текст "yes" или "no"
#include <iostream>
using namespace std;
int main()
{
int a, b, x;
cin >> a >> b;
cin >> x;
if (a <= x && x <= b)
cout << "yes\n";
else
cout << "no\n";
return 0;
}
Задание 5. Вывести на экран большее из двух данных чисел.
Ввод: x, y - два числа (числа не равны)
Вывод: большее из данных чисел
Вывод: большее из данных чисел
Посмотреть решение
2) Измените программу для нахождения большего из трех чисел.
Сокращенная форма используется тогда, когда в случае невыполнения условия ничего делать не надо.
Если выражение, расположенное за служебным словом IF в результате дает истину, выполняются действия после условия, в противном случае эти действия пропускаются и управление передается оператору, непосредственно следующему за условным оператором.
Задание 6. Составить программу, которая меняет отрицательное число на противоположное ему.
Экспериментальный раздел работы
1) Измените программу для нахождения меньшего из двух чисел.2) Измените программу для нахождения большего из трех чисел.
Сокращенная форма используется тогда, когда в случае невыполнения условия ничего делать не надо.
Если выражение, расположенное за служебным словом IF в результате дает истину, выполняются действия после условия, в противном случае эти действия пропускаются и управление передается оператору, непосредственно следующему за условным оператором.
Задание 6. Составить программу, которая меняет отрицательное число на противоположное ему.
Ввод: x, y - числа
Вывод: max=..., min=...
Посмотреть решение
Вложенное ветвление
Задание 8. Дано целое число, не равное 0. Составить программу, деления неотрицательного числа, которое кратно 4 на 4 и вычисления модуля отрицательного числа.Тесты Посмотреть решение
Задание 9. Составьте программу, определяющую, является ли число А делителем числа В.
Тесты Посмотреть решение
Задание 10. Составьте программу, заменяющую меньшее из двух данных чисел суммой, а большее - произведением этих чисел (числа не равны).
Тесты Посмотреть решение
Задания
1. Даны положительные числа a, b, c, d. Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон одного прямоугольника была параллельна или перпендикулярна каждой стороне второго прямоугольника. Ответ получить в текстовой форме: можно или нельзя.2. Даны положительные числа a, b, c, х. Выяснить, пройдет ли кирпич с ребрами a, b, c в квадратное отверстие со стороной х. Просовывать кирпич в отверстие можно только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.
3. Даны три числа a, b, c. Удвоить каждое из данных чисел, если a>=b>=c и заменить числа их модулями в противном случае.
4. Даны числа х, у. Если х и у отрицательны, то каждое значение заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на 5; если оба значения неотрицательны, то оба значения увеличить в 10 раз.
5. Если сумма трех попарно различных чисел x, y, z меньше единицы, то меньшее из х, у заменить суммой y и z, иначе большее из х и z заменить на 5у.
6. Даны три целых числа, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа, отличного от остальных.
7. Даны четыре целых числа, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных.
8. Длины сторон треугольника равны a, b, c. Определить, является ли этот треугольник: а) равносторонним, равнобедренным, разносторонним; б) остроугольным, тупоугольным или прямоугольным.
9. Даны величины трех углов четырехугольника ABCD: угол А равен a, угол В равен b, угол С равен c. Является ли этот четырехугольник параллелограммом, трапецией или не является ни параллелограммом, ни трапецией?
10. Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
Задания для самостоятельной работы
1. Дано трехзначное число. Определить, верно ли, что все его цифры одинаковые.
2. Составить программу определения наибольшего и наименьшего из трех заданных чисел.
3. Даны три числа. Определить, существует ли треугольник со сторонами равными введенным числам. (Треугольник существует, если сумма меньших сторон больше наибольшей стороны и все числа положительны)
4. Составить программу определения номера координатной четверти для введенных чисел, координат точки.
5. Дано трехзначное число. Выяснить, является ли оно палиндромом («перевертышем»), т. е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево.