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

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

Войти
Регистрация
Восстановить пароль
 
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
#1

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

06.03.2014, 22:46. Просмотров 218. Ответов 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;
то программа вылетает! а если без этой строчки, то цикл проверяет только один элемент
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 22:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск наибольшего на нижнем уровне мультисписка (C++):

Определить, какой элемент двумерного массива меньше: расположенный в нижнем правом или в нижнем левом углу - C++
Описать Какой элемент двумерного массива меньше: расположенный в нижнем правом или в нижнем левом углу; Какой элемент двумерного...

Поиск наибольшего числа - C++
Здравствуйте! У меня имеется несколько чисел: 0,42 0,41 0,45 0,48 0,63 0,43 0,47 0,69 0,46 нужно вывести первое возросшее число, то есть в...

Поиск наибольшего общего делителя - C++
Всем привет. Мне нужна ваша помощь. Не могу разобраться даже в элементарных циклических алгоритмах. Задавали д.з возведение в степень...

Поиск наибольшего элемента и сортировка в стеке - C++
Здравствуйте. Преподователь дал задачу по теме стек. Я могу просто написать функции для вложения элемента в стек и извлечения. Как выбрать...

Поиск наибольшего и наименьшего значения в массиве. - C++
Как в одномерном массиве a найти наибольшее и наименьшее числа ? :)

Поиск наибольшего элемента в заданной высоте дерева - C++
Среди вершин, отдалённых от корня на расстояние A, надо найти наибольший элемент. Вот фрагмент кода, тут 3 метода, последний из них должен...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5420 / 4816 / 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;
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2014, 04:08
Привет! Вот еще темы с ответами:

Поиск среднего арифметического и наибольшего элементов матрицы - C++
Дана вещественная матрица A(n, n). Найти среднее арифметическое элементов, расположенных на и выше главной диагонали и наибольший среди...

Исправить код. Поиск наибольшего слова в строке - C++
Ребят, помогите разобраться в этом го*нокоде. В частности функция Search. Программа должна считывать текст из файла в строку, искать...

Поиск наибольшего четного числа для каждого элемента - C++
Помогите пожалуйста с задачкой.Для каждого элемента А(i,j) найти наиб.значение среди всех четных элементов в выделенной области.Результат...

Функция: поиск экстремального (наибольшего или наименьшего) элемента массива - C++
Написать программу с функцией для поиска экстремального числа(наибольшего или наименьшего) элемента массива. Массив заполнить случайными...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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