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

Как выбрать класс из консольного меню? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посоветуйте литературу по с++(с большим приоритетом на блок-схемы) http://www.cyberforum.ru/cpp-beginners/thread1629909.html
Еще раз доброго времени суток дорогие форумчане, решил избавиться от очередного страха, который заставляет меня засомневаться каждый раз при чертеже блок-схемы(алгоритма) программы. Скачал достаточно большое кол-во литературы и видео уроков, но ни в одном нету детального объяснения этих блок-схем. Чтобы с нуля и до опытного кодера. Заранее благодарю, с уважением..
C++ Разложение на простые множители решетом Эратосфена Всем привет! Помогите, пожалуйста, отыскать ошибку или значение, которое неправильно вычисляется. Не могу понять, где проблема. Решаю задания на одном сайте, решение проходит несколько автоматических тестов на сервере. Один из тестов выдаёт сообщение, что получен неверный ответ. Задание: разложить число натуральное число N (2 ≤ N ≤ {2}^{31} - 1) на простые множители. #define... http://www.cyberforum.ru/cpp-beginners/thread1629875.html
C++ Разработать класс векторов произвольной одинаковой длины
Добрый вечер! Прошу помочь с задачей :) Разработать класс векторов произвольной одинаковой длины. Переопределить операции сложения, вычитания, операцию ++ прибавления 1 ко всем элементам. Создать массив из четырех векторов и найти среди них два с максимальным средним значением для их суммы. Заранее спасибо! :)
Разработать класс "Матрица" C++
Добрый вечер! Прошу помочь с задачей :) Разработать класс матриц размера 2 на 2. Переопределить операции сложения, умножения и вычитания матриц, вычисления детерминанта. Создать класс-потомок нижнетреугольных матриц с одинаковыми ненулевыми элементами на диагонали, ввести в нем операции сложения и взятия обратной матрицы. В основное программе проверить на корректность. Заранее спасибо! :)
C++ Разработать класс "Комплексное число", переопределить четыре арифметических действия и операцию сравнения http://www.cyberforum.ru/cpp-beginners/thread1629872.html
Добрый вечер! Прошу помочь с задачей :) Разработать класс комплексных чисел, переопределить четыре арифметических действия и операцию сравнения. В основной программе проверить корректность. Создать массив комплексных чисел, длину массива задать с экрана. Найти число элементов массива, отличных от деления первого числа на последнее. Заранее спасибо! :)
C++ Пытаемся прикрутить CMake к QtCreator под OS X Доброе время суток, навеяло темой о самой лучшей IDE! И так собрался я подружить Qt и cmake (Qbs что то мне не пошел)! С начало полез в настройки самой IDE, там есть встроенный генератор, называется так эпично (Ninja), дума ну супер не надо не каких танцев с бубной, а нет, он не умеет и половины того что предусмотрено что бы собрать нормальный проект, и так дальше скачал с оффа чистый cmake... подробнее

Показать сообщение отдельно
xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115

Как выбрать класс из консольного меню? - C++

01.01.2016, 20:38. Просмотров 175. Ответов 0
Метки (Все метки)

Есть классы графических фигур, описание их - в соответствующих файлах. Для всех них есть метод рисования Draw(), выполненный на основе библиотеки BGI grahpics.h;

Делаю программу так, чтобы выбирался массив экземпляров класса путем ввода с клавиатуры. В дальнейшем будет идти обработка данных в зависимости от введенного класса. Требуется сократить программу и не делать всех вариантов обработки данных для каждого класса (например, с помощью switch()... case '...' ), что необходимо, например, если таких классов много и для каждого класса тоже могут быть варианты операций типа switch()... case '...' .

Пробую делать так:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <graphics.h>
#include <math.h>
using namespace std;
 
#include "header.h"
 
const int N=100, 
          MaxX=800, 
          MaxY=600;
 
void MakeClassDraw(int n, TPoint* TClass)
{
    for(int i=0;i<n;i++)    
    (TClass+i) -> Draw();
}
    
int main(int argc, char* argv[])
{
    setlocale(LC_ALL,".1251");
    srand(time(NULL));
    
    TPoint     P[N];
    TLine      L[N]; 
    TCircle    C[N]; 
    TEllipse   E[N];
    TTriangle  T[N];
    TRectangle R[N];
    char      a;    
    TPoint*   ClassLink; 
    
    cout<<"Введите:\n1 - ТочкаГ*,\n2 - Линия,\n3 - Окружность,\n4 - Эллипс,\n5 - Прямоугольник,\n6 - Прямоугольник.\n";
    cin>>a; cin.get();
    
    initwindow(MaxX,MaxY);
    
    switch (a) 
    {
           case '1': ClassLink = P; break;
           case '2': ClassLink = L; break;
           case '3': ClassLink = C; break;
           case '4': ClassLink = E; break;
           case '5': ClassLink = T; break;
           case '6': ClassLink = R; break;
           default: cout << "\nВведено не корректное значение.\n";
    }
    
    initwindow(MaxX,MaxY);
    
    MakeClassDraw(N,ClassLink);
 
    getch();
    return 0;
}
Программа вроде компиллируется, рисует 2 фигуры из 100 (2 точки, 2 треугольника или др. фигуры), а затем зависает... Видимо что-то не правильно в коде... (сделано в Dev-Cpp).

Итак, еще раз, вопросы:
1) Как выбрать класс из меню, присвоить его "идентификатор" какой-то переменно (какой?) и потом работать с этой абстрактной переменной, а не с экземпляром конкретного класса???

2) Можно ли как-то ввести этот "идентификатор" экземпляра класса с клавиатуры а не с помощью switch()... case'...', как сделано у меня... поскольку, в указатель не получается ввести значение?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru