Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
#1

Написать программу для вычисления числа с заданной точностью. - C++

14.03.2014, 11:39. Просмотров 1226. Ответов 22
Метки нет (Все метки)

Нужно написать программу для вычисления числа http://www.cyberforum.ru/cgi-bin/latex.cgi?y=\sqrt[k]{x} с заданной точностью.
--------
За введенными x, k, http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon (точность вычислений) программа должна вернуть значение http://www.cyberforum.ru/cgi-bin/latex.cgi?y=\sqrt[k]{x} , где k, x http://www.cyberforum.ru/cgi-bin/latex.cgi?\in R.
------------
В программе использовать формулу:
http://www.cyberforum.ru/cgi-bin/latex.cgi?y=y(i)+1/k(x/({y(i)}^{k-1})-y(i))
Организовать цикл, в каком на каждом шаге вычислять:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\delta =1/k(x/({{y}_{i}}^{k-1})-{y}_{i})
тогда http://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{i+1}={y}_{i}+\delta. Условие выхода из цикла:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\left|\delta  \right|<\varepsilon , где http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon наперед заданна точность вычислений.
Начальные присвоения:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\delta = 1, y=1.
Для вычисления степеня http://www.cyberforum.ru/cgi-bin/latex.cgi?{{y}_{i}}^{k-1} использовать оператор цикла.
При написании программы стоит просчитать все возможные случаи некорректного ввода данных.
Сделать проверку верности ввода числа x в зависимости от введенного значения k.
П.С. Помогите хотя бы с основным кодом.

Добавлено через 1 час 57 минут
АП ей ей

Добавлено через 13 часов 20 минут
((((((((((((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2014, 11:39     Написать программу для вычисления числа с заданной точностью.
Посмотрите здесь:

C++ Написать программу и рекурсивную функцию для вычисления значения суммы бесконечного ряда с заданной точностью
Написать программу для вычисления ряда с заданной точностью e (e>0) C++
C++ Написать программу для вычисления ряда с заданной точностью e (e>0)
Написать программу для вычисления ряда с заданной точностью C++
C++ Написать программу вычисления суммы ряда с заданной точностью через функции
Написать программу для вычисления косинуса с заданной точностью C++
Написать программу для вычисления факториала числа с заданной точностью C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 12:22     Написать программу для вычисления числа с заданной точностью. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int main(int argc, char* argv[])
{
    double x = 0, y0 = 0, y1 = 0, eps = 0, sigma = 0;
    int k = 0;//целочисленное иначе теряется смысл вычисления Yi в степени k-1
    cin >> x >> k >> eps;
    if(x<0)
    {
        cout << "x is not valid"<<endl;
        system("pause");
        return 0;
    }
    else if(x == 0 && k < 0)
    {
        cout << "x and k are not valid"<<endl;
        system("pause");
        return 0;
    }
    y0 = 1;
    sigma = 1;
    double yk = 0;
    while(fabs(sigma) >= eps)
    {
        yk = y0;
        for(int i = 2; i <= k-1; i++)
        {
            yk*=yk;
        }
        sigma = 1./k*(x/yk - y0);
        y1 = y0 + sigma;
        y0 = y1;
    }
    cout << "y = " << y1 << endl;
    system("pause");
 
    return 0;
}
Добавлено через 16 минут
упс подправил косяки, вот рабочий код, проверил с калькулятором
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int main(int argc, char* argv[])
{
    double x = 0, y0 = 0, y1 = 0, eps = 0, sigma = 0;
    int k = 0;//целочисленное иначе теряется смысл вычисления Yi в степени k-1
    cin >> x >> k >> eps;
    if(x<0)
    {
        cout << "x is not valid"<<endl;
        system("pause");
        return 0;
    }
    else if(x == 0 && k < 0)
    {
        cout << "x and k are not valid"<<endl;
        system("pause");
        return 0;
    }
    y0 = 1;
    sigma = 1;
    double yk = 0;
    while(fabs(sigma) >= eps)
    {
        yk = y0;
        for(int i = 2; i < k; i++)
        {
            yk*=y0;
        }
        sigma = 1./k*(x/yk - y0);
        y1 = y0 + sigma;
        y0 = y1;
    }
    cout << "y = " << y1 << endl;
    system("pause");
 
    return 0;
}
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
14.03.2014, 15:30  [ТС]     Написать программу для вычисления числа с заданной точностью. #3
А что такое sigma?
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 15:32     Написать программу для вычисления числа с заданной точностью. #4
ну...буква такая греческая просто я ее так назвал, она есть в формуле

Добавлено через 20 секунд
правда там дельта.....да какя разница как называется переменная
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
15.03.2014, 15:29  [ТС]     Написать программу для вычисления числа с заданной точностью. #5
Лан спс, позже проверю как работает)

Добавлено через 23 часа 36 минут
Как прописать кубический корень в С++?
zss
Модератор
Эксперт С++
6188 / 5791 / 1875
Регистрация: 18.12.2011
Сообщений: 14,797
Завершенные тесты: 1
15.03.2014, 15:32     Написать программу для вычисления числа с заданной точностью. #6
Цитата Сообщение от andreyananas Посмотреть сообщение
Как прописать кубический корень в С++?
C++
1
y=pow(x,1.0/3.0);
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
25.03.2014, 15:10  [ТС]     Написать программу для вычисления числа с заданной точностью. #7
Цитата Сообщение от aLarman Посмотреть сообщение
fabs
что эта функция делает?
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
25.03.2014, 15:17     Написать программу для вычисления числа с заданной точностью. #8
Цитата Сообщение от andreyananas Посмотреть сообщение
эта функция делает?
возвращает абсолютное значение (модуль) для рациональных чисел
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
25.03.2014, 16:13  [ТС]     Написать программу для вычисления числа с заданной точностью. #9
Цитата Сообщение от aLarman Посмотреть сообщение
y0 = 1;
* * sigma = 1;
* * double yk = 0;
почему yk объявляется аж тут? а не в самом начале7
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
25.03.2014, 16:31     Написать программу для вычисления числа с заданной точностью. #10
Цитата Сообщение от andreyananas Посмотреть сообщение
почему yk объявляется аж тут? а не в самом начале7
а разве это имеет значение? можете перенести в начало есть такое негласное правило, не объявлять пока не понадобится
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
25.03.2014, 17:20  [ТС]     Написать программу для вычисления числа с заданной точностью. #11
Цитата Сообщение от aLarman Посмотреть сообщение
а разве это имеет значение? можете перенести в начало есть такое негласное правило, не объявлять пока не понадобится
Мне вот и было интересно, имеет или нет)
Вообще прога иногда виснет, не могу понять почему(
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
25.03.2014, 17:22     Написать программу для вычисления числа с заданной точностью. #12
я присылал 2 варианта, надеюсь Вы используете 2ой? с 1ым были проблемы зависания (там были некторые вещи не правильными)
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
25.03.2014, 17:30  [ТС]     Написать программу для вычисления числа с заданной точностью. #13
Цитата Сообщение от aLarman Посмотреть сообщение
я присылал 2 варианта, надеюсь Вы используете 2ой? с 1ым были проблемы зависания (там были некторые вещи не правильными)
да, второй
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
01.04.2014, 14:15  [ТС]     Написать программу для вычисления числа с заданной точностью. #14
Цитата Сообщение от aLarman Посмотреть сообщение
C++
1
2
3
4
5
yk = y0;
for(int i = 2; i < k; i++)
{
yk*=y0;
}
Вот как ты считаешь степень к-1 ?
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 14:24     Написать программу для вычисления числа с заданной точностью. #15
ну предположим, k = 3;
yk = x;
в цикле i = 2, меньше 3? да меньше идем дальше, yk = yk * x = x^2;
i++ теперь i = 3; меньше 3? нет вышли, получили степень k-1 = 2;
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
01.04.2014, 14:40  [ТС]     Написать программу для вычисления числа с заданной точностью. #16
Цитата Сообщение от aLarman Посмотреть сообщение
yk = yk * x = x^2
yk=x, а x=1.
и тогда yk=yk*x==1
При чем тогда k?
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 14:42     Написать программу для вычисления числа с заданной точностью. #17
ну...1 в любой степени равен 1, ну получается это бессмысленно - прокручивать этот цикл
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
01.04.2014, 14:53  [ТС]     Написать программу для вычисления числа с заданной точностью. #18
Цитата Сообщение от aLarman Посмотреть сообщение
ну...1 в любой степени равен 1, ну получается это бессмысленно - прокручивать этот цикл
В том то и дело, что по условии, начальное значение y0 (или как ты на этот раз обозначил - х) = 1
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 15:20     Написать программу для вычисления числа с заданной точностью. #19
а ну я ошибся, просто тогда получается общая реализация, а использовать y^k-1 как 1, зная что у = 1 - это подстройка под исх данные, что не есть гуд
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2014, 14:14     Написать программу для вычисления числа с заданной точностью.
Еще ссылки по теме:

C++ Написать программу для вычисления энтропии по формуле Шеннона для заданной последовательности
Написать программу для вычисления n-го числа Фибоначчи C++
Написать программу для вычисления факториала числа C++
C++ Написать программу для вычисления двойного факториала числа
Определить количество членов ряда, необходимых для вычисления числа Пи с заданной точностью ε по формуле C++

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

Или воспользуйтесь поиском по форуму:
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 854
Завершенные тесты: 2
02.04.2014, 14:14  [ТС]     Написать программу для вычисления числа с заданной точностью. #20
Цитата Сообщение от aLarman Посмотреть сообщение
а ну я ошибся, просто тогда получается общая реализация, а использовать y^k-1 как 1, зная что у = 1 - это подстройка под исх данные, что не есть гуд
Что же мне делать с прогой?(

Добавлено через 21 час 38 минут
ап, тема актуальна, требуется рабочая прога
Yandex
Объявления
02.04.2014, 14:14     Написать программу для вычисления числа с заданной точностью.
Ответ Создать тему
Опции темы

Текущее время: 23:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru