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

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

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

Связать две функции - C++

29.11.2013, 17:07. Просмотров 712. Ответов 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
 
 
int sd(int n, int d = 1)
{
    if (n==0)
    {
        return 0;
    }
    else
    {
    return d <= n ? (n % d == 0? d + sd(n, d + 1) : sd(n, d + 1)) : 0;
    }
}
int otr (int min, int max)
{
 
    if (min!=max)
    {
        int n=min;
 
        return sd(n);                ;
    }
    else
    {
        return min;
    }
}
 
 
int main()
{   int x,a, y, min, max;
 
    scanf("%d %d", &x, &y);
    if(x==y)
    {
 
        printf("%d",x);
        return 0;
    }
    if (x<y)
    {
        min=x;
        max=y;
        a=otr(min, max);
        printf("%d",a);
        return 0;
    }
    else
    {
        max=x;
        min=y;
    }
 
 
}
Здравствуйте, помогите пожалуйста разобраться с программой. Она должна находить на отрезке число с максимальной суммой делителей. Для случая х==у она работает, а как сделать для остальных случаев, когда все же отрезок [x,y] существует?

Добавлено через 25 минут
Помогите, пожалуйста))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 17:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Связать две функции (C++):

Как связать две таблицы по нескольким полям? - C++
Нужно, что бы работала связь Master-Detail. Но связать таблицы можно только сразу по двум полям, т.к. только в паре получается уникальная ...

Написать две пользовательские функции, эквивалентные стандартной функции strlen - C++
Написать программу, содержащую две пользовательские функции определения длины строки, эквивалентные стандартной функции strlen. Первая из...

Две функции на С++ - C++
Помагите пожалуймста решить функции, при подставлении &quot;р&quot; решались &quot;А&quot; и &quot;А2&quot; :scratch::-[ Буду ооочень благодарен...

Две одинаковые функции - C++
Всем привет! Я решил создать программу с OpenGL, подключив библиотеку glut. Затем мне понадобилась библиотека cstdlib для rand. Я подключил...

две функции в одной программе - C++
Добрый день. Есть проблема. Нужна помощь. Изучая с++ по самоучителю. Там указанны были две программы. Первая программа — запрашивает...

Написать программу содержащую две функции - C++
Написать программу, содержащую две функции. Первая функция, выводящая на экран строку одинаковых символов, располагается до функции main()....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
hwmlex
41 / 41 / 3
Регистрация: 30.01.2013
Сообщений: 133
29.11.2013, 17:25 #2
В цикле перебираете все числа от x до y включительно и считаете сумму делителей каждого числа. Находите максимум среди этих чисел.
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
29.11.2013, 17:32  [ТС] #3
Так то я б сделал, но циклами и массивами нельзя пользоваться, только рекурсия должна быть, можете помочь?
hwmlex
41 / 41 / 3
Регистрация: 30.01.2013
Сообщений: 133
29.11.2013, 18:46 #4
А массив и не нужен для нахождения максимума.

Сейчас попробую без цикла.

Добавлено через 1 час 5 минут
С перебором не получилось, зато удалось создать немного другую функцию нахождения суммы делителей числа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int sumOfDivisors(int n) /* сумма делителей */
{
    static int sum = 0;
    static int countOfCalls = 0;
 
    if (n - countOfCalls == 0)
        return sum;
 
    sum += !(n % (n - countOfCalls)) ?  (n - countOfCalls) : 0;
    countOfCalls ++;
    sumOfDivisors(n);
 
}
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
29.11.2013, 18:56  [ТС] #5
Спасибо) Но, хотелось бы, чтобы была именно отдельная функция, перебирающая числа отрезка. Однако, спасибо)

Добавлено через 43 секунды
Просто я сам не понимаю, как работает эта функция, ибо новичек
Brain_Dead
9 / 8 / 2
Регистрация: 25.09.2013
Сообщений: 35
29.11.2013, 21:33 #6
Вот программа, которая перебирает отрезок с помощью рекурсии и функции "sd" и выводит на экран максимальную сумму делителей среди чисел, имеющихся на отрезке.

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
#include <conio.h>
#include <iostream>
 
using namespace std;
 
int sd(int n, int d = 1)
{
    if(n == 0)
    {
        return 0;
    }
    else
    {
        return d <= n ? (n % d == 0 ? d + sd(n, d + 1) : sd(n, d + 1)) : 0;
    }
}
 
int otrez(int min, int max)
{
    if(min == max)
    {
        return sd(min);
    }
 
    if(min == max - 1)
    {
        return sd(min) < sd(min+1) ? sd(min+1) : sd(min);
    }
 
    return sd(min) < otrez(min+1, max) ? otrez(min+1, max) : sd(min);
}
 
int main()
{
    int k = otrez(7, 11);
    cout << "k = " << k << endl;
 
    cout << "Press any key to exit\n";
    _getch();
    return 0;
}
Проверял отрезком (7, 11) - максимальная сумма делителей равна 18 (это сумма делителей числа 10).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 21:33
Привет! Вот еще темы с ответами:

Две экспортные функции по одному адресу - C++
Здравствуйте. Использую для экспорта: extern &quot;C&quot; __declspec(dllexport) __declspec(noinline) Но две функции вышли по одному...

Нужно соединить две функции в одну - C++
Моя проблема: есть две функции для подсчета числителя и знаменателя их нужно соединить в одну, что бы она могла подсчитывать и числитель и...

Как обьединить две функции в одну? - C++
Подскажите, как обьединить две функции в одну const int N = 3; int polinom_one ; int polinom_two ; void Read_1polinom (void) ...

помогите переделать под функции две программы - C++
пожалуйста, помогите #include &lt;iostream&gt; int _tmain(int argc, _TCHAR* argv) { int matrix ; for (int i = 0; i &lt; 8; i++) ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.11.2013, 21:33
Ответ Создать тему
Опции темы

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