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

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

Войти
Регистрация
Восстановить пароль
 
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
#1

2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам" - C++

16.03.2011, 16:49. Просмотров 827. Ответов 3
Метки нет (Все метки)

1)Дано натурально число n. Среди чисел 1, ... ,n найти все такие, запись которых совпадает с последними цифрами их квадрата ( как, например, 6^2=36,25^2=625 и т.д. )

2)Методом деления отрезка пополам найти приближенное значение корня уравнения ( в скобках указан отрезок, содержащий корень )

x^3=0.2x^2-0.2x-1.2=0; [1, 1.5]

Метод деления отрезка попалам реализуется следующим алгоритмом (F(x) непрерывна на отрезке [a,b], F(a)*F(b)<0):
1)Находим x=(a+b)/2
2)Вычисляем F(x)
3)Если F(x)>0, задаем a=x, иначе b=xl
4)Проверяем условие |b-a|>Е(эпсилон), если оно выполняется, перейти к 1), если не выполняется - закончить вычисления и считать, что x= x с чертой, с заданной точностью E (эпсилон)

ПОМОГИТЕ ПОЖАЛУЙСТА! Буду очень признателен, если сделайте! Спасибо огромное заранее!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 16:49     2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам"
Посмотрите здесь:
C++ Классы "Студент" ,"Группа" - не работает метод ввода и вывода
Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка C++
Нужно сделать так, чтобы при вводе числа, выводило "рублей" или "рубль" C++
Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений C++
Проверить, образуют ли числа симметричную последовательность (варианты ответа "Yes" или "No") C++
Два числа, действительное "a" и натуральное "n" вводятся с клавиатуры C++
C++ Напечатать "столбиком " все целые числа от 20 до 35
C++ Необработанное исключение в "0x104b2288" в "Matrix.exe": 0xC0000005: Нарушение прав доступа при записи "0xcdcd
Все слова, не содержащие "bc" и заканчивающиеся на "ad" заменить на "!" C++
Строка: заменить первую "о" на "а", удалив остальные "о" C++
Поменять знак " $ " на " * " к первому вхождению символа " ? " C++
C++ Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
skaa
Хочу в Исландию
1027 / 826 / 75
Регистрация: 10.11.2010
Сообщений: 1,626
16.03.2011, 17:30     2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам" #2
t1() - первая задача, t2() - вторая задача.
Вопросы:
x^3=0.2x^2-0.2x-1.2=0; [1, 1.5]
следует читать:
x^3+0.2x^2-0.2x-1.2=0; [1, 1.5]
?
3)Если F(x)>0, задаем a=x, иначе b=x
должно быть наоборот, функция ведь возрастает на [1, 1.5], т.е.:
3)Если F(x)>0, задаем b=x, иначе a=x

Что непонятно - спрашивайте!

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include    <stdio.h>
#include    <math.h>
 
void    t1();
void    t2();
void    main()
{
    t1();
    t2();
}
void    t1()
{
    int nmax=100;
    int jn;
    int jnsq,jnsq2ld;
    int qdigits;
    int ju;
    int ntens;
 
    for(jn=1;jn<=nmax;jn++)
    {
        for(ju=jn,qdigits=0;ju>0;ju/=10)
            qdigits++;
        for(ju=0,ntens=1;ju<qdigits;ju++)
            ntens*=10;
 
        jnsq=jn*jn;
        jnsq2ld=jnsq%ntens;
        if(jnsq2ld==jn)
            printf("%d (sq:%d)\n",jn,jnsq);
    }
}
void    t2()
{
    double  xa=1.,xb=1.5;
    double  xaj,xbj,xm;
    double  Fx;
    double  Eps=0.00001;
 
    for(xaj=xa,xbj=xb;;)
    {
        xm=(xaj+xbj)/2;
        Fx=xm*xm*xm+0.2*xm*xm-0.2*xm-1.2;
        if(Fx>0)
            xbj=xm;
        else
            xaj=xm;
        if(abs(xbj-xaj)<=Eps)
            break;
    }
    printf("%.5f\n",xm);
}
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
16.03.2011, 17:36  [ТС]     2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам" #3
следует читать:
x^3-0.2x^2-0.2x-1.2=0; [1, 1.5] извините, ошибочка.

3)Если F(x)>0, задаем a=x, иначе b=x в условии написанно именно так.
skaa
Хочу в Исландию
1027 / 826 / 75
Регистрация: 10.11.2010
Сообщений: 1,626
16.03.2011, 18:27     2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам" #4
Прекрасно, t2() меняем на:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void    t2()
{
    double  xa=1.,xb=1.5;
    double  xaj,xbj,xm;
    double  Fx;
    double  Eps=0.00001;
 
    for(xaj=xa,xbj=xb;;)
    {
        xm=(xaj+xbj)/2;
        Fx=xm*xm*xm-0.2*xm*xm-0.2*xm-1.2;
        if(Fx>0)
            xbj=xm;
        else
            xaj=xm;
        if(abs(xbj-xaj)<=Eps)
            break;
    }
    printf("%.5f\n",xm);
}
, только пункт 3) всё равно неправильный, я использовал свой (корень нашёлся 1.2, и это так и есть), потому что функция возрастает на [1, 1.5].

Добавлено через 8 минут
Вот описание метода который очень похож на Ваш:
http://incat.narod.ru/m1.htm
Yandex
Объявления
16.03.2011, 18:27     2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам"
Ответ Создать тему
Опции темы

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