Программа 9. Вычисление квадратного корня

Приближенное значение квадратного корня из некоторого положительного числа a можно найти с помощью последовательных приближений:

Программа 9. Вычисление квадратного корня - student2.ru

Начальным приближением x0 может быть любое положительное число, например, Программа 9. Вычисление квадратного корня - student2.ru или Программа 9. Вычисление квадратного корня - student2.ru . Итерационный процесс следует продолжать до тех пор пока два последовательных приближения не станут достаточно близки, что можно записать в виде:

Программа 9. Вычисление квадратного корня - student2.ru ,

где e – заданная малая величина – точность вычисления.

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

// Файл SqrtRoot.cpp

// Вычисление квадратного корня

#include <iostream.h>

#include <conio.h>

#include <math.h> // Для fabs

int main()

{

double a, xn, xn1, eps;

do{ // Ввод и проверка исходных данных

cout << "Введите число > 0: ";

cin >> a;

cout << "Введите точность: ";

cin >> eps;

}while(a < 0 || eps <= 0); // Повторяем ввод при поступлении

// отрицательного числа или неверной точности

xn1 = a; // Начальное приближение

cout << xn1 << "\n";

do{

xn = xn1; // Следующее приближение делаем предыдущим

xn1 = (xn + a / xn) / 2.0; // Новое приближение

cout << xn1 << "\n";

}while(fabs(xn1 - xn) > eps); // Пока не достигнута нужная точность,

getch();

return 0;

}

При вычислении Программа 9. Вычисление квадратного корня - student2.ru программа выдает следующее:

Введите число > 0: 2

Введите точность: 0.0001

2.000000

1.500000

1.416667

1.414216

1.414214

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

Обсудим данную программу.

Включение заголовочного файла math.h необходимо, так как в программе имеется обращение к объявленной в этом файле функции

double fabs(double x);

вычисляющей абсолютное значение для числа с плавающей точкой.

Число a, два последовательных приближения к квадратному корню xn, xn1 и точность eps определены как числа с плавающей точкой двойной точности double.

Ввод исходных данных производится в цикле do … while. Этот цикл повторится, если будет истинным выражение a < 0 || eps <= 0. Оператор || является логическим оператором ИЛИ и все выражение будет истинным, если введено или отрицательное значение для a, или для точности eps. Синтаксис языка требует, чтобы между do и while была единственная инструкция. Здесь четыре инструкции объединены в одну составную инструкцию фигурными скобками { и }.

Вычисления начинаются с присваивания переменной xn1 значения a. Далее вычисления продолжаются в цикле do while.

Важным приемом программирования является присваивание

xn = xn1;

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

Каждое из приближений печатается.

Переключатель

Для выбора одного из многих вариантов удобно использовать оператор switch, который имеет вид:

switch(выр){

case константа1 :

инструкция1

break;

case константа2 :

инструкция2

break;

case константаN :

инструкцияN

break;

default: инструкция

}

Ветвь default может отсутствовать.

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

Программа 10. День недели

Программа предлагает ввести номер дня недели и выводит его название.

// Файл DayWeek.cpp

// Программа выводит название дня недели по его номеру

#include <iostream.h>

#include <conio.h>

int main()

{

int n; // Номер дня недели

cout << "\nВведите номер дня недели от 1 до 7 \n";

cin >> n;

cout << "Это ";

switch(n){

case 1: cout << "Понедельник"; break;

case 2: cout << "Вторник"; break;

case 3: cout << "Среда"; break ;

case 4: cout << "Четверг"; break;

case 5: cout << "Пятница"; break;

case 6: cout << "Суббота"; break;

case 7: cout << "Воскресенье"; break;

default: cout << "Неверный номер";

}

getch();

return 0;

}

Ниже приводятся результаты двух запусков программы.

Введите номер дня недели от 1 до 7

Это Пятница

Введите номер дня недели от 1 до 7

Это Неверный номер

Операторы break и continue

Оператор break вызывает немедленный выход из циклов for, while, do-while и переключателя switch. Выход осуществляется только из одного самого внутреннего из нескольких охватывающих циклов или переключателей.

Оператор continue вызывает следующую итерацию охватывающего его цикла for, while, do-while до окончания выполнения всех инструкций в теле цикла. Использование операторов break и continue иллюстрируется следующей программой.

Наши рекомендации