基于CLR 的控制台应用程序的设计及调试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 ^args)

{

sqw q1;

q1.solve();

return 0;

}

2013年3月21号

相关文档
最新文档