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

Доработать функцию вывода сообщения на экран - C++

Восстановить пароль Регистрация
 
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
20.07.2011, 12:47     Доработать функцию вывода сообщения на экран #1
Всем приветик !!!!!!!
У меня тут глупый вопрос, есть код (ниже), надо чтобы при выводе перечисления было примерно так:
"Hello! I'am an object prizma - red wood cube и т.д.". Так вот у меня вместо red,wood,cube их порядковые номера, которые указаны в перечислении в функции switch, подскажите, пожалуйста, как быть с функцией вывода Display. Всем заранее спасибо. Обожаю данный сайт.
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
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<string.h>
 
enum shape{prizm,parallelepiped,cube,pyramid,cone,cylinder};
enum color{red,yellow,green,blue,white};
enum material{metal,wood,plastic,cardboard};
 
class Body
{
   private:
  char* name_obj;
  shape forma_obj;
  float H;
  float So;
  float Sb;
  float Sp;
  float V;
  float k;
  float P;
  float p;
  color    col_c;
  material mat_m;
 
   public:
    float get_V()
  {
    float V=So*H*k;
    return V;
  }
 
  float get_P()
  {
    float P=p*get_V();
    return P;
  }
 
 Body(char *name,color c,material m,shape forma)
      {
        name_obj=new char[strlen(name)+1];
        strcpy(name_obj,name);
        col_c=c;
        mat_m=m;
        forma_obj=forma;
        switch(col_c)
             {
               case red:    cout<<"red ";
                            break;
               case yellow: cout<<"yellow ";
                            break;
               case green:  cout<<"green ";
                            break;
               case blue:   cout<<"blue ";
                            break;
               case white:  cout<<"white ";
                            break;
               default: cout<<"Нет такого цвета.";
                        break;
             }
 
        switch(mat_m)
             {
               case metal:      cout<<"metal ";
                                p=7.874;        //плотность железа
                                break;
               case wood:       cout<<"wood ";
                                p=0.861;       //плотность дуба
                                break;
               case plastic:    cout<<"plastic ";
                                p=1.235;       //плотность пластика
                                break;
               case cardboard:  cout<<"cardboard ";
                                p=0.689;       //плотность картона
                                break;
               default: cout<<"Нет такого материала.";
                        break;
             }
           if(p!=0)
             {
               get_P();
             }
        switch(forma_obj)
              {
               case prizm:          cout<<"prizma ";
                                    k=1.0;
                                    break;
               case parallelepiped: cout<<"parallelipiped ";
                                    k=1.0;
                                    break;
               case cube:           cout<<"cub ";
                                    k=1.0;
                                    break;
               case pyramid:        cout<<"piramid ";
                                    k=1.0/3.0;
                                    break;
               case cone:           cout<<"konys ";
                                    k=1.0/3.0;
                                    break;
               case cylinder:       cout<<"cilinder ";
                                    k=1.0;
                                    break;
               default:cout<<"Неизвестная фигура.\n";
             }
         if (k!=0)
          {
            get_V();
          }
 
    }
 
 
  void Display()
 {
   cout<<"\n\nHello! I'am an object "<<name_obj<<" - "<<col_c<<" "<<mat_m<<" "<<forma_obj<<". My height is "<<H<<", weight is "<<get_P()<<".";
 }
 
  ~Body()
  {  delete[]name_obj;  }
 
  void get_H(float H)
       {  this->H=H;    }
  void get_So(float So)
       {  this->So=So;  }
  void get_Sb(float Sb)
       {  this->Sb=Sb;  }
  void get_Sp(float Sp)
       {  this->Sp=Sp;  }
};
 
 class cl_prizm: public Body
{
  public:
 
  cl_prizm(char *name,color c,material m,shape forma,float H,float So,float Sb,float Sp):Body(name,c,m,forma)
 {
    get_H(H);
    get_So(So);
    get_Sb(Sb);
    get_Sp(Sp);
  }
};
 
int main()
{
  cl_prizm pr("Prizma #1",red,cardboard,prizm,10,10,10,10);
  pr.Display();
 
 
  getch();
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2011, 12:47     Доработать функцию вывода сообщения на экран
Посмотрите здесь:

Разработать рекурсивную функцию для вывода на экран цифр натурального числа в прямом порядке C++
C++ Добавить в данный код функцию вывода на экран количества не четных элементов массива
C++ добавить функцию вывода на экран записи с указанным номером
C++ Разработать рекурсивную функцию для вывода на экран цифр натурального числа в прямом порядке
C++ Запилить функцию вывода на экран адреса директории, из которой запущен экземпляр cmd.exe
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
20.07.2011, 13:23     Доработать функцию вывода сообщения на экран #2
перечисление суть набор констант. и вполне естественно, что ты не можешь вытащить название константы, обращаясь к ней по имени.

делай отдельный switch-case, где будешь исходя из значений полей forma_obj, col_c и mat_m указывать, что выводить.
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
20.07.2011, 13:34  [ТС]     Доработать функцию вывода сообщения на экран #3
Уважаемый Paporotnik, сможете привести пример как это сделать, я не понимаю о чем речь
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.07.2011, 13:43     Доработать функцию вывода сообщения на экран #4
А нет...

Обычный switch делаете и все. Или можно так.


C++
1
2
3
4
5
6
7
void Display()
{
    static char* Shapes[] = { "Prizm", "Parallelepiped", "Cube", "Pyramid", "Cone", "Cylinder" };
    static char* Colours[] = { "Red", "Yellow", "Green", "Blue", "White" }; 
    static char* Materials[] = { "Metal", "Wood", "Plastic", "Cardbroad" };
    cout << "\n\nHello! I`m an object " << name_obj << " - " << Colours[col_c] << ' ' << Materials[mat_m] << ' ' << Shapes[forma_obj] << "\n." << "My height is: " << H << ", Weight is: " << get_P() << '\n';
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
20.07.2011, 13:46     Доработать функцию вывода сообщения на экран #5
Цитата Сообщение от Paporotnik Посмотреть сообщение
перечисление суть набор констант. и вполне естественно, что ты не можешь вытащить название константы
Финт ушами (правда не для данного случая):
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#define print(x) std::cout<<#x<<std::endl;
 
int main () {
    enum {one, two, three};
    print(one);
    print(two);
    print(three);
    return 0;
}
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
20.07.2011, 13:48     Доработать функцию вывода сообщения на экран #6
и правда финт
fasked
20.07.2011, 13:53
  #7

Не по теме:

Какой простор для рефакторинга, ровно как по учебнику

Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
20.07.2011, 14:03  [ТС]     Доработать функцию вывода сообщения на экран #8
Извините, ForEveR , а что делает Colours[col_c] << ' ' например, я не понимаю почему ' '
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2011, 14:05     Доработать функцию вывода сообщения на экран
Еще ссылки по теме:

C++ Написать функцию поиска и вывода на экран ВСЕХ делителей чисел из переданного диапазона
Разработать рекурсивную функцию для вывода на экран стихотворения C++
Функция инициализации массива и функцию вывода на экран C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.07.2011, 14:05     Доработать функцию вывода сообщения на экран #9
Mr. Pyatachok, Эм. Colours[col_c] возвращает указатель на char* из массива указателей Colours под номером col_c... А ' ' это просто пробел печатаем..
Yandex
Объявления
20.07.2011, 14:05     Доработать функцию вывода сообщения на экран
Ответ Создать тему
Опции темы

Текущее время: 10:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru