C#如何实现计算器?
输入X值,在(MSSQL表内)最小值和最大值的区间查找,找到的时候取出对应行的a、b、c、d、e、f数值用于公式计算计算出N和M的值。N、M的计算公式为:Y=aX*X+b...
输入X值,在(MSSQL表内)最小值和最大值的区间查找,找到的时候取出对应行的a、b、c、d、e、f数值用于公式计算计算出N和M的值。
N、M的计算公式为:
Y=aX*X+bX+c
Z=dX*X+eX+f
式中X为输入的已知值
例:我输入X值1.5,则1.5在第二行1-3.8之间,因此查表得a=1.14673,b=1.7576,c=-0.0109,d=0.84155,e=1.5521,f=-0.077
再把这些值带入到公式中计算得到Y,Z,Y+Z的值。
图为mssql表内数据为下图:
学习中,各位可以写出详细的代码吗? 展开
N、M的计算公式为:
Y=aX*X+bX+c
Z=dX*X+eX+f
式中X为输入的已知值
例:我输入X值1.5,则1.5在第二行1-3.8之间,因此查表得a=1.14673,b=1.7576,c=-0.0109,d=0.84155,e=1.5521,f=-0.077
再把这些值带入到公式中计算得到Y,Z,Y+Z的值。
图为mssql表内数据为下图:
学习中,各位可以写出详细的代码吗? 展开
展开全部
从提问和截图上看数据并不多,所以可以直接取出数据库记录为DataTable,然后就很简单了,就是判断区间、取对应值、代入公式、计算结果,简单描述如下,有什么问题再追问或补充:
1、输入X值后做一个判断,如果输入的值小于1或者大于1000,那么就提示用户数据非法,至于方式很多,可以显示在TextBox中,也可以弹出提示框,还可以禁用计算按钮;
2、连接数据得到DataTable这个很简单了,现在要做的就是遍历或是循环DataTable中的行,根据输入的值大于等于第一列和小于等于第二列(等于最大值时算在哪个区间这个逻辑你没说,根据你的需求来)来得到来得到对应的DataRow,示例代码如下:
DataRow selected = null; //定义用于取值的行
foreach(DataRow dr in DataTable.Rows) //遍历数据表中的行
if(Convert.ToDouble(dr[0])<x&&Convert.ToDouble(dr[1])>x) //等于按你的要求写
selected=dr; //得到取值区间的行
3、得到对应的行之后就很简单了,根据公式取得对应列的值,代入公式计算出结果就是了;
if(selected != null)
y=Convert.ToDouble(dr[2]) * x //计算Y值,代码我简写了,就是取对应列代入就是了
基本就是这样,希望对你有帮助,有疑问请补充问题或是追问
1、输入X值后做一个判断,如果输入的值小于1或者大于1000,那么就提示用户数据非法,至于方式很多,可以显示在TextBox中,也可以弹出提示框,还可以禁用计算按钮;
2、连接数据得到DataTable这个很简单了,现在要做的就是遍历或是循环DataTable中的行,根据输入的值大于等于第一列和小于等于第二列(等于最大值时算在哪个区间这个逻辑你没说,根据你的需求来)来得到来得到对应的DataRow,示例代码如下:
DataRow selected = null; //定义用于取值的行
foreach(DataRow dr in DataTable.Rows) //遍历数据表中的行
if(Convert.ToDouble(dr[0])<x&&Convert.ToDouble(dr[1])>x) //等于按你的要求写
selected=dr; //得到取值区间的行
3、得到对应的行之后就很简单了,根据公式取得对应列的值,代入公式计算出结果就是了;
if(selected != null)
y=Convert.ToDouble(dr[2]) * x //计算Y值,代码我简写了,就是取对应列代入就是了
基本就是这样,希望对你有帮助,有疑问请补充问题或是追问
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
展开全部
连接数据库就不写了网上到处是,简单描述一下
重点是SQL查询句子,这里假设表名=Table,X输入框TextBoxX,假设上限为包含(即X取值3.8命中第2行,1-3.8)
SQL = "Select * from Table Where 最小值<" + TextBoxX.Text+ " AND 最大值>=" + TextBoxX.Text;
执行以上SQL后,检查记录数是不是1,是则在范围内,否则报错,X值不合法(不在范围内)
然后就简单了,读出每个字段,计算就好了
重点是SQL查询句子,这里假设表名=Table,X输入框TextBoxX,假设上限为包含(即X取值3.8命中第2行,1-3.8)
SQL = "Select * from Table Where 最小值<" + TextBoxX.Text+ " AND 最大值>=" + TextBoxX.Text;
执行以上SQL后,检查记录数是不是1,是则在范围内,否则报错,X值不合法(不在范围内)
然后就简单了,读出每个字段,计算就好了
追问
谢谢楼上的回答,你说的很清楚,但还是不太懂,可不可以判断当X值为1时在TextBox1内直接“报出不合法”,不再进行计算?
上面的句语中最后的“+ TextBoxX.Text;”是代表什么意思呢?
查找X后要取出abcdef的值,要怎么写?谢谢!见谅又多问了!
追答
因为假设了X输入框名字是TextBoxX,所以这里是指在查询字符串中连接输入的x值
你可以在按钮的单击事件中
if (TextBoxX.Text.Equals("1"))
{
MessageBox.Show("X值不合法");
return;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单的计算器的代码如下:
{
int fristnum = Convert.ToInt32(this.textBox1.Text);
string choose = this.textBox3.Text;
int secondnum = Convert.ToInt32(this.textBox2.Text);
int sum=0;
switch (choose)
{
case "+":
sum = fristnum + secondnum;
this.textBox4.Text = sum.ToString();
break;
case "-":
sum = fristnum - secondnum;
this.textBox4.Text = sum.ToString();
break;
case "*":
sum = fristnum * secondnum;
this.textBox4.Text = sum.ToString();
break;
case "/":
sum = fristnum / secondnum;
this.textBox4.Text = sum.ToString();
break;
default :
this.textBox4.Text = "无法识别的远算符!";
break;
}
}
catch
{
MessageBox.Show("输入有误!");
}
{
int fristnum = Convert.ToInt32(this.textBox1.Text);
string choose = this.textBox3.Text;
int secondnum = Convert.ToInt32(this.textBox2.Text);
int sum=0;
switch (choose)
{
case "+":
sum = fristnum + secondnum;
this.textBox4.Text = sum.ToString();
break;
case "-":
sum = fristnum - secondnum;
this.textBox4.Text = sum.ToString();
break;
case "*":
sum = fristnum * secondnum;
this.textBox4.Text = sum.ToString();
break;
case "/":
sum = fristnum / secondnum;
this.textBox4.Text = sum.ToString();
break;
default :
this.textBox4.Text = "无法识别的远算符!";
break;
}
}
catch
{
MessageBox.Show("输入有误!");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你想要简单的四则运算功能,可以用switch——case语句。我这里有现成的四则运算的代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
float a,b;
char d;
printf("请输入两个数a,b:");
scanf("%f,%f"&a,&b);
printf("请输入运算符号d");
scanf("%c",d);
switch(d)
{
case'+':printf("%f\n",a+b); break;
case'-':printf("%f\n",a-b);break; case'*':printf("%f\n",a*b);break; case'/':printf("%f\n",a/b);break; default:printf("计算出错\n");
}
}
void main()
{
float a,b;
char d;
printf("请输入两个数a,b:");
scanf("%f,%f"&a,&b);
printf("请输入运算符号d");
scanf("%c",d);
switch(d)
{
case'+':printf("%f\n",a+b); break;
case'-':printf("%f\n",a-b);break; case'*':printf("%f\n",a*b);break; case'/':printf("%f\n",a/b);break; default:printf("计算出错\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询