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

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

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

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

26.07.2011, 15:22. Просмотров 382. Ответов 6
Метки нет (Все метки)

Народ, привет!!!
Выкладываю свой код:
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++
Write a C program that accepts three arguments names principal, intRate and months. Where principal is the amount financed, intRate is the...

Ошибка в формуле - C++
Есть такое задание - Написать программу для решения задачи (используя алгоритм линейной структуры). Вычислить значение функции при заданных...

Ошибка в формуле - C++
при попытке вставить число 2.8 возникает ошибка &quot;выражение перед скобками вероятного вызова должно иметь тип функции pointer-to (фото) в...

Ошибка в формуле выражения - C++
Доброго времени суток. Написал программу, но запутался в записи формулы, вернее в ее правильности. Компилятор жалуется на ехр(-х) ...

Ошибка в формуле на четность - C++
Какая ошибка в этом коде, подскажите. #include &quot;stdafx.h&quot; #include &lt;iostream&gt;; #include &lt;string&gt;...

Где ошибка в формуле ??? - C++
Задача Код void lab1::funB( double x, double y, double z ) { double b1 = pow( fabs( y + z ), 0.2 ); double b2 = pow(...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
26.07.2011, 15:30 #2
а в чём , собственно проблема?
ошибок синтаксиса вроде нет.
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
26.07.2011, 15:35  [ТС] #3
да вот и я про тоже но когда проверял числовые значения по этой формуле показывает результат
1,4013е-45
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
26.07.2011, 15:41 #4
thickness не инициализировано
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
26.07.2011, 15:48  [ТС] #5
точно, тупанул, спасибо, а как код преобразовать, чтобы поменьше был, помогите пожалуйста, уж очень он большой получился у меня
OstapBender
583 / 521 / 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 ...
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
26.07.2011, 16:05  [ТС] #7
эти enum оставить надо, если нетяжело напишите пожалуйста
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 16:05
Привет! Вот еще темы с ответами:

Ошибка, расчёт функции по формуле - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Ошибка в формуле не могу исправить - C++
http://www.cyberforum.ru/attachment.php?attachmentid=385415&amp;stc=1&amp;d=1396783612 #include &lt;vcl.h&gt; #pragma hdrstop #include...

Ошибка в суммировании массива по формуле - C++
Задание: 2. Составить программу для вычисления величины S по формуле: Подскажите, пожалуйста, что я делаю не так? Заранее благодарен. ...

Ошибка в формуле при компиляции - C++
Вот формула int k=ceil(sqrt(tmp.Length()-1)); на которой выдает ошибку: Ambiguity between 'std::sqrt(float) at c:\program files...


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

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

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