ОАиП_ЛР_02 (1). Разработка и отладка разветвляющихся алгоритмов и программ
Скачать 312.49 Kb.
|
ЛАБОРАТОРНАЯ РАБОТА № 2 Тема: Разработка и отладка разветвляющихся алгоритмов и программ Цель: Сформировать умения разрабатывать и тестировать разветвляющиеся алгоритмы и программы, выполнять их отладку. Краткие теоретические сведения Тернарный оператор сравнения В языке С++ присутствует так называемая условная операция, которая имеет следующий синтаксис: условие ? выражение №1 : выражение №2; Принцип выполнения условной операции: вычисляется условие, если оно истинно (имеет ненулевое значение), то вычисляется и возвращается значение выражения №1, в противном случае – выражения №2. Предполагается, что условие является выражением, значение которого можно интерпретировать как логическое. Оператор ветвления Оператор ветвления (условия) имеет следующий синтаксис: if(условие) оператор_1; if(условие) оператор_1; else оператор_2; if(условие) { оператор_1; … оператор_N; } if(условие) { оператор_1; … оператор_N; } else { оператор_1; … оператор_N; } Условие в круглых скобках может быть любым выражением, результат которого может трактоваться как логическое значение. Если условие истинно, то выполняется блок операторов после if, в противном случае – после else. Если оператор в теле блока if или теле альтернативной ветви else один, то заключать его в фигурные скобки необязательно. Альтернативный блок else может отсутствовать. Также, язык «С» допускает вложения операторов условия друг друга. Порядок вложения определяется с помощью фигурных скобок. Оператор выбора Оператор выбора имеет следующий синтаксис: switch(выражение) { case константа № 1: составной оператор № 1; case константа № 2: составной оператор № 2; case константа № N: составной оператор № N; default: составной оператор № N+1; } Выражение оператора выбора может представлять любое математическое выражение, результат которого является целочисленным. Оператор case содержит после себя целочисленную или символьную константу, далее через двоеточие указывается составной оператор, который будет выполнен при совпадении значения выражения и константы. Оператор default называется оператором по умолчанию и содержит после себя оператор, который будет выполняться, если значение выражения не совпало ни с одной из констант. Оператор по умолчанию необязателен и может отсутствовать. Алгоритм функционирования оператора выбора следующий. Сначала вычисляется значение выражения. Затем вычисленное значение по порядку сравнивается с каждой константой в списке операторов case и если значения совпадают, то осуществляется выполнение соответствующего составного оператора. После выполнения составного оператора осуществляется выполнение следующего по списку составного оператора и т.д. Если ни одна из констант не совпала со значением выражения, то выполняется составной оператор, указанный после оператора default. Выполнение всех составных операторов после первого совпадения не всегда удобно. Поэтому последним оператором в составном операторе обычно является оператор безусловного перехода break, который осуществляет завершение выполнения оператора switch. Задания для выполнения При выполнении заданий необходимо реализовать дружественный интерфейс: при вводе (выводе) данных выводится приглашение, которое содержит описание вводимой (выводимой) величины (назначение и тип). В данной лабораторной работе предполагается, что все значения будут вводиться корректно. Поэтому проверку на корректность ввода с использованием операторов управления производить не надо. Задание 1 Выполнить задание (таблица 1) с помощью оператора сравнения условие?оператор1:оператор2. Таблица 1 – Варианты заданий Вариант Задание 1) Дано целое число A. Проверить истинность высказывания: «Число A является положительным». 2) Дано целое число A. Проверить истинность высказывания: «Число A является нечётным». 3) Дано целое число A. Проверить истинность высказывания: «Число A является чётным». 4) Даны два целых числа: A, B. Проверить истинность высказывания: «Справедливы неравенства A > 2 и B ≤ 3». 5) Даны два целых числа: A, B. Проверить истинность высказывания: «Справедливы неравенства A ≥ 0 или B < –2». 6) Даны три целых числа: A, B, C. Проверить истинность высказывания: «Справедливо двойное неравенство A < B < C». Вариант Задание 7) Даны три целых числа: A, B, C. Проверить истинность высказывания: «Число B находится между числами A и C». 8) Даны два целых числа: A, B. Проверить истинность высказывания: «Каждое из чисел A и B нечётное». 9) Даны два целых числа: A, B. Проверить истинность высказывания: «Хотя бы одно из чисел A и B нечётное». 10) Даны два целых числа: A, B. Проверить истинность высказывания: «Ровно одно из чисел A и B нечётное». 11) Даны два целых числа: A, B. Проверить истинность высказывания: «Числа A и B имеют одинаковую чётность». 12) Даны три целых числа: A, B, C. Проверить истинность высказывания: «Каждое из чисел A, B, C положительное». 13) Даны три целых числа: A, B, C. Проверить истинность высказывания: «Хотя бы одно из чисел A, B, C положительное». 14) Даны три целых числа: A, B, C. Проверить истинность высказывания: «Ровно одно из чисел A, B, C положительное». 15) Даны три целых числа: A, B, C. Проверить истинность высказывания: «Ровно два из чисел A, B, C являются положительными». 16) Дано целое положительное число. Проверить истинность высказывания: «Данное число является чётным двузначным». 17) Дано целое положительное число. Проверить истинность высказывания: «Данное число является нечётным трехзначным». 18) Дано целое положительное число. Проверить истинность высказывания: «Данное число является нечётным трехзначным». 19) Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара взаимно противоположных». 20) Дано трехзначное число. Проверить истинность высказывания: «Все цифры данного числа различны». 21) Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую последовательность». 22) Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую или убывающую последовательность». 23) Дано четырехзначное число. Проверить истинность высказывания: «Данное число читается одинаково слева направо и справа налево». 24) Даны числа A, B, C (число A не равно 0). Рассмотрев дискриминант D = B^2 – 4*A*C, проверить истинность высказывания: «Квадратное уравнение A*x^2 + B*x + C = 0 имеет один корень». 25) Даны числа x, y. Проверить истинность высказывания: «Точка с координатами (x, y) лежит во второй координатной четверти». 26) Даны числа x, y. Проверить истинность высказывания: «Точка с координатами (x, y) лежит в четвертой координатной четверти». 27) Даны числа x, y. Проверить истинность высказывания: «Точка с координатами (x, y) лежит во второй или третьей координатной четверти». 28) Даны числа x, y. Проверить истинность высказывания: «Точка с координатами (x, y) лежит в первой или третьей координатной четверти». 29) Даны числа x, y, x1, y1, x2, y2. Проверить истинность высказывания: «Точка с координатами (x, y) лежит внутри прямоугольника, левая верхняя вершина которого имеет координаты (x1, y1), правая нижняя – (x2, y2), а стороны параллельны координатным осям». Вариант Задание 30) Даны целые числа a, b, c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a, b, c является равносторонним». 31) Даны целые числа a, b, c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a, b, c является равнобедренным». 32) Даны целые числа a, b, c, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами a, b, c является прямоугольным». 33) Даны целые числа a, b, c. Проверить истинность высказывания: «Существует треугольник со сторонами a, b, c». 34) Даны координаты поля шахматной доски x, y (целые числа, лежащие в диапазоне 1–8). Учитывая, что левое нижнее поле доски (1, 1) является черным, проверить истинность высказывания: «Данное поле является белым». 35) Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Данные поля имеют одинаковый цвет». 36) Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Ладья за один ход может перейти с одного поля на другое». 37) Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Король за один ход может перейти с одного поля на другое». 38) Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Слон за один ход может перейти с одного поля на другое». 39) Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Ферзь за один ход может перейти с одного поля на другое». 40) Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Проверить истинность высказывания: «Конь за один ход может перейти с одного поля на другое». Задание 2 Выполнить задание (таблица 2) с помощью оператора if. Таблица 2 – Варианты заданий Вариант Задание 1) Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число. 2) Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2. Вывести полученное число. 3) Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число. 4) Даны три целых числа. Найти количество положительных чисел в исходном наборе. 5) Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе. Вариант Задание 6) Даны два числа. Вывести большее из них. 7) Даны два числа. Вывести порядковый номер меньшего из них. 8) Даны два числа. Вывести вначале большее, а затем меньшее из них. 9) Даны две переменные вещественного типа: A, B. Перераспределить значения данных переменных так, чтобы в A оказалось меньшее из значений, а в B – большее. Вывести новые значения переменных A и B. 10) Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B. 11) Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной большее из этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B. 12) Даны три числа. Найти наименьшее из них. 13) Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим). 14) Даны три числа. Вывести вначале наименьшее, а затем наибольшее из данных чисел. 15) Даны три числа. Найти сумму двух наибольших из них. 16) Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C. 17) Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C. 18) Даны три целых числа, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа, отличного от остальных. 19) Даны четыре целых числа, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных. 20) На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A. 21) Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2. Если точка не лежит на координатных осях, то вывести 3. 22) Даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка. 23) Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины. 24) Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию. Вариант Задание 25) Даны три целых числа. Возвести в квадрат отрицательные числа и в третью степень – положительные (число 0 не изменять). 26) Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по убыванию. E 27) Из трех данных чисел выбрать наименьшее число. Если такого нет, то вывести соответствующее сообщение. 28) Дан номер некоторого года (положительное целое число). Вывести число дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный – 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 – являются). 29) Из трех данных чисел выбрать наибольшее число. Если такого нет, то вывести соответствующее сообщение. 30) Перераспределить значения переменных X и Y так, чтобы в X оказалось большее из этих значений, а в Y – меньшее. 31) Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. 32) Даны целочисленные координаты точки на плоскости. Если точка не лежит на координатных осях, то вывести 0. Если точка совпадает с началом координат, то вывести 1. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 2 или 3. 33) Перераспределить значения переменных X и Y так, чтобы в X оказалось меньшее из этих значений, а в Y – большее. 34) 11 Из трех данных чисел выбрать среднее. Если такого нет, то вывести соответствующее сообщение. 35) Даны три переменные: X, Y, Z. Если их значения упорядочены по убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. 36) Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если равны, то присвоить переменным нулевые значения. 37) На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A. 38) Из трех данных чисел выбрать наименьшее и наибольшее числа. Если таких чисел нет, то вывести соответствующее сообщение. Задание 3 Выполнить задание (таблица 3) с помощью оператора switch. Таблица 1 – Варианты заданий Вариант Задание 1) Дано целое число в диапазоне 1–7. Вывести строку – название дня недели, соответствующее данному числу (1 – «понедельник», 2 – «вторник» и т. д.). 2) Дано целое число K. Вывести строку-описание оценки, соответствующей числу K (1 – «плохо», 2 – «неудовлетворительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – «отлично»). Если K не лежит в диапазоне 1–5, то вывести строку «ошибка». Вариант Задание 3) Дан номер месяца – целое число в диапазоне 1–12 (1 – январь, 2 февраль и т. д.). Вывести название соответствующего времени года («зима», «весна», «лето», «осень»). 4) Дан номер месяца – целое число в диапазоне 1–12 (1 – январь, 2 февраль и т. д.). Определить количество дней в этом месяце для невисокосного года. 5) Арифметические действия над числами пронумерованы следующим образом: 1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление. Дан номер действия N (целое число в диапазоне 1–4) и вещественные числа A и B (B не равно 0). Выполнить над числами указанное действие и вывести результат. 6) Единицы длины пронумерованы следующим образом: 1 – дециметр, 2 – километр, 3 – метр, 4 – миллиметр, 5 – сантиметр. Дан номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах. 7) Единицы массы пронумерованы следующим образом: 1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 – тонна, 5 – центнер. Дан номер единицы массы (целое число в диапазоне 1–5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах. 8) Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной. 9) Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной. 10) Робот может перемещаться в четырех направлениях («С» – север, «З» – запад, «Ю» – юг, «В» – восток) и принимать три цифровые команды: 0 – продолжать движение, 1 – поворот налево, –1 – поворот направо. Дан символ C – исходное направление робота и целое число N – посланная ему команда. Вывести направление робота после выполнения полученной команды. 11) Локатор ориентирован на одну из сторон света («С» – север, «З» – запад, «Ю» – юг, «В» – восток) и может принимать три цифровые команды поворота: 1 – поворот налево, –1 – поворот направо, 2 – поворот на 180^o. Дан символ C – исходная ориентация локатора и целые числа N_1 и N_2 – две посланные команды. Вывести ориентацию локатора после выполнения этих команд. 12) Элементы окружности пронумерованы следующим образом: 1 – радиус R, 2 – диаметр D=2*R, 3 – длина L=2*π*R, 4 – площадь круга S =π*R2. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности (в том же порядке). 13) Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 – катет a, 2 – гипотенуза c = a*√2 , 3 – высота h, опущенная на гипотенузу (h=c/2), 4 – площадь S = c*h/2. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). 14) Элементы равностороннего треугольника пронумерованы следующим образом: 1 – сторона a, 2 – радиус R_1 вписанной окружности (R1 = a√3/6 ), 3 – радиус R2 описанной окружности (R2 = 2*R1), 4 – площадь S = a2√3 / 4 . Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). 15) Дано целое число в диапазоне 20–69, определяющее возраст (в годах). Вывести строку-описание указанного возраста, обеспечив правильное согласование числа со словом «год», например: 20 – «двадцать лет», 32 – Вариант Задание «тридцать два года», 41 – «сорок один год». 16) Дано целое число в диапазоне 10–40, определяющее количество учебных заданий по некоторой теме. Вывести строку-описание указанного количества заданий, обеспечив правильное согласование числа со словами «учебное задание», например: 18 – «восемнадцать учебных заданий», 23 – «двадцать три учебных задания», 31 – «тридцать одно учебное задание». 17) Дано целое число в диапазоне 100–999. Вывести строку-описание данного числа, например: 256 – «двести пятьдесят шесть», 814 – «восемьсот четырнадцать». Контрольные вопросы 1) Опишите тернарный оператор ветвления: назначение, синтаксис, пример. 2) Опишите оператор ветвления: назначение, синтаксис, пример. 3) Опишите оператор выбора: назначение, синтаксис, пример. |