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

Шаблоны проектирования - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В матрице найти наибольший и наименьший элементы и поместить их на место первого и последнего элемента матрицы соответственно (Pascal -> C++) http://www.cyberforum.ru/cpp-beginners/thread1067539.html
В заданной матрице D найти наибольший и наименьший элементы и поместить их на место первого и последнего элемента матрицы соответственно. Исходную и полученную матрицу вывести в общепринятом виде. Вот как выглядит в Pascale, нужно перекодировать и сделать в visual С++. Помогите пожалуйста. uses crt; var d: array of integer; n,i,j,max,min,imax,imin,jmax,jmin,buf: integer; begin...
C++ Подключение dll к проекту в visual studio Доброго дня, тема уже эта конечно избитая на форуме, но так и не смог найти решения под свою конкретную задачу, прочитав все, что имеется на форуме, и посмотрев примеры на msdn. Есть у меня динамическая библиотека, с нестандартным расширением на конце .ascet_psl. По уверению одностаничного мануала с которым идет библиотека, в котором вообще ничего полезного нет, это все же dll-ка. К... http://www.cyberforum.ru/cpp-beginners/thread1067533.html
C++ По номеру недели выдать количество уроков в группе
Проверти пожалуйста Написать программу, которая бы по номеру дня недели (целому числу от 1 до 7) выдавала бы количество уроков в вашей группе (или сообщение «выходной»). include math; { int a, char b; {cin<<a<<end1; switch a>0; switch a<8 { case 1: b=пять; case 1: b=семь;
C++ Даны два целых числа; найти их среднее арифметическое, их среднее геометрическое
Даны два целых числа найти их среднее арифмитическое их среднее геометрическое Заголовок темы продумываем
C++ Дан массив. определить количество неотрецательных элементов http://www.cyberforum.ru/cpp-beginners/thread1067483.html
Дан массив. определить количество неотрецательных элементов
C++ Определить, какая команда набрала наименьшее количество очков известно количество очков , набранных футбольными командами в чемпионате. какая команда (определить номер) набрала наименьшее количество очков? если таких команд несколько то должа быть найдена первая из них. (ребята напишите полный программный код пожалуйста) подробнее

Показать сообщение отдельно
overlord754
54 / 16 / 5
Регистрация: 24.10.2009
Сообщений: 182
10.01.2014, 15:23     Шаблоны проектирования
Подскажите пожалуйста. Есть 2 задачи. На шаблон "Абстрактная фабрика" и шаблон "Команда".



1.
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
class ICar //AbstractProductA
{
public:
    virtual void printName() = 0;
    virtual ~ICar() {}
};
 
class Ford: public ICar //ConcreteProductA1
{
public:
    virtual void printName() 
    { 
        std::cout << "Ford" << std::endl; 
    }
};
 
class Toyota: public ICar // ConcreteProductA2
{
public:
    virtual void printName() 
    { 
        std::cout << "Toyota" << std::endl; 
    }
};
 
class Mersedes: public ICar // ConcreteProductA3
{
public:
    virtual void printName() 
    { 
        std::cout << "Mersedes" << std::endl; 
    }
};
 
class IEngine // AbstractProductB
{
public:
    virtual void printPower() = 0;
    virtual ~IEngine(){}
};
 
class FordEngine: public IEngine // ConcreteProductB1
{
public:
    virtual void printPower() 
    { 
        std::cout << "Ford Engine 4.4" << std::endl; 
    }
};
 
class ToyotaEngine: public IEngine // ConcreteProductB2
{
public:
    virtual void printPower() 
    { 
        std::cout << "Toyota Engine 3.2" << std::endl; 
    }
};
 
class MersedesEngine: public IEngine // ConcreteProductB2
{
public:
    virtual void printPower() 
    { 
        std::cout << "Mersedes Engine 3.5" << std::endl; 
    }
};
 
 
class IBus // AbstractProductC
{
public:
    virtual void printBusName() = 0;
    virtual ~IBus(){}
};
 
class FordBus: public IBus // ConcreteProductC1
{
public:
    virtual void printBusName() 
    { 
        std::cout << "Ford Bus" << std::endl; 
    }
};
 
class ToyotaBus: public IBus // ConcreteProductC2
{
public:
    virtual void printBusName() 
    { 
        std::cout << "Toyota Bus" << std::endl; 
    }
};
 
class MersedesBus: public IBus // ConcreteProductC2
{
public:
    virtual void printBusName() 
    { 
        std::cout << "Mersedes Bus" << std::endl; 
    }
};
 
 
class ICarFactory // AbstractFactory
{
public:
    virtual ICar*    createCar()    = 0;
    virtual IEngine* createEngine() = 0;    
    virtual IBus*    createBus()    = 0;
};
 
class FordFactory: public ICarFactory // ConcreteFactory1
{
public:
 
    virtual ICar* createCar() // from ICarFactory
    {
        return new Ford();
    }
 
    virtual IEngine* createEngine()
    {
        return new FordEngine();
    }
 
    virtual IBus* createBus()
    {
        return new FordBus();
    }
};
 
class ToyotaFactory: public ICarFactory // ConcreteFactory2
{
public:
    virtual ICar* createCar() // from ICarFactory
    {
        return new Toyota();
    }
 
    virtual IEngine* createEngine()
    {
        return new ToyotaEngine();
    }
 
    virtual IBus* createBus()
    {
        return new ToyotaBus();
    }
};
 
class MersedesFactory: public ICarFactory // ConcreteFactory2
{
public:
    virtual ICar* createCar() // from ICarFactory
    {
        return new Mersedes();
    }
 
    virtual IEngine* createEngine()
    {
        return new MersedesEngine();
    }
 
    virtual IBus* createBus()
    {
        return new MersedesBus();
    }
};
 
 
void use(ICarFactory* f)
{
    ICar*     myCar     =  f->createCar();
    IEngine*  myEngine  =  f->createEngine();
    IBus*     myBus     =  f->createBus();
 
    myCar->printName();
    myEngine->printPower();
    myBus->printBusName(); 
 
    delete myCar;
    delete myEngine;
    delete myBus;
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    ToyotaFactory toyotaFactory;
    FordFactory fordFactory;
    MersedesFactory mersedesFactory; 
 
    use (&toyotaFactory);
    use (&fordFactory);
    use (&mersedesFactory);
    
    getch();
 
    return 0;
}
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
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
 
class Document
{
   vector<string> data; 
public:
   void Insert( int line, const string & str )
   {
      if ( line <= data.size() )
         data.insert( data.begin() + line, str ); 
      else
         cout << "Error!" << endl; 
   }
 
   void Remove( int line )
   {
      if( !( line>data.size() ) )
         data.erase( data.begin() + line ); 
      else
         cout << "Error!" << endl; 
   }
 
   string & operator [] ( int x )
   {
      return data[x]; 
   }
 
   void Show()
   {
      for( int i = 0; i<data.size(); ++i )
      {
         cout << i + 1 << ". " << data[i] << endl; 
      }
   }
}; 
 
class Command
{
protected:
   Document * doc; 
public:
   virtual void Execute() = 0; 
   virtual void unExecute() = 0; 
 
   void setDocument( Document * _doc )
   {
      doc = _doc; 
   }
}; 
 
class InsertCommand : public Command
{
   int line; 
   string str; 
public:
   InsertCommand( int _line, const string & _str ): line( _line ), str( _str ) {}
 
   void Execute()
   {
      doc->Insert( line, str ); 
   }
 
   void unExecute()
   {
      doc->Remove( line ); 
   }
}; 
 
class Receiver
{
   vector<Command*> DoneCommands; 
   vector<Command*> UndoCommands; 
   Document doc; 
   Command* command;
public:
   void Insert( int line, string str )
   {
      command = new InsertCommand( line, str ); 
      command->setDocument( &doc ); 
      command->Execute(); 
      DoneCommands.push_back( command ); 
   }
 
   void Undo()
   {
      if( DoneCommands.size() == 0 )
      {
         cout << "There is nothing to undo!" << endl; 
      }
      else
      {
         command = DoneCommands.back(); 
         DoneCommands.pop_back();
         UndoCommands.push_back(command);
         command->unExecute();
      }
   }
 
   void Redo()
   {
      if( UndoCommands.size() == 0 )
      {
         cout << "There is nothing to redo!" << endl; 
      }
      else
      {
         command = UndoCommands.back();
         DoneCommands.push_back(command); 
         UndoCommands.pop_back();
         command->Execute();
      }
   }
 
 
   void Show()     
   {
      doc.Show(); 
   }
}; 
 
int _tmain(int argc, _TCHAR* argv[])
{
   char s = '1'; 
   int line, line_b, num_undo, num_redo;
   string str; 
   Receiver res; 
   while( s!= 'e' )
   {
      cout << "What to do: \n1.Add a line\n2.Undo last command\n3.Show document\n4.Undo any last command\n5.Redo command\n6.Redo any command" << endl; 
      cin >> s; 
      switch( s )
      {
      case '1':
         cout << "What line to insert: "; 
         cin >> line; 
         --line; 
         cout << "What to insert: "; 
         cin >> str; 
         res.Insert( line, str ); 
         break; 
      case '2':
         res.Undo(); 
         break; 
      case '3':
         cout << "---DOCUMENT---" << endl; 
         res.Show(); 
         cout << "***DOCUMENT***" << endl; 
         break; 
      case '4':
         cout << "How many Undo you need: "; 
         cin >> num_undo;
         for (int i=0; i<num_undo; ++i)
             res.Undo();
         break;
      case '5':
         res.Redo(); 
         break; 
      case '6':
         cout << "How many Redo you need: "; 
         cin >> num_redo;
         for (int i=0; i<num_redo; ++i)
             res.Redo();
         break;
       }
   }
 
    return 0;
}
Подскажите, правильно ли сделаны задачи на основе этих шаблонов. И как доделать 1-ю задачу чтобы было меню.
Миниатюры
Шаблоны проектирования   Шаблоны проектирования  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru