ПРАКТИЧЕСКАЯ ЧАСТЬ. Пример 1. Написать программу решения квадратного уравнения с проверкой на наличие вещественных (не комплексных) корней на основе только операторов if
Пример 1. Написать программу решения квадратного уравнения с проверкой на наличие вещественных (не комплексных) корней на основе только операторов if. Квадратное уравнение имеет вид Как известно, квадратное уравнение будет иметь вещественные корни, если его дискриминант будет неотрицательным, т. е. когда Программный код решения примера
Рис. 4.1. Результат решения квадратного уравнения В программе последовательно проверяются условия с помощью операторов if. В последнем случае, когда коэффициент а = 0, квадратное уравнение вырождается и превращается в линейное. Решение в этом случае очевидно. В программу подключена библиотека math.h для действий с математическими функциями, например sqrt(). В первом операторе if применено логическое условие И (&&) для проверки того, что дискриминант не равен отрицательному значению и одновременно, чтобы первый коэффициент квадратного уравнения не был равен нулю. Аналогичное условие прописано и для последнего оператора if.
Задание 1 1. Объясните включение float перед функцией sqrt(). 2. В программу введите изменения для вычисления комплексных корней квадратного уравнения без подключения дополнительных библиотек. 3. В программе предусмотрите ситуацию, когда все коэффициенты квадратного уравнения равны нулю. 4. В программе предусмотрите подстановки найденных корней в заданное квадратное уравнение с выводом возможной невязки. Предусмотрите также меры по уменьшению невязки. 5. Предусмотрите циклический ввод коэффициентов квадратного уравнения и вывода решения троекратно. 6. Предусмотрите проверку всех возможных условий задания коэффициентов квадратного уравнения. Пример 2. Написать программу решения квадратного уравнения с проверкой на наличие вещественных корней на основе конструкции if – else. Вид квадратного уравнения: Программный код решения примера
В программе использованы вложенные операторы if. Рис. 4.2. Выполнение программы с двумя нулевыми коэффициентами Задание 2 1. Добавьте в программу преобразование типов при использовании функции sqrt(). 2. В программе предусмотрите вычисление комплексных и мнимых корней квадратного уравнения. 3. Предусмотрите ввод целочисленных коэффициентов квадратного уравнения, используя тип int. В отчет вставьте возможный результат выполнения программы. 4. Напишите программу ввода вещественных чисел и вывода абсолютного значения этого числа на основе конструкции if – else.
Пример 3. Написать программу классификации введенного с терминала символа на основе конструкции if – else if – else [1]. Символами будем считать строчные и прописные буквы латинского алфавита, цифры от 0 до 9, и специальные символы. Программный код решения примера
Рис. 4.3. Результат классификации символа Задание 3 1. Сформируйте одно условие ввода букв как прописных, так и строчных с последующим выводом: This is an alphabetic character. 2. Напишите программу циклического ввода символов и вывода результата их классификации до момента нажатия цифры 10Х, где Х – номер компьютера (1, 2, ¼), на котором выполняется лабораторная работа. 3. Напишите программу решения квадратного уравнения с применением конструкций if – else if – else. Пример 4. Написать программу расчета простого арифметического выражения на основе оператора switch. Программный код решения примера
В программе использована полная форма оператора switch. Оператор break инициирует немедленный выход из него. Возможно использование вложенных операторов switch. Вероятный результат выполнения программы представлен на рис. 4.4. Задание 4 1. Проверьте деление числа на нуль и ввод недопустимого символа. 2. Примените условие равенства нулю вводимого числа без знака «==». 3. Напишите программу расчета простого выражения с помощью конструкций if – else if – else. 4. Напишите программу деления суток на «morning» (утро), «day» (день), «afternoon» (послеобеденное время), «evening» (вечер), «night» (ночь). Время ввода задается пользователем с клавиатуры. Пример 5. Написать программу вычисления двух целых случайных чисел и определения наибольшего из них. Определение наибольшего числа произвести с помощью оператора условия?. Программный код решения примера
В программе использованы функции генерации псевдослучайных чисел rand() и задания исходного псевдослучайного числа srand(). Указанные функции входят в стандартную библиотечную функцию stdlib.h. Функция time() применяется в библиотечной функции time.h, которая поддерживает функции, обращающиеся к системному времени. Для переменных L и some выполнено приведение типов. При каждом обращении к функции rand() возвращается целое в интервале между нулем и значением RAND_MAX, которое в любой реализации должно быть не меньше числа 32 767 [2]. Рис. 4.5. Результат определения максимального числа Задание 5 1. При выводе максимального числа предусмотрите сообщение об имени числа, т. е. a или b. 2. В цикле сформируйте вектор десяти случайных чисел из интервала [0, 1] и выведите на дисплей. 3. Для задания системного времени примените директиву define N X, где Х – номер компьютера, на котором выполняется лабораторная работа. 4. Примените оператор условия? для определения абсолютного значения вещественного числа, которое должно вводиться пользователем с клавиатуры. Пример 6. Используя оператор условия? и переключатель switch, написать программу определения времени года по вводимым числам от 1 до 12, считая, что цифра 1 соответствует январю, цифра 2 – февралю и т. д. Программный код решения примера
В программе три месяца зимы кодируются цифрой 1, три месяца весны –2, три месяца лета –3, три месяца осени – цифрой 4. Если введенная цифра не входит в целочисленный интервал [1; 12], то эта ситуация кодируется цифрой 5. Рис. 4.6. Результат программы по определению времени года Задание 6 1. Проверьте программу по вводимым вещественным числам. Объясните результат. 2. Проверьте программу по вводимым буквам или знакам, имеющимся на клавиатуре. Объясните результат. 3. В программе вместо 5-го пункта, т. е. вместо case 5, примените операцию default. 4. Напишите программу определения времени года по вводимым числам без операторов условия?.
Пример 7. Написать программу распечатки четных целых чисел от 0 до 30. Программный код решения примера
Результат выполнения программы показан на рис. 4.7. Рис. 4.7. Результат вывода четных чисел
Задание 7 1. В программу включите действие подсчета суммы четных чисел. 2. Подсчитайте число итераций оператора цикла. 3. В программе вместо цикла for примените цикл if. Объясните действие инструкции continue. 4. В программе вместо цикла for примените цикл do – if. Объясните действие инструкции continue. 5. Напишите программу вывода четных чисел без оператора continue. Подсчитайте число итераций оператора цикла. 6. Сделайте вывод четных чисел из интервала от Х до 10Х, где Х – номер компьютера, на котором выполняется лабораторная работа. Подсчитайте сумму четных чисел. Пример 8. Написать программу подсчета суммы трех чисел из трех вложенных циклов и, если сумма делится без остатка на число 3, прекратите сравнение чисел и выйдите из циклов с последующей распечаткой этой суммы и слагаемых. Первый цикл – с 51 до 1, второй – с 41 до 1, третий – с 1 до 50. Первый цикл изменяется на 7 единиц, второй – на 1, третий – на 7 единиц. Программный код решения примера с оператором goto
В программе использовано декрементирование (уменьшение на единицу) переменной j в форме --j. Переменная i с каждой итерацией цикла уменьшается на 7 единиц. Переменная k с каждой итерацией цикла увеличивается на 7 единиц. После оператора if включены фигурные скобки для выполнения нескольких действий при выполнении заданного условия оператора if. Рис. 4.8. Итеративный подсчет числовой суммы, делящейся на 3 Примечание. Оператор goto нельзя применять для перехода в тело цикла, т. е. метка не должна быть внутри оператора цикла. Она может появиться текстуально до или после оператора goto. Задание 8 1. В программу включите подсчет числа итераций каждого из циклов. 2. Вместо оператора безусловного перехода goto примените оператор break. Произведите также подсчет числа итераций каждого из циклов. Сравните с аналогичными результатами предыдущего пункта задания. 3. В программе вместо операторов for примените операторы if. Выполните действия двух предыдущих пунктов задания. 4. Напишите программу ввода символа до тех пор, пока не будет введен заранее определенный символ, например ' w '. Используйте оператор goto. Предусмотрите отступ от левого края дисплея. Пример 9. Написать программу распечатки на консоль простых чисел из диапазона от 2 до N, где N – число, вводимое пользователем с клавиатуры, которое не превосходит, например, 1 000. Как известно, простое число – это целое положительное число больше единицы, которое не делится без остатка ни на одно другое целое положительное число, кроме единицы и самого себя. Единица не считается простым числом. Возможный программный код решения примера
В программе с помощью оператора if осуществляется проверка правильности ввода данных с клавиатуры. Кроме того, этим же оператором проверяется остаток от деления двух чисел и условной истинности, когда переменная ok не равна нулю. С помощью препроцессорной директивы define определяется верхняя допустимая граница для простых чисел. Рис. 4.9. Пример вывода на консоль простых чисел Задание 9 1. В программе вместо оператора цикла for примените оператор if. 2. В программе примите допустимое число Nmax, равное 9 999. Предусмотрите при этом форматированный вывод на консоль простых чисел построчно, по 15 чисел в каждой строке. Используйте тернарный оператор?:. 3. Предыдущий пункт задания выполните с помощью операторов if, else. Контрольные вопросы 1. Как организуются множественные действия в операторе условия if? 2. Какой формат записи имеет тернарный оператор условия? 3. Какой оператор условия рекомендуется использовать для программирования меню? 4. В чем различие и сходство между операторами break и continue? 5. Как можно обеспечить выход из вложенных циклов? 6. Как можно организовать переходы в различные точки программы на С? 7. Какие логические операторы отношения используются в языке С? 8. Что произойдет, если в операторе switch после метки case не использовать оператор break? 9. Что произойдет, если в операторе switch не поставить метку default и условие переключения не совпадет ни с одной меткой case?
|