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

Поиск наибольшего на нижнем уровне мультисписка - C++

Восстановить пароль Регистрация
 
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
06.03.2014, 22:46     Поиск наибольшего на нижнем уровне мультисписка #1
Здравствуйте! Интересует вопрос: есть мультисписок, на верхнем уровне которого находится Страна, а на нижнем Блюдо и Количество калорий! функция должна вернуть на экран информацию о стране, где есть блюда с наибольшим количеством калорий! Подскажите как реализовать!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    typedef
        struct Bludo{
            string name;
            int kalory;
            Bludo *next;
    }TBludo;
    
    typedef
        struct Strana{
        string country;
        Strana *next;
        Bludo *sublevel;
    }TStrana;
и вот то, что пробовал делать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    void maxKalory(TStrana *&Start){
        TStrana *wp=Start, *np;
        int max=0;
        if(wp==NULL){
            cout<<"\nСписок пуст!!!\n";
            return;
        }
        TBludo *pp=wp->sublevel;
        while(wp!=NULL){
            while(pp->kalory > max){
                max=pp->kalory;
                np=wp;}
            pp=wp->sublevel;
            wp=wp->next;
        }
        cout<<np->country;
    }
Добавлено через 42 минуты
помогите пожалуйста!

Добавлено через 2 часа 16 минут
я так понимаю, там неправильно переставляются указатели

Добавлено через 33 минуты
немного поменял код
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
void maxKalory(TStrana *&Start){
    TStrana *wp=Start, *np;
    int max=0;
    if(wp==NULL){
        cout<<"\nСписок пуст!!!\n";
        return;
    }
    TBludo *pp;
    while(wp!=NULL){
        pp=wp->sublevel;
        while(pp->kalory > max && pp!=NULL){
            max=pp->kalory;
            np=wp;
            pp=pp->next;
        }
        wp=wp->next;
    }
    cout<<np->country<<endl;
    pp=np->sublevel;
    while(pp!=NULL){
        cout<<pp->name<<"  "<<pp->kalory<<" калорий\n";
        pp=pp->next;
    }
}
Вроде должно работать, но если в
C++
1
2
3
4
5
while(pp->kalory > max && pp!=NULL){
            max=pp->kalory;
            np=wp;
            pp=pp->next;
        }
стоит строчка
C++
1
pp=pp->next;
то программа вылетает! а если без этой строчки, то цикл проверяет только один элемент
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 22:46     Поиск наибольшего на нижнем уровне мультисписка
Посмотрите здесь:

Поиск наибольшего и наименьшего значения в массиве. C++
C++ Поиск наибольшего общего делителя
Определить, какой элемент двумерного массива меньше: расположенный в нижнем правом или в нижнем левом углу C++
C++ Вывести все буквы в нижнем регистре
Поиск среднего арифметического и наибольшего элементов матрицы C++
C++ Поиск наибольшего четного числа для каждого элемента
Поиск наибольшего элемента и сортировка в стеке C++
C++ Вычислить 2 минимальных элемента матрицы: в верхнем треугольнике и в нижнем

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2014, 04:08     Поиск наибольшего на нижнем уровне мультисписка #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
void maxKalory(TStrana *&Start)
{
    TStrana *wp = Start, *np;
    int max = 0;
    if(wp == NULL)
    {
        cout << "\nСписок пуст!!!\n";
        return;
    }
    TBludo *pp;
    while(wp != NULL)
    {
        pp = wp ->sublevel;
        while(pp != NULL)
        {
            if (pp ->kalory > max)
            {
                max = pp ->kalory;
                np = wp;
            }
            pp = pp ->next;
        }
        wp = wp ->next;
    }
    cout << np ->country << endl;
    pp = np ->sublevel;
    while(pp != NULL)
    {
        cout << pp ->name << "  " << pp ->kalory << " калорий\n";
        pp = pp ->next;
    }
}
Yandex
Объявления
07.03.2014, 04:08     Поиск наибольшего на нижнем уровне мультисписка
Ответ Создать тему
Опции темы

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