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

Лабораторная работа №4 (динамические структуры данных) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблемка с графикой http://www.cyberforum.ru/cpp-beginners/thread30680.html
Подскажите как можно закрасить ромб разделённый на 4 части и затем сдвинуть его на n-ое кол-во пикселевот исходный код: #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <time.h> int main(void) {
C++ Потеря символа при копировании строки По условию задано количество символов n и текстовый файл. Если длина строки в файле больше n, то ее нужно разбить (оставить n символов на строке, а остаток на новую), там же где количество символов меньше n, то файл нужно дополнить знаками "!". Результат сохранить как f2.txt. В принципе большая часть программы сделана, но есть проблемы с копированием со строки на строку(всегда теряются символы).... http://www.cyberforum.ru/cpp-beginners/thread30667.html
C++ Перегруженная функция в классе вектор
#include <iostream> #include <vector> #include"Employe.hh" using namespace std; int main() { vector<Racine> v; //вектор объектов класса Racine
C++ Найти общую сумму 10 введенных массивов
Помогите найти общую сумму 10 введеных массивов.
C++ Шаблон очереди http://www.cyberforum.ru/cpp-beginners/thread30627.html
Это шаблон очереди на списках. Посмотрите, пожалуйста, в чём ошибка: #include <iostream> using namespace std; template <typename TInfo> class TQueue { protected:
C++ Проверьте лабораторную №3 Создать шаблоны функций, выполняющей ввод, вывод и упорядочивание матриц. Протестировать шаблоны для матриц с элементами различных типов: int, float и char. Варианты заданий приведены в лабораторной работе № 1. Какие недочеты, что можно улучшить и т.д. #include <iostream> #include <conio.h> using namespace std; #define DATATYPE double // Òèï äàííûõ ìàòðèöû подробнее

Показать сообщение отдельно
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
20.04.2009, 16:14  [ТС]     Лабораторная работа №4 (динамические структуры данных)
В последнем варианте проверьте ошибки пожалуйста.

Добавлено через 52 минуты 42 секунды
Так, вроде все готово. Однако в процессе работы программы выявляются кое-какие ошибка. Например, когда удаляешь элементы из дека, то при попытке посмотреть его содержимое программа умирает. Посмотрите, пожалуйста. Протестируйте у себя. Что нужно исправить.

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: {
            push_left(deq);
            break;
        }
        case 50: {
            push_right(deq);
            break;
        }
        case 51: {
            is_clear(deq);
            break;
        }
        case 52: {
            delete_right_element(deq);
            break;
        }
        case 53: {
            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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru