Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
1

Вводится число X>1 и точность e. Вычислить с заданной точностью квадратный корень введенного числа X

26.01.2015, 16:06. Показов 1970. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Три подобных темы есть, все без ответа.

Условия: "Вводится число X>1 и точность e. Вычислить с заданной точностью квадратный корень
введенного числа X, не пользуясь функцией SqRt (один из самых простых методов
решения этой задачи - деление пополам. Начинаем с отрезка [1;X]. Берем его середину,
возводим в квадрат и сравниваем с X. Если результат оказался больше, отбрасываем
правую половину отрезка, иначе - левую и повторяем все с начала. Действуем так, пока
длина отрезка не станет меньше e)."

Тута "руководство" по составлению алгоритма:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<conio.h>
using namespace std;
 
int main(){
        setlocale(LC_ALL, "Russian");
 
    float l=1, r, c, t, x, e=0.001; // где "l"-left, "r"-right, "c"-center, "е" задал конкретное для упрощения
    cout << "ВВести х>1: "; cin >> x; // после введения "х" программа встаёт (курсор моргает)
    r=x; 
    do {
        c=(l+r)/2;
            if (c*c>x) r=c;
            else l=c;
        float t=fabs(c*c-x);
        cin >> t;
       } while (t>e); // цикл не выполняется
 
    cout << "Усё";
 
getch();
}
В комментах указаны проблемки.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2015, 16:06
Ответы с готовыми решениями:

Вводится число X>1 и точность e. Вычислить с заданной точностью квадратный корень введенного числа X, не пользуясь функцией SqRt.
Вводится число X&gt;1 и точность e. Вычислить с заданной точностью квадратный корень введенного числа...

Вычислить с заданной точностью квадратный корень введенного числа X
7. Вводится число X&gt;1 и точность e. Вычислить с заданной точностью квадратный корень введенного...

Вычислить с заданной точностью квадратный корень введенного числа X, не пользуясь функцией SqRt
Вводится число X&gt;1 и точность e. Вычислить с заданной точностью квадратный корень введенного числа...

Вычислить квадратный корень из числа А с заданной точностью
Вычислить квадратный корень из числа А с заданной точностью. A - произвольное число....

8
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
26.01.2015, 16:25 2
Лучший ответ Сообщение было отмечено Dusty как решение

Решение

C++
1
2
3
4
5
6
7
    do {
        c=(l+r)/2;
        if (c*c > x) r=c;
        else l=c;
    }
    while (fabs(c*c-x) > e);
    cout << c;
1
Модератор
Эксперт С++
13701 / 10904 / 6472
Регистрация: 18.12.2011
Сообщений: 29,110
26.01.2015, 16:25 3
А отладчик существует для чего?
https://www.cyberforum.ru/cpp-... 62479.html
0
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
26.01.2015, 16:52  [ТС] 4
Цитата Сообщение от zss Посмотреть сообщение
А отладчик существует для чего?
https://www.cyberforum.ru/cpp-... 62479.html
Отладчик проходится по всему коду не выводя ни одной ошибки.
Переменные определяются и устанавливаются. Программа выполняется с помощью F10, а вот F5 встревает на 10 строчке. Отладчик молчит. Так же и в случае цикла - ошибки нет. Но цикла нет и прога встаёт.

Добавлено через 13 минут
Цитата Сообщение от nmcf Посмотреть сообщение
C++
1
2
3
4
5
6
7
    do {
        c=(l+r)/2;
        if (c*c > x) r=c;
        else l=c;
    }
    while (fabs(c*c-x) > e);
    cout << c;
Большущее! Самое печальное что это мой первый вариант был... но вот инициализировал переменные int'ом
И почему программа вставала на 10-ой строке?
0
Модератор
Эксперт С++
13701 / 10904 / 6472
Регистрация: 18.12.2011
Сообщений: 29,110
26.01.2015, 17:35 5
Программа циклится, т.е. такое условие while (t>e) всегда истинно
И отладчиком Вы бы это заметили просматривая значения переменной t.
Убедились бы, что это совсем другое t.
float l=1, r, c, t, x, e=0.001; - переменная t уровня функции main с неприсвоенным значением.
float t=fabs(c*c-x); - другая переменная t уровня вложенного цикла.
1
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
26.01.2015, 18:02  [ТС] 6
Цитата Сообщение от zss Посмотреть сообщение
И отладчиком Вы бы это заметили просматривая значения переменной t.
Убедились бы, что это совсем другое t.
float l=1, r, c, t, x, e=0.001; - переменная t уровня функции main с неприсвоенным значением.
float t=fabs(c*c-x); - другая переменная t уровня вложенного цикла.
Не понимаю...
Я тоже думал что это разные "t", но именно отладчик меня в этом переубедил!
Вот переменные моего неправильного кода:

Вывожу все возможные "t", по порядку:
1. (8) float l=1, r, c, t, x, e=0.001;
2. (15) float t=fabs(c*c-x);
3. (16) cin >> t;
4. (17) } while (t>e);

Все определяются одновременно и являются одинаковыми. Вот и думается мне что это одна и та же переменная.
Мне просто необходимо понять в чём же там было дело.
0
Модератор
Эксперт С++
13701 / 10904 / 6472
Регистрация: 18.12.2011
Сообщений: 29,110
26.01.2015, 18:04 7
Отладчик видит локальную переменную. А проверка идет по глобальной.
1
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
26.01.2015, 18:10  [ТС] 8
Цитата Сообщение от zss Посмотреть сообщение
Отладчик видит локальную переменную. А проверка идет по глобальной.
Можно ли проверить отладчиком только локальную переменную?
0
Модератор
Эксперт С++
13701 / 10904 / 6472
Регистрация: 18.12.2011
Сообщений: 29,110
26.01.2015, 19:57 9
Объявите локальную переменную другим именем.
1
26.01.2015, 19:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2015, 19:57
Помогаю со студенческими работами здесь

Вычислить квадратный корень введенного пользователем числа
Написал небольшую программку, которая ищет квадратный корень из числа, которое введёт пользователь....

Как вычислить квадратный корень введенного числа в TextBox?
как мне вычислить квадратный корень введенного числа в Text box и вывести в listbox?

Найти с заданной точностью квадратный корень
С помощью рекурсивной функции найти с заданной точностью квадратный корень Y=√X,...

Квадратный корень введенного числа.
Здравствуйте. Мне задали задачку: Написать программу, выводящую на экран корень квадратный...

Рекурсия: найти с заданной точностью квадратный корень по формуле Ньютона
С помощью рекурсивной функции найдите с заданной точностью квадратный корень , воспользовавшись...

Если введённое число однозначное и положительное, то вычислить квадратный корень из этого числа
Если введённое число однозначное и положительное, то вычислить квадратный корень из этого числа....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru