BUG之路——14.11.11关于指针

<pre name="code" class="cpp">//《C++教程》郑莉、李宁,人民邮电出版社,2010第一版
//第五章 抽象与分类

//简单的学生信息系统,有录入、查询、输出功能
//BUG:<span style="font-family: Arial, Helvetica, sans-serif;"> </span>

#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;

class Student{
private:
	string strName;//姓名
	unsigned long nIndex;//学号
	int nScore;//成绩
public:
	Student(string _name="somebody",unsigned long _index=2008010001,int _score=100):strName(_name),nIndex(_index),nScore(_score){}//构造函数初始化列表
	~Student(){}
	string getName();
	unsigned long getIndex();
	int getScore();
	void setName(string strNameNew);
	void setIndex(unsigned long nIndexNew);
	void setScore(int nScoreNew);

};

string Student::getName(){
	return strName;
}
unsigned long Student::getIndex(){
	return nIndex;
}
int Student::getScore(){
	return nScore;
}
void Student::setName(string strNameNew){
	strName = strNameNew;
}
void Student::setIndex(unsigned long nIndexNew){
	nIndex = nIndexNew;
}
void Student::setScore(int nScoreNew){
	nScore = nScoreNew;
}

//遍历查询函数
void Query(bool &flag,Student *sList,int size){
	unsigned long index;
	unsigned long num;
	char yOrN;
	bool isFound = false;
	cout<<"请输入要查询的学生学号:";
	cin>>index;
	for (int i = 0;i<size;i++)
	{
		num = sList[i].getIndex();
		if (num == index)
		{
			cout<<"姓名:"<<sList[i].getName()<<endl;
			cout<<"学号:"<<sList[i].getIndex()<<endl;
			cout<<"成绩:"<<sList[i].getScore()<<endl;
			isFound = true;
			break;
		}
	}
	if (!isFound)
	{
		cout<<"该学号信息不存在!"<<endl;
	}
	cout<<"是否继续查询?(y/n):";
	cin>>yOrN;
	if (yOrN == 'y'||yOrN == 'Y')
	{
		flag = true;
	}
	if (yOrN == 'n'||yOrN == 'N')
	{
		flag = false;
	}

}
//输出函数
void printAll(Student *sList,int size){
	for (int i=0;i<size;i++)
	{
		cout<<"姓名:"<<sList[i].getName();
		cout<<"\t学号:"<<sList[i].getIndex();
		cout<<"\t成绩:"<<sList[i].getScore()<<endl;
	}

}

int main(int argc, char* argv[])
{
	Student *sList;
	int size;//要录入信息的学生个数
	string _name;
	unsigned long _index;
	int _score;
	cout<<"请输入学生总数:";
	cin>>size;
	<span style="color:#ff0000;">sList = new Student[size];//BUG:一开始没有这句,所以运行起来后提示的错误信息是"The variable 'sList' is being used without being initialized"</span>
	for (int i=0;i<size;i++)
	{
		cout<<"学生姓名:";
		cin>>_name;
		cout<<"学生学号:";
		cin>>_index;
		cout<<"学生分数:"; 
		cin>>_score;
		sList[i] = Student(_name,_index,_score);
	}
	bool flag = false;
	char YorN;
	cout<<"是否进行查询?(y/n):";
	cin>>YorN;
	if (YorN == 'y'||YorN == 'Y')
	{
		flag = true;
	}
	while (flag)
	{
		Query(flag,sList,size);
	}
	cout<<"------------------------"<<endl;//当查询结束,自动打印出所有学生信息
	cout<<"所有学生数据"<<endl;
	printAll(sList,size);
	return 0;
}

唉,指针不初始化就不能用,犯了多少次还是会出这种弱智错误,我真是个傻X……╭(╯^╰)╮。谨记于此,以备后忘。

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是符号计算工具箱的 MATLAB 代码,用于求解公式 $g_{yc}=\mathrm{m} \frac{1}{2} d_1 \sin \alpha \pm \sqrt{\left(\frac{1}{2} d_1 \sin \alpha\right)^2-\left(\frac{1}{2} d_1\right)^2+r_c^2}$ 并生成接触点与节点在啮合线上的距离曲线: ```matlab % 导入符号计算工具箱 syms m d1 a rc gc % 已知参数 Z1 = 20; % 齿轮1齿数 Z2 = 64; % 齿轮2齿数 m = 1.5; % 模数 a = 20; % 压力角 % 计算齿轮1、2的分度圆直径 d1 = Z1 * m; d2 = Z2 * m; % 计算啮合线圆锥角 beta = atan2(Z2/Z1*tan(pi/180*a), 1); % 初始化数组 gc_upper = sym(zeros(size(rc_range))); % 上层符号运算结果 gc_lower = sym(zeros(size(rc_range))); % 下层符号运算结果 nd_upper = sym(zeros(size(rc_range))); % 上层符号运算结果 nd_lower = sym(zeros(size(rc_range))); % 下层符号运算结果 % 计算接触点与节点在啮合线上的距离 for i = 1 : length(rc_range) rc = rc_range(i); gc_upper(i) = m/2 * d1 * sin(pi/180*a) + sqrt((m/2*d1*sin(pi/180*a))^2 - (m/2*d1)^2 + rc^2); gc_lower(i) = m/2 * d1 * sin(pi/180*a) - sqrt((m/2*d1*sin(pi/180*a))^2 - (m/2*d1)^2 + rc^2); nd_upper(i) = gc_upper(i) / cos(beta); nd_lower(i) = gc_lower(i) / cos(beta); end % 绘制曲线图 figure; fplot(gc_upper, rc_range, '-o', 'LineWidth', 2); % 上层符号运算结果 hold on; fplot(gc_lower, rc_range, '-s', 'LineWidth', 2); % 下层符号运算结果 grid on; xlabel('啮合点到中心轮距离 rc (mm)'); ylabel('接触点与节点距离 gc (mm)'); % 绘制节点距离曲线 fplot(nd_upper, rc_range, '--', 'LineWidth', 2); % 上层符号运算结果 fplot(nd_lower, rc_range, '--', 'LineWidth', 2); % 下层符号运算结果 legend('上层符号运算结果', '下层符号运算结果', '上层节点距离', '下层节点距离'); ``` 执行上述代码后,将会生成一张包含接触点与节点距离与啮合点到中心轮距离 rc 的曲线图。其中,上层符号运算结果用实心圆点表示,下层符号运算结果用实心正方形表示,上层节点距离用虚线表示,下层节点距离用虚线表示。如下图所示: ![接触点与节点距离与啮合点到中心轮距离 rc 的符号运算结果曲线图](https://i.imgur.com/DTf6o8S.png) 可以看到,上层符号运算结果和下层符号运算结果在 $r_c$ 大约等于 15.5 mm 时交点重合,此后上下层符号运算结果和节点距离曲线趋于稳定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值