Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Исправить код на C

Fint Профи (591), открыт 2 недели назад
Программисты помогите!!! Мне дана программа, которая вычисляет значение квадратного корня из заданного числа, используя рекуррентное соотношение(см.файл). Мне же нужно исправить данную программу, чтобы она вычисляла 1/ корень из x используя рекуррентное соотношение y (i+1) = ((1/x*y(i)) + y(i)) / 2 с заданной точностью. Вывести на экран контрольное значение. Организовать повторение всей программы. Выполнить программу в пошаговом режиме.
2 ответа
Ингерманландец Мастер (2370) 2 недели назад
 #include <iostream> 
#include <cmath>
#include <conio.h>
#include <windows.h>
using namespace std;

int main() {
// Настройка притоков и региональных стандартов
if (SetConsoleCP(1251) == 0) {
cerr << "Failed to set codepage!" << endl;
return 1;
}
if (SetConsoleOutputCP(1251) == 0) {
cerr << "Failed to set output page!" << endl;
return 1;
}

double x, eps;

// Ввод данных с проверкой их на допустимость
do {
cout << "Введите x >= 0: ";
cin >> x;
} while (x < 0);

do {
cout << "Введите точность 0 < eps < 1: ";
cin >> eps;
} while (eps <= 0 || eps >= 1);

// Вычисление значения, используя рекуррентное соотношение.
double y1, y2 = x / 2;
int iterations = 0;

// Цикл с проверкой сходимости
do {
y1 = y2;
y2 = (y1 + x / y1) / 2;
iterations++;

// Вывод промежуточных значений (для отладки)
cout << "Итерация " << iterations << ": y2 = " << y2 << endl;

// Проверка сходимости
if (iterations > 100) {
cout << "Метод Ньютона не сошелся за 100 итераций" << endl;
break;
}
} while (abs(y2 - y1) > eps);

// Вывод результата
cout << "Контрольное значение корня: " << y2 << endl;
cout << "Контрольное значение: " << sqrt(x) << endl;

_getch();
return 0;
}
Похожие вопросы