Список используемых информационных источников. Получить навыки программирования разветвляющихся алгоритмов на языке C++.
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
Цель работы
Получить навыки программирования разветвляющихся алгоритмов на языке C++.
Постановка задачи
Составить программу для вычисления функции:
a, b, с – определить (инициировать) в программе,
x – ввести с клавиатуры,
y – вывести на экран.
Описание алгоритма
false
true
| |||
| |||||||
| |||||
|
Рис. 1. Схема алгоритма.
Текст исходного кода программы с комментариями
#include <iostream>
#include <cmath>
#include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian"); //русификация
int a = 2, b = 3, c = 5, answer; //инициализация a, b, c
double y, x; //инициализация x,y
cout << "Введите значение x от 1, но меньше 6: ";
cin >> x; //ввод x
if (x<1 || x>=6 || cin.fail()) //проверка на диапазон значений и тип переменной
cout << "Неверно. Введите число от 1, но меньше 6." << endl;
cin.clear(); //очистка потока вводных данных, предотвращающая циклический вывод предупреждения
cin.ignore(cin.rdbuf()->in_avail()); //игнорирование (ignore) колличества символов (avail) буфера (rdbuf)
while (x<1 || x >= 6) {
cout << "Введите число: ";
cin >> x;
if (x<1 || x >= 6 || cin.fail())
cout << "Неверно. Введите число от 1, но меньше 6." << endl;
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
}
//различные варианты функции при соответсвующих значениях х
if (x >= 1 && x < 2)
y = a + b*x + c*x*x;
if (x >= 2 && x < 3)
y = pow((a*sin(b*x)), 2);
if (x >= 3 && x < 4)
y = sqrt(abs(a + b*pow(x, 2))) + c;
if (x >= 4 && x < 5)
y = a*log(abs(b + (c / (2 * x))));
if (x >= 5 && x < 6)
y = exp(a*sin(x)) + pow(c, 3);
cout << "Значение y: " << y << endl; //вывод y
cout << endl;
cout << "Желаете завершить работу прогаммы? Нажмите 1 для выхода из программы и 0 для передачи управления ОС."<< endl;
cin >> answer;
if (answer > 1) cout << "Неверный ответ. Нажмите 1 для выхода из программы и 0 для передачи управления ОС." << endl;
while (answer > 1) { //проверка на введенный ответ
cout << "Сделайте выбор: ";
cin >> answer;
if (answer > 1) cout << "Неверный ответ.Нажмите 1 для выхода из программы и 0 для передачи управления ОС." << endl;
}
//выбор окончания программы
switch (answer) {
case 1:
exit(0);
break;
case 0:
system("Pause");
break;
}
return 0;
}
Контрольный прогон программы
Тест №1 – ввод значений, не удовлетворяющих допустимому диапазону значений. Последующий ввод корректного значений x (5).
Рис. 2. Результат теста №1.
Тест №2 – ввод значений, не удовлетворяющих допустимому диапазону значений, включая символы. Последующий ввод корректного значений x (4).
Рис. 3. Результат теста №2.
Вывод
Задание дает представление о написании ветвящихся алгоритмов на языке С++. Так же программа позволила мне не только освоить проверку введённых с клавиатуры значений, но и создать конструкцию, позволяющую проверять как диапазон введенных значений, так и их тип. Она будет использоваться мной в будущих программах. Так же была изучена функция извлечения корня (sqrt()). Было реализовано завершение программы по выбору пользователя через функцию выхода (exit(0)).
Список используемых информационных источников
1. Павловская Т.А. С/С++. Программирование на языке высокого уровня- Санкт-Петербург. Питер, 2006.
2. Интернет-ресурс: http://www.programmersforum.ru/showthread.php?t=98038
3. Интернет-ресурс: https://cppstudy.wordpress.com/2009/03/27/cin-get-and-co/
4. Единая система программной документации (ЕСПД) ГОСТ 19.701-90
5. Сыромятников В.П. «Программирование», МТУ МИРЭА, лекции, 2016/2017.