基于CLR 的控制台应用程序的设计及调试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于CLR 的控制台应用程序的设计及调试
姓名:
学号:
专业:
指导教师:
实验日期:2013年3月21日
一、问题陈述
要求从键盘任意输入3个实数,然后计算出由这3个输作为系数所组成的一元二次方程ax^2+bx+c=0的根,包括两个实根或两个复数根的情况。
二、算法分析及关键代码设计,主要程序结构,数据结构说明
1、关键代码
ref class sqw{
private:
double a,b,c;
double d,e,f,x1,x2;
int p;
public:
int solve(){
Console::WriteLine(L"输入\na= \nb= \nc=");
a=Convert::ToDouble(Console::ReadLine());
b=Convert::ToDouble(Console::ReadLine());
c=Convert::ToDouble(Console::ReadLine());
d=b*b;
e=4*a*c;
if (d>=e){
f=d-e;
x1=-b/2/a;
x2=Math::Sqrt(f);
Console::WriteLine("x1={0}+{1}\nx2={2}-{3}",x1,x2,x1,x2);
}
else {
f=e-d;
x1=-b/2/a;
x2=Math::Sqrt(f);
Console::WriteLine("x1={0}+i{1},x2={2}-i{3}",x1,x2,x1,x2);
}
Console::WriteLine(L"继续输入结束输入");
p=Convert::ToInt32(Console::ReadLine());
switch (p)
{
case 1:solve();
case 0:break;
default:break;
}
return 0;
}
};
2、结构说明
本程序定义了一个类sqw,其中包含九个私有变量和一个方法solve,其中在方法solve 中解决输入、输出、计算和循环,此方法也在主函数得以调用。
三、实验结果截图及结果讨论
程序的初始化
实数根的计算
复数根的计算
系数为小数时的计算
若循环过程中输入非0非1,则程序退出
四、实验心得体会
初次用c++语言写程序,刚开始做出来的东西完全没有面向对象的概念,用主函数调用一个函数的方法,细看之后跟c语没什么区别仅仅只是把输入输出格式换成c++的语法而已。经过再次的修改之后,创建了了一个托管类,来实现了这个方法,在主函数里只需简单的创建一个对象就可轻松地调用,也算是有了c++的一点样子。
总的来说,最大的收获就是有了一点点面向对象的概念,对面向对象有了初步的了解。同时对vs2008平台下的基于CLR 的控制台的程序设计步骤有了初步的认识。
五、原程序附录及注释。
源代码:
// t1.cpp: 主项目文件。
#include"stdafx.h"
using namespace System;
ref class sqw{
private:
double a,b,c;
double d,e,f,x1,x2;
int p;
public:
int solve(){
Console::WriteLine(L"输入\na= \nb= \nc=");
a=Convert::ToDouble(Console::ReadLine());
b=Convert::ToDouble(Console::ReadLine());
c=Convert::ToDouble(Console::ReadLine());
d=b*b;
e=4*a*c;
if (d>=e){
f=d-e;
x1=-b/2/a;
x2=Math::Sqrt(f);
Console::WriteLine("x1={0}+{1}\nx2={2}-{3}",x1,x2,x1,x2);
}
else {
f=e-d;
x1=-b/2/a;
x2=Math::Sqrt(f);
Console::WriteLine("x1={0}+i{1},x2={2}-i{3}",x1,x2,x1,x2);
}
Console::WriteLine(L"继续输入结束输入");
p=Convert::ToInt32(Console::ReadLine());
switch (p)
{
case 1:solve();
case 0:break;
default:break;
}
return 0;
}
};
int main(array
{
sqw q1;
q1.solve();
return 0;
}
2013年3月21号