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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
#1

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

20.07.2011, 12:47. Просмотров 377. Ответов 8
Метки нет (Все метки)

Всем приветик !!!!!!!
У меня тут глупый вопрос, есть код (ниже), надо чтобы при выводе перечисления было примерно так:
"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++
Хочу написать фигню-программу. Она должна постоянно работать, и каждые 15 минут выводить надпись на весь экран &quot;СПИНУ РОВНО&quot;. Т.е. я должен...

Для вывода матрицы на экран использовать рекурсивную функцию вывода одной строки матрицы - C++
Рекурсивная функция в С++. срочно! ДЛЯ вывода матрицы на экран построчно использовать РЕКУРСИВНУЮ функцию вывода на экран одномерного...

Функция инициализации массива и функцию вывода на экран - C++
Ввести двумерный массив, в котором числа 0 и 1 размещены случайным образом, а число столбцов не совпадающий с числом строк. определить...

Разработать рекурсивную функцию для вывода на экран стихотворения - C++
Разработать рекурсивную функцию, не возвращающую значений:Разработать рекурсивную функцию для вывода на экран стихотворения: 10 лунатиков...

добавить функцию вывода на экран записи с указанным номером - C++
есть структура надо вывести указанный элемент элемент.. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &quot;conio.h&quot; ...

Реализовать функцию вывода на экран гор в порядке возрастания их высот - C++
Вот такое Задание Обрабатываются горы и их высоты. Задание состоит из двух частей. 1)Вывести на экран горы в порядке возрастания...

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

делай отдельный switch-case, где будешь исходя из значений полей forma_obj, col_c и mat_m указывать, что выводить.
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
20.07.2011, 13:34  [ТС] #3
Уважаемый Paporotnik, сможете привести пример как это сделать, я не понимаю о чем речь
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 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
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
20.07.2011, 14:03  [ТС] #8
Извините, ForEveR , а что делает Colours[col_c] << ' ' например, я не понимаю почему ' '
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.07.2011, 14:05 #9
Mr. Pyatachok, Эм. Colours[col_c] возвращает указатель на char* из массива указателей Colours под номером col_c... А ' ' это просто пробел печатаем..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2011, 14:05
Привет! Вот еще темы с ответами:

Написать функцию поиска и вывода на экран ВСЕХ делителей чисел из переданного диапазона - C++
Доброго времени суток. Прошу помочь. Задание: Написать функцию поиска и вывода на экран ВСЕХ делителей чисел из переданного диапазона ...

Добавить в данный код функцию вывода на экран количества не четных элементов массива - C++
Доброго времени суток. Помогите пожалуйста добавить в данный код функцию вывода на экран количества не четных элементов массива: #include...

Запилить функцию вывода на экран адреса директории, из которой запущен экземпляр cmd.exe - C++
Фрагмент кода: ... system(&quot;md temp&quot;); //создаем в папке, из которой запущена консоль, папку &quot;temp&quot; ofstream...

Разработать рекурсивную функцию для вывода на экран цифр натурального числа в прямом порядке - C++
Разработать рекурсивную функцию для вывода на экран цифр натурального числа в прямом порядке. Применить эту функцию ко всем числам из...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.07.2011, 14:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru