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

Исправить недочеты в программе (лаба №4) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Арканоид http://www.cyberforum.ru/cpp-beginners/thread30783.html
Здравствуйте! Буду писать игру арканоид. Если кому не трудно, можете написать примерный алгоритм создания?
C++ Сортировка значений трех переменых а,б,с в порядке возростания Составить програму из з использованиэм функции, сортировки значений трех переменых а,б,с в порядке возростания http://www.cyberforum.ru/cpp-beginners/thread30770.html
Массив C++
В прграме обявлен масив int P={0,2,4,5,6,7,9,12}.Какиэ значения приймут выражения а)р б)*р в)*(р+4) г)*(р+р)
Какие значения примут выражения? C++
в оперативной памяты вектор int Х начинающей з адреса В7FO.Какиэ значения приймут выражения. а)Х+1 б)Х+5 в)Х-4
C++ Считывать значения в матрицы и вектора http://www.cyberforum.ru/cpp-beginners/thread30743.html
Помогите пожалуйста разобраться. Эта прога должна считивать значения в матритцы и вектора. Как ей объяснить разнитцу между матрицей GHSERp и TC . Она считивает только GHSERp, а вторую TC считивать не...
C++ Вектор. Составить программу изминения нулей в векторе Вектор. Составить программу изминения нулей в векторе на полсумму предыдущего и следующего елементов. На место первого и последнего нуля поставить следущее и предедущее число. Добавлено через 9... подробнее

Показать сообщение отдельно
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448

Исправить недочеты в программе (лаба №4) - C++

21.04.2009, 13:47. Просмотров 522. Ответов 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
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#include <iostream>
#include <conio.h>
using namespace std;
 
 
struct deque {
    char title[20];
    char author[20];
    int  year;
    deque *prev;
    deque *next;
};
 
deque* create_deque();
deque* push_left(deque* d);
deque* push_right(deque* d);
void is_clear(deque* d);
deque* delete_right_element(deque* d);
deque* empty_deque(deque* d);
void get_right_element(deque* d);
void print_deque(deque* d);
 
 
 
int main() {
 
    // Созданем дек с первым элементом
    deque* deq = create_deque();
 
    char key;
    bool flag = true;
 
BEGIN:
 
    cout << "Press key <1> to push element in left"     << "\n";
    cout << "Press key <2> to push element in right"    << "\n";
    cout << "Press key <3> to check out deque on empty" << "\n";
    cout << "Press key <4> to delete the right element" << "\n";
    cout << "Press key <5> to delete all elements"      << "\n";
    cout << "Press key <6> to get the right element"    << "\n";
    cout << "Press key <7> to print deque"              << "\n";
    cout << "Press key <8> to exit"                     << "\n\n\n";
 
    while (1 && flag) {
        key = getch(); 
        if (key >= 49 && key <= 56) break;
    }
 
    switch (key) {
        case 49: {
            deq = push_left(deq);
            break;
        }
        case 50: {
            deq = push_right(deq);
            break;
        }
        case 51: {
            is_clear(deq);
            break;
        }
        case 52: {
            deq = delete_right_element(deq);
            break;
        }
        case 53: {
            deq = empty_deque(deq);
            break;
        }
        case 54: {
            get_right_element(deq);
            break;
        }
        case 55: {
            print_deque(deq);
            break;
        }
        case 56: exit(0);
    }
 
    while (1) {
        key = getch(); 
        if (key >= 49 && key <= 56) { 
            flag = false;
            break;
        }
    }
 
    system("cls");
 
    goto BEGIN;
 
 
    return 0;
}
 
 
 
 
deque* create_deque() {
    deque* node = new (deque);
    strcpy((*node).title, "Yazik Ci++");
    strcpy((*node).author, "V.V. Podbelsky");
    (*node).year   = 2007;
    (*node).prev = NULL;
    (*node).next = NULL;
    return node;
} // END OF FUNCTION
 
deque* push_left(deque* d) {
    deque* node = new (deque);
    while ((*d).prev) d = (*d).prev;
    cout << "\t" << "PUSH  LEFT:" << "\n\n";
    cout << "\t" << "    Title:  "; cin >> (*node).title;
    cout << "\t" << "    Author: "; cin >> (*node).author;
    cout << "\t" << "    Year:   "; cin >> (*node).year;
    cout << "\n\t" << "    Data is brought";
    (*node).prev = NULL;
    (*node).next = d;
    (*d).prev = node;
    return node;
} // END OF FUNCTION
 
deque* push_right(deque* d) {
    deque* node = new (deque);
    while ((*d).next) d = (*d).next;
    cout << "\t" << "PUSH  RIGHT:" << "\n\n";
    cout << "\t" << "    Title:  "; cin >> (*node).title;
    cout << "\t" << "    Author: "; cin >> (*node).author;
    cout << "\t" << "    Year:   "; cin >> (*node).year;
    cout << "\n\t" << "    Data is brought";
    (*node).prev = d;
    (*node).next = NULL;
    (*d).next = node;
    return node;
} // END OF FUNCTION
 
void is_clear(deque* d) {
    if (!d) {
        cout << "\tTHE DEQUE IS EMPTY";
    }
    else {
        cout << "\tTHE DEQUE IS NOT EMPTY";
    }
} // END OF FUNCTION
 
deque* delete_right_element(deque* d) {
    while ((*d).next) d = (*d).next;
    deque* tmp = d;
    d = (*d).prev;
    (*d).next = NULL;
    delete tmp;
    cout << "\tTHE RIGHT ELEMENT IS DELETED";
    return d;
} // END OF FUNCTION
 
deque* empty_deque(deque* d) {
    while ((*d).next) d = (*d).next;
    while (d) {
        deque* tmp = d;
        d = (*d).prev;
        delete tmp;
    }
    cout << "\tALL ELEMENTS IN DEQUE IS DELETED";
    return d;
} // END OF FUNCTION
 
void get_right_element(deque* d) {
    while ((*d).next) d = (*d).next;
    cout << "\t" << "THE RIGHT ELEMENT:" << "\n\n";
    cout << "\t" << "    Title:  " << (*d).title  << "\n";
    cout << "\t" << "    Author: " << (*d).author << "\n";
    cout << "\t" << "    Year:   " << (*d).year   << "\n";
} // END OF FUNCTION
 
void print_deque(deque* d) {
    while ((*d).prev) d = (*d).prev;
    cout << "\t" << "PRINT DEQUE:" << "\n\n";
    int count = 1;
    do {
        cout << "\t" << count++ << " > " << "Title:  " << (*d).title  << "\n";
        cout << "\t" << "    Author: "   <<               (*d).author << "\n";
        cout << "\t" << "    Year:   "   <<               (*d).year   << "\n\n";
        d = (*d).next;
    } while (d);
} // END OF FUNCTION
Добавлено через 5 часов 25 минут 28 секунд
Ну, может, все-таки, кот-нибудь посмотрит.

Добавлено через 15 часов 12 минут 32 секунды
Ну так кто-нибудь проверит или нет...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru