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

Рекурсивная функция нахождения максимального элемента в списке

01.06.2011, 15:39. Показов 4875. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Саму функцию нахождения максимального элемента написал. Мне только нужно рекурсию сделать. Заранее спасибо.
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "stdafx.h"
#include<iostream>
using namespace std;
#include <stdexcept>
#include <conio.h>
 
 class List 
 {
     // структура элемента списка
     struct Kira 
     {
        int nValue;
        Kira * pNext;
        Kira(int val) : nValue(val), pNext(NULL) {}
    };
    Kira * first, * last; // указатели на первый и последний элементы
    List(const List&); // закрытый конструктор копирования
    public:
        // конструктор по умолчанию
        List() : first(NULL), last(NULL) {}
        // деструктор
        ~List() 
        {
            while ( first )
            {
                last = first->pNext;
                delete first;
                first = last;
            }
        }
        // возвращает true если список пустой
        bool empty() const 
        {
            return first == NULL;
        }
        // добавление элемента в список
        void add(int val)
        {
            Kira * pKira = new Kira(val);
            // если список пустой, вставить первый элемент
            if ( ! first )
            {
                first = pKira;
                last = first;
            }
        // иначе добавить элемент в конец списка
            else 
            {
                last->pNext = pKira;
                last = pKira;
            }
        }
        // максимальное значение в списке
        //-------------------------------------------------------------------- Рекурсия...
        int maxElement() const 
        {
            int maxEl;
            Kira * pKira;
            // если список пустой, выйти с сообщением об ошибке
            if ( empty() )
                throw runtime_error("Пустой список!");
            maxEl = first->nValue;
            for ( pKira = first->pNext; pKira != NULL; pKira = pKira->pNext )
                if ( maxEl < pKira->nValue )
                    maxEl = pKira->nValue;
        return maxEl;
        }
        //_----------------------------------------------------------------------------
 
 
        // поиск элемента с заданным значением. возвращает позицию элемента в списке
        // начиная с 1, или 0, если элемент с заданным значением не найден
        int findElement(int val) const 
        {
            int currentPos, foundPos;
            Kira * pKira;
            // если список пустой, выйти с сообщением об ошибке
            if ( empty() )
                throw runtime_error("Пустой список!");
            foundPos = 0;
            for ( currentPos = 1, pKira = first; pKira != NULL; ++currentPos, pKira = pKira->pNext )
            {
                if ( pKira->nValue == val )
                {
                    foundPos = currentPos;
                    break;
                }
            }
            return foundPos;
        }
 };
 
 int main()
 {
    system ("chcp 1251");
    int val, cnt;
    List list;
    cout << "Колличество элементов в списке: ";
    cin >> cnt;
    for ( int i = 0; i < cnt; ++i )
    {
        cout << "Элемент №" << ( i + 1 ) << ": ";
        cin >> val;
        list.add(val);
    }
    if ( list.empty() )
    {
        cerr << "Ошибка! В списке нет элементов!" << endl;
     return 1;
    }
    val = list.maxElement();
    cout << "Максимальный элемент списка " << val << endl;
    cout << "Это " << list.findElement(val) << endl;
    getch();
 return 0;
 }

Вот отдельно код самой функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int maxElement() const 
        {
            int maxEl;
            Kira * pKira;
            // если список пустой, выйти с сообщением об ошибке
            if ( empty() )
                throw runtime_error("Пустой список!");
            maxEl = first->nValue;
            for ( pKira = first->pNext; pKira != NULL; pKira = pKira->pNext )
                if ( maxEl < pKira->nValue )
                    maxEl = pKira->nValue;
        return maxEl;
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2011, 15:39
Ответы с готовыми решениями:

Рекурсивная функция нахождения максимального и минимального значения
Рекурсивная функция нахождения максимального и минимального значения

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

Рекурсивная функция поиска максимального элемента массива
Написать рекурсивную функцию для вычисления максимального элемента массива из п элементов. выдает...

Рекурсивная функция для нахождения минимального элемента массива
Помогите!Нужно написать рекурсивную функцию для нахождения минимального элемента массива

2
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
01.06.2011, 15:53 2
смехматично так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int maxElement()
{
    int max_el = first->value;
    find_max(first->next, max_el);
    return max_el;
}
 
int find_max(elem* current, int& max_el)
{
    if (current)
    {
        if (current->value > max_el)
            max_el = current->value;
        find_max(current->next);
    }
}
1
0 / 0 / 1
Регистрация: 03.05.2011
Сообщений: 10
01.06.2011, 17:38  [ТС] 3
Угу, спасибо)
0
01.06.2011, 17:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2011, 17:38
Помогаю со студенческими работами здесь

Рекурсивная функция для вычисления индекса максимального элемента массива
Написать рекурсивную функцию для вычисления индекса максимального элемента массива из n элементов

Функция нахождения максимального элемента массива
#include &lt;iostream.h&gt; main() {int i, max, A; for(i=1;i&lt;=5;i++) {cout&lt;&lt;&quot;vvedite element massiva:...

Функция нахождения максимального элемента массива
Разработать функцию нахождения максимального элемента массива и применить ее для двух массивов ...

Рекурсифная функция нахождения максимального элемента массива
Нужно найти максимальный элемент в массиве, в принципе все просто, только как написать тоже самое...


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

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