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

Удаление и добавление звена в линейном списке - C++

Восстановить пароль Регистрация
 
Arantir
1 / 1 / 0
Регистрация: 24.08.2012
Сообщений: 18
29.11.2012, 16:39     Удаление и добавление звена в линейном списке #1
Здравствуйте тётеньки и дяденьки!!!...Помогите мне дописать код...
Задача:
Картотека в бюро обмена квартир организована в виде линейного списка. Сведения о каждой квартире включают:
-количество комнат;
-этаж;
-площадь;
-адрес.
Написать программу, которая обеспечивает:
-начальное формирование картотеки;
-ввод заявки на обмен;
-поиск в картотеке подходящего варианта: при равенстве количества комнат и этажа и различии площадей в пределах 10% соответствующая картотека выводится и удаляется из списка, в противном случае поступившая заявка включается в список;
вывод всего списка.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
Код:
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <string>
 
using namespace std;
 
struct file
{
    file *prev;
    file *next;
    short int room;
    short int level;
    short int area;
    string adress;
};
 
void add(file **temp, file **last);
void search(file **temp, file **head, file **last);
void out(file **temp, file **head, file **last);
 
void add(file **temp, file **last)
{
    cout << "--------------\n";
    cout << "Rooms:";
    cin >> (*temp)->room;
    cout << "Levels:";
    cin >> (*temp)->level;
    cout << "Area:";
    cin >> (*temp)->area;
    cout << "Adress:";
    cin >> (*temp)->adress;
    cout << "--------------\n";
    (*temp)->next=new(file);
    (*temp)->next->prev=(*temp);
    (*temp)=(*temp)->next;
    (*last)=(*temp);
}
 
 
void search(file **temp, file **head, file **last)
{
    (*temp)=(*head);
    short int n_room, n_level, n_area;
    double an;
    string s_adress;
    cout << "**************\n";
    cout << "Rooms:";
    cin >> n_room;
    cout << "Levels:";
    cin >> n_level;
    cout << "Area:";
    cin >> n_area;
    cout << "Adress:";
    cin >> s_adress;
    cout << "**************\n";
    while((*temp)!=(*last))
    {
        an=1;
        if(n_room==(*temp)->room && n_level==(*temp)->level)
        {
            if(n_area>(*temp)->area)
            {
                an=(1-(double)(*temp)->area/n_area)*100;
            }
            else
            {
                an=(1-(double)n_area/(*temp)->area)*100;
            }
            if(an<=10)
            {
                //удалить текущее звено
            }
            else
            {
                //создать звено с данными из n_room, n_level, n_areaб s_adress
            }
        }
        else
        {
            //создать звено с данными из n_room, n_level, n_areaб s_adress
        }
        (*temp)=(*temp)->next;
    }
}
 
 
void out(file **temp, file **head, file **last)
{
    (*temp)=(*head);
    while((*temp)!=(*last))
    {
        cout << "##############\n";
        cout << "Rooms:";
        cout << (*temp)->room << endl;
        cout << "Levels:";
        cout << (*temp)->level << endl;
        cout << "Area:";
        cout << (*temp)->area << endl;
        cout << "Adress:";
        cout << (*temp)->adress << endl;
        cout << "##############\n";
        (*temp)=(*temp)->next;
    }
}
 
void main()
{
    file *head, *temp, *last;
    head=new(file);
    temp=head;
    temp->prev=NULL;
    short int n;
    do
    {
        cout << "______________\n";
        cout << "Menu:\n";
        cout << "1-Input\n2-Search\n3-Output\n4-Exit\n";
        cout << "______________\n";
        n=_getch();
        switch(n) 
        {
            case '1': add(&temp, &last); break;
            case '2': search(&temp, &head, &last); break;
            case '3': out(&temp, &head, &last); break;
            case '4': break;
            default: cout << "Retype!\n"; break;
        }
    }
    while(n!='4');
}
Собственно осталось реализовать 2 задачи удаление и добавление звена в зависимости от условия. Можете дать рабочую реализацию или кратко объяснить или ссылки дать, но только не молчите...)) Всё остальное работает...Спасибо...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 16:39     Удаление и добавление звена в линейном списке
Посмотрите здесь:

удаление/добавление записи по ключу в односвязном списке C++
C++ Строка: Выделить вхождение отдельного символа их количество и хранить их вместе со счётчиком в линейном однонаправленом списке.
Ошибка в линейном списке C++
Программа которая определяет число элементов в линейном списке C++
C++ Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него
Удаление узла в линейном списке C++
Добавление и удаление элемента в списке C++
C++ Почему сортируются цифры в линейном списке, а фамилии не сортируются

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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