重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
挺有意思的问题,简单谈一下看法
创新互联提供高防主机、云服务器、香港服务器、成都电信服务器托管等
将你的需求分成两部分,一是让程序自行解析用户输入的函数解析式,二是绘制函数图像。
首先,关于第一个功能,最直接的思路就是字符串解析,按照数学知识定义不同的运算符号,按照使用习惯定义常用的变量和常量的符号字母,然后据此规则解析输入的字符串,再根据解析结果确定函数中基本运算的次数及运算顺序,最后将整个操作流程以一定形式存储起来即可。
例如,对于y=log(x^2+x),包含三次基本运算,第一步是x^2,第二步是上一步的结果+x,第三步是上一步的结果求对数。注意到log有定义域的限制,这也是要在程序中实现的。
然后,对于第二个功能,根据给定函数绘制图像并不难,对于一元和二元函数来说很容易实现,难点在于多元函数应如何绘制直观易懂的函数图像?不过这一点超出编程语言的范畴了,而且二元函数可以满足大部分应用场景了。
绘制函数图像的程序只需在定义域上按指定的步长求出不同自变量对应的函数值,然后将点连成线,即可绘制出函数图像。例如对于logx,定义域为x0。假设步长为0.1,则可求出0.1,0.2,0.3,...,99.9,100.0的函数值,然后绘制出点,再连点成线,即可得到函数图像。
另外,这里还有很多细节没有讨论,例如输入数据是字符串还是图像;是否可以用其他方法解析输入,例如神经网络。这些就很复杂了,不再深入。
回答中可能有考虑不周的地方,希望上述内容对你有参考意义
#include "graphics.h"
#include stdio.h
#include conio.h
#include math.h
void main()
{
int GD,GM;
int i,val;
GD=DETECT;
initgraph(GD,GM,"");
setfillstyle(SOLID_FILL,WHITE);
bar(0,0,639,479);
setcolor(BLACK);
line(20,20,20,459); // y轴
line(15,25,20,20);
line(25,25,20,20);
outtextxy(16,10, "Y");
line(20,239,620,239); // x轴
line(615,234,620,239);
line(615,244,620,239);
outtextxy(625,234, "X");
setcolor(RED);
for(i=0;i560;i=i+2)//隔点输出*,可以根据梳密需要调整 /
{
val=50*tan(i*2*3.14159/560);//2PI弧度表示360度
outtextxy(i+20,239-val,"*");
}
getch();
closegraph();
}
需要Window图像编程,Window编程就是基于C语言的,在Visual C++6.0可以编写Win32程序
这是一段java代码,需要你自己改成C语言的了,注意换行啊
int x = 10;// 行数
String str = "*";
// 循环,打印x行
// 位置1要换行,位置2,3不需要换行
for (int i = 0; i x; i++) {
// 每打印一行字符就换行
System.out.println();// 1
// 循环打印行开头空格,每增加一行就多一个空格
for (int j = 0; j i + 1; j++) {
System.out.print(" "); // 2
}
// 打印图案
for (int k = 0; k x; k++) {
System.out.print(str); // 3
}
}