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

ошибка в формуле - C++

Восстановить пароль Регистрация
 
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
26.07.2011, 15:22     ошибка в формуле #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
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
 
char ch[100];
char *Rus(const char in[],char z[]);
char *Rus(const char in[],char z[])
{
  if(CharToOem(in,z))return z;
  else return 0;
}
 
enum Shape{prizm,parallelepiped,cube,pyramid,cone,cylinder};
enum Color{red,yellow,green,blue,white};
enum Material{metal,wood,plastic,cardboard};
enum Filter{water,milk,air,quartz_sand,vegetable_oil};
 
static char* Shapes[]={"prizm","parallelepiped","cube","pyramid","cone","cylinder"};
static char* Colours[]={"red","yellow","green","blue","white"};
static char* Materials[]={"metal","wood","plastic","cardbroad"};
static char* Filters[]={"water","milk","air","quartz_sand","vegetable_oil"};
 
class Body
{
   private:
  char* Name;
  Shape shape_s;
  Color color_c;
  Material material_m;
  Filter filter_f;
  float H,So,Sb,Sp,V1,V2,P1,P2,p1,p2,k,thickness;
 
   public:
  Body(char* name,Color c,Material m,Shape s);
  Body(char* name,Color c,Material m,Shape s,Filter f,float thickness);
  ~Body();
  float get_V1();
  float get_V2();
  float get_P1();
  float get_P2();
  float get_H(float H);
  float get_So(float So);
  float get_Sb(float Sb);
  float get_Sp(float Sp);
  void Display();
};
 
  Body::Body(char *name,Color c,Material m,Shape s)
{
   Name=new char[strlen(name)+1];
   strcpy(Name,name);
   color_c=c;
   material_m=m;
   shape_s=s;
   switch(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<<Rus("Нет такого цвета.",ch);break;
          }
   switch(m)
          {
            case metal:     cout<<"metal ";     p1=7.874;  break;
            case wood:      cout<<"wood ";      p1=0.861;  break;
            case plastic:   cout<<"plastic ";   p1=1.235;  break;
            case cardboard: cout<<"cardboard "; p1=0.689;  break;
            default: cout<<Rus("Нет такого материала.",ch);break;
          } if(p1!=0){ get_P1(); }
   switch(s)
          {
            case prizm:          cout<<"prizm ";          k=1.0;     break;
            case parallelepiped: cout<<"parallelepiped "; k=1.0;     break;
            case cube:           cout<<"cube ";           k=1.0;     break;
            case pyramid:        cout<<"pyramid ";        k=1.0/3.0; break;
            case cone:           cout<<"cone ";           k=1.0/3.0; break;
            case cylinder:       cout<<"cylinder ";       k=1.0;     break;
            default:cout<<Rus("Неизвестная фигура.",ch);             break;
          } if(k!=0){ get_V1(); }
}
 
  Body::Body(char *name,Color c,Material m,Shape s,Filter f,float thickness)
{
   Name=new char[strlen(name)+1];
   strcpy(Name,name);
   color_c=c;
   material_m=m;
   shape_s=s;
   filter_f=f;
   switch(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<<Rus("Нет такого цвета.",ch); break;
          }
   switch(m)
          {
            case metal:     cout<<"metal ";     p1=7.874;   break;
            case wood:      cout<<"wood ";      p1=0.861;   break;
            case plastic:   cout<<"plastic ";   p1=1.235;   break;
            case cardboard: cout<<"cardboard "; p1=0.689;   break;
            default: cout<<Rus("Нет такого материала.",ch); break;
          } if(p1!=0){ get_P1(); }
   switch(s)
          {
            case prizm:          cout<<"prizm ";          k=1.0;     break;
            case parallelepiped: cout<<"parallelepiped "; k=1.0;     break;
            case cube:           cout<<"cube ";           k=1.0;     break;
            case pyramid:        cout<<"pyramid ";        k=1.0/3.0; break;
            case cone:           cout<<"cone ";           k=1.0/3.0; break;
            case cylinder:       cout<<"cylinder ";       k=1.0;     break;
            default: cout<<Rus("Неизвестная фигура.",ch);            break;
          } if(k!=0){ get_V1(); }
   switch(f)
          {
            case water:         cout<<"water ";         p2=1;        break;
            case milk:          cout<<"milk ";          p2=1.032;    break;
            case air:           cout<<"air ";           p2=0.001293; break;
            case quartz_sand:   cout<<"quartz_sand ";   p2=2.65;     break;
            case vegetable_oil: cout<<"vegetable_oil "; p2=0.87;     break;
            default: cout<<Rus("Нет такого материала",ch);           break;
          } if(p2!=0){ get_P2(); }
}
 
  Body::~Body()
  {delete[]Name;}
 
  float Body::get_V1()
  {float V1=So*H*k; return V1;}
 
  float Body::get_P1()
  {float P1=p1*get_V1(); return P1;}
 
  float Body::get_V2()
  {float V2=Sp*thickness; return V2;}
 
  float Body::get_P2()
  {float P2=get_P1()+p2*(get_V1()-get_V2()); return P2;}
 
  float Body::get_H(float H)
  {this->H=H; return H;}
  float Body::get_So(float So)
  {this->So=So; return So;}
  float Body::get_Sb(float Sb)
  {this->Sb=Sb; return Sb;}
  float Body::get_Sp(float Sp)
  {this->Sp=Sp; return Sp;}
 
   void Body::Display()
  {
   cout<<endl;
   cout<<Sp*thickness;
 
   cout<<Rus("Имя объекта - ",ch)<<Name<<"."<<endl;
   cout<<Rus("Форма объекта - ",ch)<<shape_s<<"."<<endl;
   cout<<Rus("Площадь основания равна:                 \tSo=",ch)<<So<<endl;
   cout<<Rus("Площадь боковой поверхности равна:       \tSb=",ch)<<Sb<<endl;
   cout<<Rus("Площадь полной поверхности равна:        \tSp=",ch)<<Sp<<endl;
   cout<<Rus("Объем обекта равен:                      \tV=",ch)<<get_V1()<<endl;
   cout<<Rus("Вес объекта равен:                       \tP=",ch)<<get_P1()<<endl;
   cout<<Rus("Вес объекта вместе с наполнителем равен: \tP=",ch)<<get_P2()<<endl;
   cout<<"Hello! I`m an object "<<Name<<" - "<<Colours[color_c]<<' '<<Materials[material_m]<<' '<<Shapes[shape_s]<<" filled with "<<Filters[filter_f]<<".\n";
  }
 
 
class class_prizm:public Body
{
   public:
  class_prizm(char *name,Color c,Material m,Shape s,float H,float So,float Sb,float Sp):Body(name,c,m,s)
 {get_H(H);
  get_So(So);
  get_Sb(Sb);
  get_Sp(Sp);}
 
  class_prizm(char *name,Color c,Material m,Shape s,Filter f,float thickness,float H,float So,float Sb,float Sp):Body(name,c,m,s,f,thickness)
 {get_H(H);
  get_So(So);
  get_Sb(Sb);
  get_Sp(Sp);}
};
 
int main()
{
  class_prizm pri("Mama",white,wood,cube,vegetable_oil,1.0,1.0,1.0,1.0,1.0);
  pri.Display();
  getch();
  return 0;
}
Ошибка в формуле float Body::get_V2()
{float V2=Sp*thickness; return V2;}, скажите пожалуйста, где у меня ошибка

Добавлено через 40 минут
ТОЧНЕЕ ПОЧЕМУ
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2011, 15:22     ошибка в формуле
Посмотрите здесь:

Где ошибка в формуле ??? C++
C++ Ошибка в формуле
C++ Ошибка в формуле при компиляции
C++ Ошибка в формуле на четность
C++ Вычислить по формуле
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
26.07.2011, 15:30     ошибка в формуле #2
а в чём , собственно проблема?
ошибок синтаксиса вроде нет.
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
26.07.2011, 15:35  [ТС]     ошибка в формуле #3
да вот и я про тоже но когда проверял числовые значения по этой формуле показывает результат
1,4013е-45
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
26.07.2011, 15:41     ошибка в формуле #4
thickness не инициализировано
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
26.07.2011, 15:48  [ТС]     ошибка в формуле #5
точно, тупанул, спасибо, а как код преобразовать, чтобы поменьше был, помогите пожалуйста, уж очень он большой получился у меня
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
26.07.2011, 16:01     ошибка в формуле #6
вместо длинных switch-ей можно сделать к примеру вместо
C++
1
2
3
4
5
6
7
8
9
   switch(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<<Rus("Нет такого цвета.",ch);break;
                  }
это
C++
1
2
3
if (c>=red && c<=white)
std::cout << Colours[c];
else std::cout << Rus("Нет такого цвета.",ch);
вообще смотря от задачи.
весь код нужно скорей всего переделывать.
например вместо этого:
C++
1
2
3
4
enum Shape{prizm,parallelepiped,cube,pyramid,cone,cylinder};
enum Color{red,yellow,green,blue,white};
enum Material{metal,wood,plastic,cardboard};
enum Filter{water,milk,air,quartz_sand,vegetable_oil};
создать абстрактный класс Shape, и от него унаследовать prizm, cube ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 16:05     ошибка в формуле
Еще ссылки по теме:

Ошибка в формуле не могу исправить C++
Ошибка в суммировании массива по формуле C++
Ошибка, расчёт функции по формуле C++

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

Или воспользуйтесь поиском по форуму:
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
26.07.2011, 16:05  [ТС]     ошибка в формуле #7
эти enum оставить надо, если нетяжело напишите пожалуйста
Yandex
Объявления
26.07.2011, 16:05     ошибка в формуле
Ответ Создать тему
Опции темы

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