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

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

Войти
Регистрация
Восстановить пароль
 
Arantir
1 / 1 / 0
Регистрация: 24.08.2012
Сообщений: 18
#1

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

29.11.2012, 16:39. Просмотров 341. Ответов 0
Метки нет (Все метки)

Здравствуйте тётеньки и дяденьки!!!...Помогите мне дописать код...
Задача:
Картотека в бюро обмена квартир организована в виде линейного списка. Сведения о каждой квартире включают:
-количество комнат;
-этаж;
-площадь;
-адрес.
Написать программу, которая обеспечивает:
-начальное формирование картотеки;
-ввод заявки на обмен;
-поиск в картотеке подходящего варианта: при равенстве количества комнат и этажа и различии площадей в пределах 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++
Ребят сделал код создания элементов списка, но не могу написать 1) код добавления элемента списка в конец списка 2) код удаления...

Удаление/добавление записи по ключу в односвязном списке - C++
Возможно-ли удаление или добавление записи по ключу в односвязном списке? Если да, то не пойму, как &quot;перемещаться по списку&quot; не разрывая...

Ошибка в линейном списке - C++
ошибка

Поиск в линейном двусвязном списке - C++
Программа реализует добавление, удаление элементов списка, просмотр списка и поиск элемента в списке. Проблема в том, что когда поиск...

Поиск звена с элементом el в списке, заданном указателем phead - C++
#include&lt;iostream&gt; using namespace std; class Spisok { private: struct node { int elem; node *sled;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 16:39
Привет! Вот еще темы с ответами:

Программа которая определяет число элементов в линейном списке - C++
Написать программу обхода бинарного дерева Нужно написать, вопросы: 1)На каком языке лучше написать? 2)И как это лучше сделать? ...

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

Бинарное дерево. Удаление звена - C++
Помогите реализовать функцию удаления звена дерева Del (все потомки и само звено нужно удалить). Пытался реализовать немного, но потомков...

Строка: Выделить вхождение отдельного символа их количество и хранить их вместе со счётчиком в линейном однонаправленом списке. - C++
Помогите написать программу которая выделяет вхождение отдельного символа их количество и хранит их вместе со счётчиком в линейном...


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

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

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