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

Мультисписки. Удаление элемента - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу, обрабатывающую исключительную ситуацию http://www.cyberforum.ru/cpp-beginners/thread1112447.html
Составить программу на языке С++ обрабатывающую исключительную ситуацию, которая может возникнуть в ходе выполнения программы. Выведите на экран значение функции для некоторого диапазона значений аргумента х. Коэффициенты a, b, c, d и диапазон значений аргумента вводятся с клавиатуры. При организации ввода/вывода должен использоваться механизм для отлова исключений типа. Подобрать параметры...
C++ Создать класс - вектор Создать класс - вектор, который имеет в закрытой части указатель на данные целого типа и количество элементов. Определить конструктор, деструктор, функции вывода элементов вектора, вычисления длины вектора, сложение, вычитание, скалярного произведения векторов. Добавлено через 6 часов 35 минут Без функций вычисления как-то так получилось. В чем ошибки?) #include <iostream> #define n 3... http://www.cyberforum.ru/cpp-beginners/thread1112443.html
C++ Тип введенных елементов
Ребята помогите пожайлуста, нужно в вот эту прогу нужно сделать шаблон который будет определять тип введенных елементов матрици, и как я понял нужно выводить какого типа этот елемент. Но так же мне уточнили что можно взять всего 2 типа: int и float, и сделать для них. Но я очень плохо дружу с шаблонами. Я вот уже сколько сидел думал у меня не получаеться придумать как это сделать, не могли бы вы...
C++ Метод хорд, проверьте правильность кода
#include <iostream> #include <cmath> double func(double x) { return x*x*x+20*x+8*(log(2+10*sqrt(3))); } double find(double infinum, double supremum, double epsilon) {
C++ Сортировка масивов http://www.cyberforum.ru/cpp-beginners/thread1112437.html
Сабж. Не могу додуматься до решения, особенно вторая задача. 1. Организуйте массив, содержащий 20 различных целых чисел. После этого 10 первых элементов массива упорядочиваются по возрастанию, а 10 последних элементов по убыванию. Содержимое отсортированного таким образом массива выводится на экран. 2. Отсортировать массив по убыванию Заданы два одномерных массива с различным количеством...
C++ Дан массив А(20), найти количество элементов данного массива Дан массив А(20), найти количество элементов данного массива,больших числа -5. Код нужен на с++ подробнее

Показать сообщение отдельно
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
06.03.2014, 03:54     Мультисписки. Удаление элемента
Здравствуйте! Подскажите пожалуйста ошибку в коде. Задание: удалить элемент из нижнего уровня мультисписка! Проблема состоит в том, что удаляется только элемент, который стоит первым на нижнем уровне! Бросаю код:
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
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
void delBludo(TStrana *&Start){
    string Countr, Blud;
    TStrana *ppCountr, *wpCountr;
    TBludo *ppBlud, *wpBlud;
 
    cout<<"\nВведите страну, из которой удалить блюдо: ";
    cin>>Countr;
    if(Countr.length()==0){
        cout<<"\n     ВНИМАНИЕ!!!     \n";
        cout<<"   Cтрана не задана! \n";
        cout<<"Невозможно удалить блюдо\n";
        return;
    }
    bool isStrana = findStrana(Start, Countr, ppCountr, wpCountr);
 
    if(!isStrana){
        cout<<"\n         ВНИМАНИЕ!!! \n";
        cout<<" Название страны введено не верно!\n";
        cout<<"Невозможно осуществить удаление блюда\n";
        return;
    }
 
    cout<<"\nВведите название удаляемого блюда: ";
    cin>>Blud;
    bool isBludo = findBludo(wpCountr->sublevel, Blud, ppBlud, wpBlud);
 
    if(!isBludo){
        cout<<"\n         ВНИМАНИЕ!!! \n";
        cout<<" Название блюда введено не верно!\n";
        cout<<"Невозможно осуществить удаление блюда\n";
        return;
   }
    delFromSortList(wpCountr->sublevel, Blud);
    cout<<"\nУдаление прошло успешно!\n";
    cout<<"\nСодержимое списка блюд для страны:"<<Countr<<endl;
    cout<<endl;
    showBludo(wpCountr->sublevel);
}
 
void delFromSortList(TBludo * &Start, string key){
    TBludo *pp, *wp;
 
    wp=Start;
    pp=NULL;
    while(wp!=NULL && key > wp->name){
        pp=wp;
        wp=wp->next;
    }
    if(wp==NULL || wp->name!=key)
        return;
    if(pp==NULL)
        Start=wp->next;
    else
        pp->next=wp->next;
    delete wp;
}
 
bool findStrana(TStrana *Start, string Key, TStrana *&pp, TStrana *&wp)
{
    wp=Start;
    pp=NULL;
 
    while(wp!=NULL)
    {
        if(wp->country<=Key)
        {break;}
        else
        {
            pp=wp;
            wp=wp->next;
        }
    }
 
    if(wp!=NULL && wp->country == Key)
    {return true;}
    else
    {return false;}
}
 
bool findBludo(TBludo *Start, string Key, TBludo *&pp, TBludo *&wp)
{
    wp=Start;
    pp=NULL;
 
    while(wp!=NULL)
    {
        if(wp->name<=Key)
        {break;}
        else
        {
            pp=wp;
            wp=wp->next;
        }
    }
 
    if(wp!=NULL && wp->name == Key)
    {return true;}
    else
    {return false;}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru