Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
29 / 23 / 2
Регистрация: 14.04.2009
Сообщений: 448

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

21.04.2009, 13:47. Показов 1150. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2009, 13:47
Ответы с готовыми решениями:

Исправить недочеты в программе "Калькулятор"
Добрый день, хотел сделать калькулятор,вроде бы и получилось...но есть недочеты...например..при включении в поле edit появляется 0 и...

Недочеты в программе
Есть какой то косяк который не могу понять,при создании поля выкидывает массу ошибок

Недочеты в программе.
Помогите,пожалуйста! Программа все высчитывает, но при выводе на экран массивов S1,S2 появляются непонятные &quot;0&quot;.Где недочеты? ...

2
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
21.04.2009, 15:12
Нужно было просто делать проверку.
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
187
188
189
190
191
#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) {
    if(!d) return 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) {
    if(!d) return d;
    while ((*d).next) d = (*d).next;
    while (d) {
        deque* tmp = d;
        d = (*d).prev;
        delete tmp;
    }
    cout << "\tALL ELEMENTS IN DEQUE IS DELETED";
    d = 0;
    return d;
} // END OF FUNCTION
 
void get_right_element(deque* d) {
    if(!d) return;
    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) {
    if(!d) return;
    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
Добавлено через 2 минуты 0 секунд
PS. помоему проще вместо
C++
1
(*d).next;
писать
C++
1
d->next;
0
29 / 23 / 2
Регистрация: 14.04.2009
Сообщений: 448
21.04.2009, 16:24  [ТС]
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2009, 16:24
Помогаю со студенческими работами здесь

Недочеты в программе
Привет! Прошу помочь исправить пару недочетов при построении графика Личные данные выкладывать нельзя!

В программе есть недочеты
В архиве полный код программы. В общем у меня 2 проблемы: 1. Есть ошибка:при некоторых значениях из окошек,выделяет Appilication и при...

Исправить недочеты в коде
var T : Text; a, b, h, x: real; y1, y2, y3, y1_1, y1_2, y1_3: real; function F(x, y1, y2, y3: real; n:byte):real; begin ...

Исправить недочёты в вёрстке
&lt;html&gt; &lt;head&gt; &lt;title&gt;Rock Music&lt;/title&gt; &lt;/head&gt; &lt;body background=&quot;background.jpg&quot;&gt; &lt;body...

Как исправить недочёты в Калькуляторе?
Помогите мне пожалуйста исправить!!! 1.Убрать ноль в начале чисел должно быть 8 а не 008. Сделано в Delphi. А надо что бы было...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru