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

Специализация операции шаблона - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дано натуральное число N http://www.cyberforum.ru/cpp-beginners/thread1022943.html
Дано натуральное число N. Вычислить. S=1/sin1+1/sin1+sin2+....+1/sin1+sin2+...+sinN
C++ Программа написана, но работает неверно Программа написана, но работает неверно. Ввести символьную строку и заменить все буквы "а" на буквы "b" и наоборот, как заглавные, так и строчные.Помогите исправить. Заранее благодарю. #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <stdio.h> #include <math.h> using namespace std; int main() {int n;cout<<"n=";cin>>n; char q; http://www.cyberforum.ru/cpp-beginners/thread1022929.html
Линейный однонаправленный список C++
Для линейного однонаправленного списка вычислить: 1) число пар взаимно простых элементов 2) число локальных максимумов(текущий элемент является локальным максимумом, если нет соседнего элемента, большего, чем текущий элемент) 3) число элементов списка, больших всех предыдущих элементов 4) число элементов списка, меньших всех последующих Помогите пожалуйста написать программу на С ++...
C++ тема Наследование правильно ли я вызываю диструктор
Всем Здравствуйте. Я не уверен правильно ли я вызываю диструктор employee в диструкторе класса Manager вот весь код main.cpp #include <iostream> #include "date.h" #include "employee.h" #include "manager.h" #include "supervisor.h" #include <windows.h>
C++ Дана целочисленная прямоугольная матрица. Определить: http://www.cyberforum.ru/cpp-beginners/thread1022892.html
1. Дана целочисленная прямоугольная матрица. Определить: а)количество столбцов, не содержащих ни одного нулевого элемента; b) характеристикой столбца целочисленной матрицы назовем сумму модулей его положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. Ребят помогите пожалуйста составить код с динамическим массивом..Очень...
C++ Хеширование Тип ключа - целое число на интервале . Метод хеширования – свертка с выбором цифр. Метод разрешения коллизий - двойное хеширование. подробнее

Показать сообщение отдельно
Quadra
5 / 5 / 0
Регистрация: 29.04.2013
Сообщений: 99
29.11.2013, 17:19  [ТС]     Специализация операции шаблона
Цитата Сообщение от Croessmah Посмотреть сообщение
код давайте нормальный, полный, а не куски, потому что куски компилятся
Окей.

Кликните здесь для просмотра всего текста

Classes.h
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
#ifndef Classes_H
#define Classes_H
#include <windows.h>
#include <windowsx.h>
 
struct point{int x;int y;};
 
template<class Type>class Figures;
 
class Shape                                     //Фигура.
{
    protected:
        point A,B,A1,B1;
        void checkscreen(point B, RECT rt);     //Фигура умещается в окно?
        void checksquare(point A, point B);     //Фигура - квадрат?
        void checkin();                         //Второй квадрат внутри первого?
    public:
        int type;
        void clearscreen(HWND hwnd, HDC hdc);   //Очистка экрана.
 
        virtual void set_Coord()=0;             //Ввод координат.
        virtual void get_Coord()=0;             //Вывод координат на экран.
        virtual void load_Coord()=0;            //Загрузка координат из файла.
        virtual void save_Coord()=0;            //Сохранение кординат в файл.
 
        virtual void set_Sett()=0;              //Ввод настроек пера и кисти.
        virtual void get_Sett()=0;              //Вывод настроек пера и кисти на экран.
        virtual void load_Sett()=0;             //Загрузка настроек пера и кисти из файла.
        virtual void save_Sett()=0;             //Сохранение настроек пера и кисти в файл.
 
        virtual void shift(int a, int delta)=0; //Сдвиг фигуры.
 
        virtual void DRAW(HWND hwnd,HDC hdc)=0; //Функция рисования.
 
    template <class> friend class Figures;
};
 
struct color{int Red;int Green;int Blue;};
 
class Square:public Shape                       //Квадрат.
{
    protected:
        HPEN OldPen,UserPen;
        char PenStyle[12];
        int Pensize;
        color PenColor;
    public:
        void set_Coord();
        void get_Coord();
        void load_Coord();
        void save_Coord();
 
        void set_Sett();
        void get_Sett();
        void load_Sett();
        void save_Sett();
 
        void shift(int a, int delta);
 
        void DRAW(HWND hwnd,HDC hdc);
 
    template <class> friend class Figures;
};
 
class Filled                                    //Закрашенная фигура.
{
    protected:
        HBRUSH OldBrush,UserBrush,BlackBrush;
        char BrushStyle[12];
        color BrushColor;
 
};
 
class FilledSquare:public Square,public Filled  //Закрашенный квадрат.
{
    public:
        void set_Sett();
        void get_Sett();
        void load_Sett();
        void save_Sett();
 
        void DRAW(HWND hwnd,HDC hdc);
 
    template <class> friend class Figures;
};
 
class CombiSquare:public FilledSquare           //Квадрат в квадрате.
{
    protected:
        FilledSquare FS;
    public:
        void set_Coord();
        void get_Coord();
        void load_Coord();
        void save_Coord();
 
        void shift(int a, int delta);
 
        void DRAW(HWND hwnd, HDC hdc);
 
    template <class> friend class Figures;
};
 
template<class Type>class Figures
{
    private:
        int place;                                                              //Последняя свободная позиция таблицы.
        int size;                                                               //Размер таблицы.
        struct elem{Type data;int ID;} *M;
    public:
        Figures(int N);
        ~Figures();
        int get_size();
        int get_place();
        int search(int key, int *j);
        int add(Type elem, int ID);
        Type get(int i);
        int del(int key);
        void save();
};
 
template<class Type>Figures<Type>::Figures(int N){size=N;M=new elem[size];place=0;}
template<class Type>Figures<Type>::~Figures() {delete []M;}
template<class Type>int Figures<Type>::get_size() {return size;}
template<class Type>int Figures<Type>::get_place() {return place;}
template<class Type>int Figures<Type>::search(int key, int *j) 
{
    int i,R=0;
 
    for (i=0;((i<place)&&(R==0));i++)
        if (M[i].ID==key) R=1;
    i--;
    *j=i;
 
    return R;
}
template<class Type>int Figures<Type>::add(const Type elem, int ID) 
{
    int t;
 
    if (search(ID,&t)==0)
    {
        if (place<size)
        {
            M[place].data=elem;
            M[place].ID=ID;
            place++;
            return 1;
        }
        else return 0;
    }
    else return 0;
}
template<class Type>Type Figures<Type>::get(int i) 
{
    return M[i].data;
}
template<class Type>int Figures<Type>::del(int key)
{
    int i;
 
    if (search(key,&i)==1)
    {
        for (;i<place-1;i++) M[i]=M[i+1];
        place--;
        return 1;
    }
    else return 0;  
}
void Figures<Square>::save()
{
    int i;
    FILE *fout;
 
    fout=fopen("Squares.txt","w");
    for (i=0;i<place;i++)
    {
        fprintf(fout,"ID фигуры: %d\n",M[i].ID);
        fprintf(fout,"Координаты: %d %d %d %d\n",M[i].data.A,M[i].data.B);
        fprintf(fout,"Стиль пера: %s Размер: %d Цвет: RGB(%d,%d,%d)\n",M[i].data.PenStyle,M[i].data.Pensize,M[i].data.PenColor.Red,M[i].data.PenColor.Green,M[i].data.PenColor.Blue);
        fprintf(fout,"\n\n\n");
    }
    fclose(fout);
}
 
void commandlist(int a);                        //Списки команд.
 
#endif
Main.cpp
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
#include <windows.h>  
#include <windowsx.h>  
#include <conio.h>
#include <cstdio>
#include <math.h>
#include <locale.h>
#include "Classes.h"
 
void main()
{
    setlocale(LC_CTYPE,"Russian");
    HWND hwnd=GetConsoleWindow();
    HDC hdc=GetDC(hwnd);
    int COMMAND=-1,delta,key,pos,numb;
    Shape *pS;
    Square S;
    FilledSquare FS;
    CombiSquare CS;
    FILE *FOUT;
 
    FOUT=fopen("Squares.txt","w");
    fclose(FOUT);
    FOUT=fopen("FilledSquares.txt","w");
    fclose(FOUT);
    FOUT=fopen("CombiSquares.txt","w");
    fclose(FOUT);
 
    printf("Введите количество фигур-контуров: ");
    scanf("%d",&numb);
    Figures<Square> STable(numb);
    printf("Введите количество закрашенных фигур: ");
    scanf("%d",&numb);
    Figures<FilledSquare> FSTable(numb);
    printf("Введите количество комбинированных фигур: ");
    scanf("%d",&numb);
    Figures<CombiSquare> CSTable(numb);
 
    system("cls");
 
    MoveWindow(hwnd,0,0,1000,780,TRUE);
 
    commandlist(1);
 
    while (COMMAND!=4)
    {
        printf("Введите команду: ");
        scanf("%d",&COMMAND);
        
        if (COMMAND==0) commandlist(1);
        else
            if (COMMAND==1)
            {
                pS=&S;
                pS->type=1;
            }                   
            else
                if (COMMAND==2)
                {
                    pS=&FS;
                    pS->type=2;
                }
                else
                    if (COMMAND==3)
                    {
                        pS=&CS;
                        pS->type=3;
                    }
                    else
                        if (COMMAND!=4) printf("Неверная команда!\n");
        if ((COMMAND==1)||(COMMAND==2)||(COMMAND==3))
        {           
            while (COMMAND!=9)
            {
                COMMAND=-1;
                system("cls");
                commandlist(2);
                
                printf("Введите команду: ");
                scanf("%d",&COMMAND);
                if (COMMAND==0) commandlist(2);
                else
                    if (COMMAND==1)
                    {
                        pS->load_Coord();
                        pS->load_Sett();
                    }
                    else
                        if (COMMAND==2)
                        {
                            pS->DRAW(hwnd,hdc);
                        }
                        else
                            if (COMMAND==3)
                            {
                                pS->clearscreen(hwnd,hdc);
                            }
                            else
                                if (COMMAND==4)
                                {
                                    COMMAND=-1;
                                    while (COMMAND!=5)
                                    {
                                        system("cls");
                                        commandlist(3);
                                        printf("Введите команду: ");
                                        scanf("%d",&COMMAND);
 
                                        if (COMMAND==0) commandlist(3);
                                        else
                                            if (COMMAND==1)
                                            {
                                                printf("Введите смещение: ");
                                                scanf("%d",&delta);
                                                pS->shift(1,delta);
                                                pS->clearscreen(hwnd,hdc);
                                                pS->DRAW(hwnd,hdc);
                                            }
                                            else
                                                if (COMMAND==2)
                                                {
                                                    printf("Введите смещение: ");
                                                    scanf("%d",&delta);
                                                    pS->shift(2,delta);
                                                    pS->clearscreen(hwnd,hdc);
                                                    pS->DRAW(hwnd,hdc);
                                                }
                                                else
                                                    if (COMMAND==3)
                                                    {
                                                        printf("Введите смещение: ");
                                                        scanf("%d",&delta);
                                                        pS->shift(3,delta);
                                                        pS->clearscreen(hwnd,hdc);
                                                        pS->DRAW(hwnd,hdc);
                                                    }
                                                    else
                                                        if (COMMAND==4)
                                                        {
                                                            printf("Введите смещение: ");
                                                            scanf("%d",&delta);
                                                            pS->shift(4,delta);
                                                            pS->clearscreen(hwnd,hdc);
                                                            pS->DRAW(hwnd,hdc);
                                                        }
                                                        else
                                                            if (COMMAND!=5) printf("Неверная команда!\n");
                                    }
                                    COMMAND=-1;
                                    system("cls");
                                    commandlist(2);
                                }
                                else
                                    if (COMMAND==5)
                                    {
                                        printf("Введите ключ: ");
                                        scanf("%d",&key);
                                        if (pS->type==1) STable.add(S,key);
                                        else
                                            if (pS->type==2) FSTable.add(FS,key);
                                            else
                                                if (pS->type==3) CSTable.add(CS,key);
                                    }
                                    else
                                        if (COMMAND==6)
                                        {
                                            printf("Введите ключ: ");
                                            scanf("%d",&key);
                                            if (pS->type==1) 
                                            {
                                                if (STable.search(key,&pos)==1)
                                                {
                                                    pS=&STable.get(pos);
                                                    pS->DRAW(hwnd,hdc);
                                                }
                                            }
                                            else
                                                if (pS->type==2) 
                                                {
                                                    if (FSTable.search(key,&pos)==1)
                                                    {
                                                        pS=&FSTable.get(pos);
                                                        pS->DRAW(hwnd,hdc);
                                                    }
                                                }
                                                else
                                                    if (pS->type==3) 
                                                    {
                                                        if (CSTable.search(key,&pos)==1)
                                                        {
                                                            pS=&CSTable.get(pos);
                                                            pS->DRAW(hwnd,hdc);
                                                        }
                                                    }
                                        }
                                        else
                                            if (COMMAND==7)
                                            {
                                                printf("Введите ключ: ");
                                                scanf("%d",&key);
                                                if (pS->type==1) STable.del(key);
                                                else
                                                    if (pS->type==2) FSTable.del(key);
                                                    else
                                                        if (pS->type==3) CSTable.del(key);
                                            }
                                            else
                                                if (COMMAND==8)
                                                {
                                                    if (pS->type==1) 
                                                    {
                                                        STable.save();
                                                    }
                                                    else
                                                        if (pS->type==2) 
                                                        {
                                                            FSTable.save();
                                                        }
                                                        else
                                                            if (pS->type==3) 
                                                            {
                                                                CSTable.save();
                                                            }
                                                }
                                                else
                                                    if (COMMAND!=9) printf("Неверная команда!\n");
            }
            COMMAND=-1;
            system("cls");
            commandlist(1);
        }
    }
    ReleaseDC(hwnd,hdc);
}
 
Текущее время: 11:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru