Форум программистов, компьютерный форум 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, 03:45  [ТС]     Лабораторная работа №4 (динамические структуры данных)
Вот. Еще не совсем доделано. Там с массивом книг надо еще помучиться. Видимо, надо динамический массив делать. Посмотрите.

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
192
193
194
#include <iostream>
#include <conio.h>
using namespace std;
 
 
struct books {
    char title[20];
    char author[20];
    int  year;
};
struct deque {
    books  book;
    deque *prev;
    deque *next;
};
 
deque* create_deque(books& book);
void input_book(books& book);
deque* push_left(deque* n, books& book);
deque* push_right(deque* n, books& book);
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() {
 
    books b[40] = {{"Yazik Ci++", "V.V. Podbelsky", 2007}};
    deque* deq = create_deque(b[0]);
 
    int count = 1;
    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: {
            input_book    (b[count]);
            push_left(deq, b[count]);
                             count++;
            break;
        }
        case 50: {
            input_book     (b[count]);
            push_right(deq, b[count]);
                              count++;
            break;
        }
        case 51: {
            is_clear(deq);
            break;
        }
        case 52: {
            delete_right_element(deq);
            cout << "\tTHE RIGHT ELEMENT IS DELETED";
            break;
        }
        case 53: {
            empty_deque(deq);
            cout << "\tALL ELEMENTS IN DEQUE IS DELETED";
            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(books& book) {
    deque* node = new(deque);
    (*node).book = book;
    (*node).prev = NULL;
    (*node).next = NULL;
    return node;
} // END OF FUNCTION
 
void input_book(books& book) {
    cout << "\t" << "INPUT BOOK:" << "\n\n";
    cout << "\t" << "    Title:  "; cin >> book.title;
    cout << "\t" << "    Author: "; cin >> book.author;
    cout << "\t" << "    Year:   "; cin >> book.year;
} // END OF FUNCTION
 
deque* push_left(deque* n, books& book) {
    deque* node = new(deque);
    while ((*n).prev) n = (*n).prev;
    (*node).book = book;
    (*node).prev = NULL;
    (*node).next = n;
    (*n).prev = node;
    return node;
} // END OF FUNCTION
 
deque* push_right(deque* n, books& book) {
    deque* node = new(deque);
    while ((*n).next) n = (*n).next;
    (*node).book = book;
    (*node).prev = n;
    (*node).next = NULL;
    (*n).next = node;
    return node;
} // END OF FUNCTION
 
void is_clear(deque* d) {
    if (!d) {
        cout << "\tDEQUE IS EMPTY";
    }
    else {
        cout << "\tDEQUE 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;
    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;
    }
    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).book.title  << "\n";
    cout << "\t" << "    Author: " << (*d).book.author << "\n";
    cout << "\t" << "    Year:   " << (*d).book.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).book.title  << "\n";
        cout << "\t" << "    Author: "   <<               (*d).book.author << "\n";
        cout << "\t" << "    Year:   "   <<               (*d).book.year   << "\n\n";
        d = (*d).next;
    } while (d);
} // END OF FUNCTION
Добавлено через 51 минуту 36 секунд
Еще и с удалением проблемы.
 
Текущее время: 22:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru