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

метод деления пополам - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
29.09.2010, 13:59     метод деления пополам #1
Люди помогите составить программу алгоритма метода деления пополам рекурсией на C/C++, для проверки использовать любые диапазоны значений. Спасибо за внимание.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
29.09.2010, 16:44     метод деления пополам #2
Пожалуйста - 100 рекурсивно делится на 2:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
float divide(float n);
 
int main()
{
    divide(100.0);
 
    system("pause");    
}
 
float divide(float n)
{
    if(n <= 1) return 1.0; 
    
        cout << n << endl;
    return n / divide(n/2.0);
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
29.09.2010, 16:51     метод деления пополам #3
NikolaWhite,
Это вы, надеюсь, пошутили?)))
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
30.09.2010, 12:38  [ТС]     метод деления пополам #4
спасибо, но я не это имел ввиду... метод деления отрезка пополам...
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
30.09.2010, 14:00     метод деления пополам #5
Ты загадываешь число , а программа отгадывает его методом половинного деления и
сообщает с какой попытки число угадано.
Если и это не то что нужно тогда извиняй

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
#include <iostream>
#include <cmath>
 using namespace std;
int count = 0;
 
 float n(float x1, float x2)
 {
     cout << "Введите число от 1 до 100: ";
     int input; cin >> input;
     float x = (x1 + x2) / 2;
     while(floor(x) != input)
     {
         if(input < x)
             x2 = x;
         else
             x1 = x;
         x = (x2 + x1) / 2;
         count++;
     }
     return x;
 }
 
int main()
{
    setlocale(LC_ALL,"Rus");
    cout << "Ваше число " <<  floor( n(0,100)) << endl;
cout << "Угадал с " << count << " раз" << endl;
 
        system("pause");
        return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
30.09.2010, 14:36     метод деления пополам #6
Думаю, ТСу нужен был метод бисекции - самый простой из методов вычмата для нахождения корня нелинейного уравнения...
Yandex
Объявления
30.09.2010, 14:36     метод деления пополам
Ответ Создать тему
Опции темы

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