【2018.3.5】类【无法编译】

今天新学了类,现学现卖改了一个面向过程设计为面向对象,但是dev c++不能编译……这个改得不太对,主函数中子函数的引用方法是错的,因为实在有点复杂……主函数被吃掉了🙃

 1 //exam.cpp
 2 #include<iostream>
 3 #include"exam.h"
 4 using namespace std;
 5 struct score
 6 {
 7     string name;
 8     float point;
 9 };
10 void exam::fail(score Score[])
11 {
12     int i,count=0;
13     cout << "不及格的学生为:";
14     for(i=0;Score[i].point >0;i++)
15     {
16         if(Score[i].point<60)
17         {
18             count++;
19             cout << Score[i].name<<" ";
20         }
21     }
22     cout << endl;
23     cout << "不及格的人数为:"<<count;
24 }
25 
26 void exam::exce(score Score[])
27 {
28     float ave; 
29     int sum=0,count=0,i,Count=0;
30     for(i=0;Score[i].point>0;i++)
31     {
32         count++;
33         sum+=Score[i].point;
34     }
35     ave=sum/count;
36     cout << "成绩在平均分及其上的学生为:";
37     for(i=0;Score[i].point>=0;i++)
38     {
39         if(Score[i].point>=ave)
40         {
41             cout << Score[i].name<<" ";
42             Count++;
43         }
44     }
45     cout << endl;
46     cout << "成绩在平均分及其上的学生人数为:"<<Count<<endl;
47 }
48 
49 void exam::per(score Score[])
50 {
51     float count=0,count_0=0,count_1=0,count_2=0,count_3=0,count_4=0,count_5=0;
52     int i;
53     float per0,per1,per2,per3,per4,per5;
54     for(i=0;Score[i].point>0;i++)
55     {
56         count++;
57         if(Score[i].point<60)
58             count_0++;
59         else if(Score[i].point>=60&&Score[i].point<=69)
60             count_1++;
61         else if(Score[i].point>=70&&Score[i].point<=79)
62             count_2++;
63         else if(Score[i].point>=80&&Score[i].point<=89)
64             count_3++;
65         else if(Score[i].point>=90&&Score[i].point<=99)
66             count_4++;
67         else if(Score[i].point==100)
68             count_5++;
69     }
70     per0=100*count_0/count;
71     per1=100*count_1/count;
72     per2=100*count_2/count;
73     per3=100*count_3/count;
74     per4=100*count_4/count;
75     per5=100*count_5/count;
76     cout << "各分数段的学生人数及所占的百分比:\n";
77     cout << "第0段:" <<per0<<"%"<<endl;
78     cout << "第1段:" <<per1<<"%"<<endl;
79     cout << "第2段:" <<per2<<"%"<<endl;
80     cout << "第3段:" <<per3<<"%"<<endl;
81     cout << "第4段:" <<per4<<"%"<<endl;
82     cout << "第5段:" <<per5<<"%"<<endl;
83 }
1 //exam.h
2 #include<iostream>
3 class exam
4 {
5     public:
6         void fail(score Score[]);
7         void exce(score Score[]);
8         void per(score Score[]);
9 };

 

这个是直接用文件联编的方式写的,但是也无法编译……

 1 //Tball.h
 2 class coordinate
 3 {
 4     private:
 5         float coo_x;
 6         float coo_y;
 7         float coo_z;
 8         float ball_v;
 9         float ball_s;
10         float ball_r;
11     public:
12         void setcoo(float,float,float,float);
13         float cal_v();
14         float cal_s();
15         void getcoo();
16 }
 1 //Tball.cpp
 2 #include<iostream>
 3 #include"Tball.h"
 4 #define pi=3.1415926;
 5 using namespace std;
 6 void coordinate::setcoo(float x,float y,float z,float r)
 7 {
 8     coo_x=x;
 9     coo_y=y;
10     coo_z=z;
11     ball_r=r;
12 }
13 
14 float coordinate::cal_v()
15 {
16     return ball_v=4/3*pi*ball_r*ball_r*ball_r;
17 }
18 
19 float coordinate::cal_s()
20 {
21     return ball_s=4*pi*ball_r*ball_r;
22 }
23 
24 void coordinate::getcoo() 
25 {
26     cout << "("<<coo_x<<","<<coo_y<<","<<coo_z<<")";
27 }
 1 //main
 2 #include <iostream>
 3 #include "Tball.h"
 4 using namespace std;
 5 const float pi=3.1415926;
 6 int main()
 7 {
 8     Tball point;
 9     float x,y,z,r;
10     cout << "请输入球心坐标:"<<endl;
11     cout << "x:"<<endl;
12     cin >> x;
13     cout << "y:"<<endl;
14     cin >> y;
15     cout <<"z:"<<endl;
16     cin >> z;
17     cout << "请输入球的半径:"<<endl;
18     cin >> r;
19     point.setcoo(x,y,z,r);
20     cout << "检查:球心坐标为:";
21     point.getcoo();
22     cout << endl;
23     cout << "A、求球体体积    B、求球体表面积    请输入操作代码:"<<endl;
24     char code;
25     cin >> code;
26     switch(code)
27     {
28         case'A':cout << "球体体积为:"<<point.cal_v()<<endl;break;
29         case'B':cout << "球体表面积为:"<<point.cal_s()<<endl;break;
30     }
31     while(1) 
32     {
33         cout << "请问您还需要进行什么操作吗?(需要请输入“y”,不需要请输入“n”)"<<endl;
34         char ch;
35         cin >> ch;
36         if(ch == 'y')
37         {
38             cout << "请输入:";
39             cin >> code;
40             switch(code)
41             {
42                 case('A'):cout << "球体体积为:"<<point.cal_v()<<endl;break;
43                 case('B'):cout << "球体表面积为:"<<point.cal_s()<<endl;break;
44             }
45         }
46         else
47         break;
48      }
49     return 0;
50 }

 事实证明,合起来是没问题的。就是多文件联编出问题了…… 

 1 #include <iostream>           //用 C++ 语言定义一个三维空间的坐标点 Tpoint;并描述三维空间的球 TBall ,实现其主要操作(如计算体积和表面积,输出空间坐标等)。

                     //要求:代码分开编写在不同的文件中,以便掌握多文件联编。


 2 using namespace std;
 3 const float pi=3.1415926;
 4 class coordinate
 5 {
 6     private:
 7         float coo_x;
 8         float coo_y;
 9         float coo_z;
10         float ball_v;
11         float ball_s;
12         float ball_r;
13     public:
14         void setcoo(float,float,float,float);
15         float cal_v();
16         float cal_s();
17         void getcoo();
18 }; 
19 void coordinate::setcoo(float x,float y,float z,float r)
20 {
21     coo_x=x;
22     coo_y=y;
23     coo_z=z;
24     ball_r=r;
25 }
26 
27 float coordinate::cal_v()
28 {
29     return ball_v=(4.0/3.0)*pi*ball_r*ball_r*ball_r;
30 }
31 
32 float coordinate::cal_s()
33 {
34     return ball_s=4*pi*ball_r*ball_r;
35 }
36 
37 void coordinate::getcoo() 
38 {
39     cout << "("<<coo_x<<","<<coo_y<<","<<coo_z<<")";
40 }
41 int main()
42 {
43     coordinate point;
44     float x,y,z,r;
45     cout << "请输入球心坐标:\n";
46     cout << "x:";
47     cin >> x;
48     cout << "y:";
49     cin >> y;
50     cout <<"z:";
51     cin >> z;
52     cout << "请输入球的半径:\n";
53     cin >> r;
54     point.setcoo(x,y,z,r);
55     cout << "检查:球心坐标为:";
56     point.getcoo();
57     cout << endl;
58     cout << "A、求球体体积    B、求球体表面积    请输入操作代码:\n";
59     char code;
60     cin >> code;
61     switch(code)
62     {
63         case'A':cout << "球体体积为:"<<point.cal_v()<<endl;break;
64         case'B':cout << "球体表面积为:"<<point.cal_s()<<endl;break;
65     }
66     while(1) 
67     {
68         cout << "请问您还需要进行什么操作吗?(需要请输入“y”,不需要请输入“n”)"<<endl;
69         char ch;
70         cin >> ch;
71         if(ch == 'y')
72         {
73             cout << "请输入:";
74             cin >> code;
75             switch(code)
76             {
77                 case('A'):cout << "球体体积为:"<<point.cal_v()<<endl;break;
78                 case('B'):cout << "球体表面积为:"<<point.cal_s()<<endl;break;
79             }
80         }
81         else
82         break;
83      }
84     return 0;
85 }

一个晚上好像也没干什么……虚拟机的win7系统到期了,有了上次到期后虚拟机系统文件损坏的经验之后,我就把虚拟机清了清,将下次还要用到的软件安装包压压缩移到iCloud里,又觉得dev不好用,c++代码debug总出错🙃win7系统看着实在不顺眼,就去下了win10的系统映像,顺便发现了visio和vs的mac版,结果vs不会用🙃我觉得新建的项目和文件都没问题,但是项目文件里的原始代码我没看懂……头文件在哪里?(来自一个用了半年多dev c++的小白内心绝望的呼喊)下周回家向我哥请教吧。

又发现了code::blocks的mac版,下载之后忽视掉像素点,但是运行之后要用系统终端,要求……被拒绝?

这是一个历经了无数失败的夜晚,明天也还要爬起来继续面对新的失败。

忽地想起高一时lhl曾对我们说:如果你们在一天的结束之时,想起明天要做的事情就觉得不开心,但是第二天早上起来又觉得要做的事情还挺有意思,那就继续做下去;如果第二天一大早起来还感到绝望,那么我奉劝你,就不要去做它。

当然了,当时老师举的例子是上学。

虽然在高三寒假归来,期初考试三门连环爆,我绝望到晚自习拉着爱豆去走廊尽头看着马路吹风的那个夜晚,我们谈起他,我忽地认识到当初被学生们捧上天的“智慧型男神”其实并没有那么智慧,高学历的光环下言论中确实难见大智慧,更多为自私自利,但他这一句话,至今都是我为人行事的准则之一。

如果不是这句话,我的尝试性选择错误成本将会非常高——没有勇气及时退出当初以尝试来发掘潜力所作出的选择困境。

真是扯远了。

 

posted @ 2018-03-05 16:19  兔至  阅读(132)  评论(0编辑  收藏  举报