C++语言用控制台不用图形的方式,如何输出一个函数的图像?

Problem Description
在数学中,我们经常会遇到,关于函数的问题,在画一些函数的图像的时候,最长用的方法就是“描点法”。

“描点法” 的具体步骤如下:

计算出函数在某些特定点的值
在坐标系中标记出这些点
用平滑的曲线连接这些点

但是,在实际的操作中,我们会发现,前两部的计算量还是相当大的,所以,我们想编写一个程序,能够在一个坐标系中直接的画出各点。

为了简化这个问题,给出如下y 关于x 的函数表达式

y=a1x^b1+a2x^b2+a3x^b3+...+anx^bn

表达式不超过5项,并且 其中每项的系数 -10 < a <10 , x的指数 0 <= b < 5
表达式中,所有的字符串都是以 ”y=” 开始的 ,在之后的字符串中只含有x ,+ , - , 0~9 这些字符,不含有空格。无非法表达式输入。

特别的:
当x 的指数为1时,省略指数, 例如: y = 2x^1 应表示为 y = 2x
当x 的指数为0时,省略指数和x, 例如: y = 3x^3+2x^0 应表示为 y = 3x^3+2
当x 的系数为负时, 例如: y = 3x^2 + (-1) x 应表示为 y = 3x^2 – x , y = 2x + (-2) 应表示为 y = 2x - 2
在如下坐标系中画出,x属于[-30,30] 所对应y属于[-30,30]的图像。

Input
多组数据输入,每组数据的第一行给出一个n (1<=n <= 26) ,接下来的n行,每行有一个函数的表达式。

Output
对于每组输入数据,在第一行输出,”Case:#” ,# 代表当前的组号。 画出该函数的图像 x取值[-30,30]时, y在 [-30,30]内的点 。对于给出的n个表达式,依次用字母a-z表示每个函数图像上的的所有点。两个图像的交点 或者 图像与坐标轴的交点 用 ‘.’ 表示。输出格式如下所示。各组之间无空行。

Sample Input
2
y=-x-1
y=x^4+1-x^3

Sample Output
Case:1
y^

|

a |

a |

a |

a |

a b |

a |

a |

a |

a |

a |

a |

a |

a |

a |

a |

a |

a |

a |

a |

a |

a | b

a |

a |

a |

a |

a |

a b|

a |

a .b

-----------------------------.+------------------------------>
. x
|a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

| a

0

1个回答

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言:在屏幕上输出图案
在屏幕上输出以下图案:      *     ***    *****   *******  ********* ************************ ***********  *********   *******    *****     ***      *解:程序:#includeint main(){int i, j, k, line;printf("请输入打印的行数:");
C语言中的简单图形打印
1.菱形:n#includennint main()n{n int i,j,n;n n printf("请输入要打印的菱形行数:");n scanf("%d",&n);n n for(i = 0;i < n;i++){n for(j = 0;j < n - i;j++){n printf(" ");n }n for(j = 0;j < 2 * i - 1;j++){n printf
【算法-1】输出网格图形
今天来写几行代码吧,其实是前段时间面试遇到的一道简单算法题,就此做一个简单的记录。n题目:n通过符号“|”(或) 和 符号“_”(下划线)输出特定行数和列数的网格图形;n直接上代码吧:nC++n#include nnusing namespace std;nnvoid displayGrid(int m, int n);nnint main()n{n int gridRow = 0
c作图与图形处理(输出正弦曲线)
先说一下 VC模拟TC 和 TC 运行的区别:1、VC 模拟TC 说明:(1)本系统可以在 win2000/winxp/vista/win7 下完美使用 Turbo C 2.0,包括图形程序。     所有环境均已经配置好,不用修改。(2)由于虚拟了 DOS 环境,文件夹 DISK_C 就是 C:\,使用文件路径的时候需要注意。     例如,图形程序中初始化图形环境的代码:     int gd...
用C语言打印下列图像,打印0-999的水仙花数,,求出Sn=a+aa+aaa+aaaa+aaaaa=?
打印下列图像rn*rnrnrnrnrnrnrnrnrnrnrnrnrnrnrn打印0-999的水仙花数rnrn求出Sn=a+aa+aaa+aaaa+aaaaa=?rn从键盘输入a和nrnrnrn
有趣的图形打印1
在进入Java初级班的时候,老师介绍完java基本的程序结构以及流程控制语句就会给一些练习题,其中就有一种打印图形的程序设计题,这些题重要的不是语法(虽然说是用来练习基础语法的),重要的是解题思路。nnn第一道题:打印一个直角三角形,三角形的行数由传入的参数来决定,即:如果传入参数为“5”,则一共打印5行,第一行打印1个“*”,第二行打印两个“*”,直到第5行打印5个“*”之后结束,打印后的
C语言编程实例—输出指定图形
  用C语言打印指定图形时,主要就是根据i(行号)  来确定每一行输出的数据输入一个数字  就可以根据这个数字输出指定的图形,此算法也可以针对其他情况,比如输出星型。本案例分两部分:接下来找规律   第一部分1-6逐渐扩大,(先输出空格)第一行 行号1     输出5个空格第二行 行号2     输出4个空格第三行 行号3     输出3个空格第 i 行 行号 i      输出6-i 个空格(在...
编程在控制台上输出一个由14行星号组成的沙漏图形
编程在控制台上,你可以利用你学过的数学和编程思想来设计一个由*号组成的一个由14行星号组成的沙漏图形
c++控制台生成一张图片
直接上代码:#include &amp;lt;fstream&amp;gt;n#include &amp;lt;iostream&amp;gt;nusing namespace std;nnint main()n{n int ScreenSizeX = 200;n int ScreenSizeY = 100;nn ofstream fout(&quot;OutputImage.ppm&quot;);n fout &amp;lt;&amp;lt; &quot;P3\n&quot; &amp;l...
C#输出心形图案(一)
using System;nusing System.Collections.Generic;nusing System.Linq;nusing System.Text;nusing System.Threading.Tasks;nnnamespace ConsoleApplication2n{n    class Programn    {n     n  static void Main(st
利用C语言实现sin(x)曲线与cos(x)曲线图形的同时显示
在前面两天的博客中,我们学会了如何用C语言分别绘制sin(x)和cos(x)在0°~360°的曲线。rn    今天我们来试试将两条曲线同时绘制出来。rnrnrn要求:rn    在屏幕上显示0°~360°的cos(x)曲线与sin(x)曲线的叠加图形。其中cos(x)图形用“*”表示,sin(x)图形用“+”表示,在两个图形的交点处则用“*”表示。rnrnrn问题分析与算法设计:rn    图形
(2)C语言常用图形函数
屏幕颜色的设置和清屏函数rn① 设置背景色:void setbkcolor(int color);rnrn② 设置前景色:void setcolor(int color); rnrnrn③ 清除图形屏幕内容,使用清屏函数,其调用格式如下:rn     void cleardevice( );  rn  注:清除前景图形,不清除背景。 rnrnrn基本图形函数rn① 画点函数:rn  将点(x, y
利用C语言绘制余弦函数
绘制余弦曲线rn    要求:在屏幕上用“*”(星号)显示0°~360°的余弦函数cos(x)曲线。(不使用数组)rn问题分析与算法设计rn    对一般的显示器来说,只能按行输出,即:输出第一行信息后,想能向下一行输出,不能再返回到上一行。为了获得一个周期(0°~360°)的余弦函数图形,j就必须在一行中一次输出两个“*”。rn    为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利
C语言编写简单图像程序-圆
生成图像格式:PPMrnPPM图片格式介绍:rnA Netpbm format isrn any graphics format used and defined by the Netpbm project.rn The portable pixmap format (PPM),rn the portable graymap format (PGM)rn and the portable bitm
C语言输出图形
利用C语言输出三角形,正方形,长方形,倒金字塔
C++课后练习——编程用*打印一个箭头
编程打印下面这个图形。nnn *n * * *n * * * * *n* * * * * * *n * * *n * * *n * * *nnC++:nnn#include &quot;iostream&quot;nusing namespace std;nint main(){n int i,j,k;n fo...
c语言输出sin函数(不用数组)
分为两个范围,0到180,一行显示两个点,利用函数的对称性,将屏幕行定义为x,列定义为y,若定义总宽度为31列,计算x在0到90的y的行坐标x,则90到180的行坐标为31-m,利用反函数算出m即可,180到360类似。
C语言常见几中图形打印代码
关于C语言的入门学习记录如下: 现已经历过几个步骤:从简单的了解操作平台Xcode开始,到熟悉基本的数据类型:<1>整型:int、long、short;<2>字符型:char;<3>实型:float、double。然后接触到编程语言的分支结构分类——顺序、分支、循环。其中循环是重点内容,对个人的逻辑分析以及程序执行顺序的理解都要求较高。大家都懂得:有学无习难以提高能力。软件编程更是如此,听十遍,想十遍,不如动手练一遍。下面利用循环结构实现了几个C语言入门的小实例,并且写出了自己的分析。
编程实现图形的输出
XX  XX  XX  XX                  本文为用vs2017实现简单的图像输出,其中符号均可更改,循环次数也可自定义。n  **  **  **  **n@@  @@  @@  @@      注释:由于一些不太清楚的原因,在输出♦,♣,♥,♠时会出现问题,如果直接粘贴这些图案2017会n  $$  $$  $$  $$                 输出&quot;?“,但调用a...
C语言——实例065 一个最优美的图案。
062 到 065 可不理nnnn/*n Name: n Copyright: n Author: n Date: 31/07/17 14:37n Description: n 【程序65】题目:一个最优美的图案。   n ?n*/nn#include "graphics.h"n#include "math.h"n#include "dos.h"n#include "conio.h"n#
直观打印二叉树的图形
n 直观打印一个二叉树的图形,记得把顺时针旋转90度来看 n 附上 java /c++ 诚意满满nnn// Java版 npublic class PrintBinaryTree {nn public static class Node {n public int value;n public Node left;n public Node ri...
C语言实例10——有关ASCII图形的输出
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!n#includen#includenint main(){n SetConsoleOutputCP(437); //显示大于127的asc码n char a = 176, b = 219;n printf("%c%c%c%c%c\n",b,a,a,a,b);n printf("%c%c%c%c%c\n",a,b,a,b
【C语言】打印出一箭穿心图案(简单版)----gotoxy函数
在C语言贴吧看到一个人要用dos打印一个爱心,我试了一下。贴出样图:#define _CRT_SECURE_NO_WARNINGS 1n#include &amp;lt;stdio.h&amp;gt;n#include &amp;lt;windows.h&amp;gt;nnvoid GotoXY(int x, int y) //设定输出位置n{n COORD c; /*COORD是Windows API中定义的一种结构,表示...
图形库打造贪吃蛇,纯c语言,加上图形库函数,有音乐
一、工具首先我们需要两个工具,我自己用的vc2017,然后需要图形库软件。EasyX,百度搜去官网就可以去找到。二,源码用到了循环,枚举,图形库函数,时间函数,结构体,如果你都懂那么都能看到了。//贪吃蛇项目#pragma once#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;tchar.h&amp;gt;#include &amp;lt;graphics.h&amp;gt;//图形库头文件#...
控制台输出人走路的动态图
输出人走路的动态图,无论用什么字符表示都可以参考代码:#include <stdio.h>n#include<windows.h>#define POSX 20n#define TIME 250char str1[][100] = {{" 11\n"}, {" #hL y \n"}, {" #hhhhhh1
giaogiao教你用c语言在屏幕上打印各种图案
今天我们用c语言来实现在屏幕上打印用*组成的图案nn首先呢,我们从简单的开始nn输出自定义行数的矩形nnnn我定义了三个变量nn用for循环做了一个嵌套nn用n来限制i,j,从而控制输出图案的大小nnnn搞定~nn你看我屌么?nn哈哈哈哈,这只是开始nn我试试来输出自定义大小的平行四边形nnnn同样我们还是定义三个变量,用n来控制i,j变量的变化nnnn我们再来试试打印等腰三角形nn这难道就是传说...
C语言控制台窗口图形界面编程
下面介绍几个用于控制台窗口操作的API函数,如下:nnnn[cpp] viewn plain copynnn nnnn//获取控制台窗口信息  nGetConsoleScreenBufferInfo();  n  n//获取控制台窗口标题  nGetConsoleTitle();  n  n//更改指定缓冲区大小  nSetConsoleScreenBuffe
c语言:输出一个菱形图
输出一个菱形图。解:程序:#includeint main(){ int i, j; char diamond[][5] = { {' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{ ' ','*',' ','*' },{ ' ',' ','*' } }; //diamond 菱形,钻石,金刚石 for (i = 0; i { for
梯形图形
#include &amp;lt;stdio.h&amp;gt;int main(int argc, char *argv[]){ int i,j,k; int h,t; int sum; scanf(&quot;%d&quot;,&amp;amp;h); t=5; sum=h+2*(h-1);    for(i=0;i&amp;lt;h;i++){        for(j=0;j&amp;lt;(sum-t);j++){     printf(&quot;...
C语言控制台应用程序GDI绘制正弦曲线
出于本科教学的目的,需要使用C语言在控制台应用程序中动态绘制曲线,在此查阅了一些资料,制作了一个绘制动态正弦曲线的Demo。
C语言:输出菱形图案
       此题的解决思路为:将菱形分为上半部分和下半部分,分别打印。       具体代码如下:#include&amp;lt;stdio.h&amp;gt;nint main()n{n int line;n scanf_s(&quot;%d&quot;, &amp;amp;line);n int i;n for (i = 0; i &amp;lt; line - 1; i++)//打印line行n {n int j = 0;n for (...
递归使用案例:输出对称图形
要求:在控制台下输出如下图形n       1n     121n  12321n1234321nnnn       1n     121n  12321n1234321n  12321n    121n      1nnnn两个图形都是对称的,所以用递归很容易实现,下面贴出代码:nDemotest:nimport java.util.Scanner;npu
利用C语言绘制正弦函数
在已经会利用C语言绘制余弦函数的基础上,我们来进一步探索如何利用C语言绘制正弦函数。rnrnrn问题分析:rn       很自然的,我们想到将acos(y)换成asin(y),不就可以把画余弦函数换成画正弦函数了吗。可是,事实并没有那么简单。首先,0°~360°的正弦函数并不是一个简单的左右对称的图形;其次,反三角函数x=asin(y)的值域为(-π/2,π/2),所以并不能通过简单的求反三角函
简单打印倒三角形(C语言输入函数printf使用)
题目描述:3-1 输出倒三角图案 (10 分)n本题要求编写程序,输出指定的由“*”组成的倒三角图案。n输入格式:n本题目没有输入。n输出格式:n按照下列格式输出由“*”组成的倒三角图案。nn回答代码:n#include&amp;lt;stdio.h&amp;gt;nint main()n{n printf(&quot;* * * *\n * * *\n * *\n *\n&quot;);n return 0;n}...
【c语言】(函数)金字塔图形问题:根据n的个数,输出由字母组成的一个金字塔图形
题目:nn编写一个函数,其函数原型声明为“void draw(int n);”。函数功能是根据n的个数(0&amp;amp;amp;lt;n&amp;amp;amp;lt;14),输出由字母组成的一个金字塔图形,编写主程序,测试该函数。n例如n = 6时,输出结果如下:n_____An____ABCn___ABCDEn__ABCDEFGn_ABCDEFGHInABCDEFGHIJKn(注:_为空格)nn思路分析:nn先设定行数和列数分别为i,j...
C++画数学函数图象
1. vs2008里弄了一个画数学函数的类,基本的函数都可以画,当然复杂的也可以,只是函数本身需要调用者设计,已经变量的范围 2. 最后的图象提供两种方式输出,一个是bmp文件,一个是gif图象,gif需要注意它的256种颜色限制 3. 不需要特别的库,里面的源代码应该能比较容易编译过,可能会在对应的blog里贴一些介绍 4. 我认为用这种代码可以很灵活的制作一些很绚丽的gif图片 5. 希望你们喜欢,或者给我提些改进的建议
c语言之打印输出图形
/*rn rn ********rn ********rn ********rn ********rn rn rn */rn rn //i表示行数rn for (int i=1; i<=4; i++) {rn rn //先输出空格(1行:0个,2行:1个,3行:两个,4行:3个
python打印规则图形的方法
在python中使用for循环语句和if分支结构完成对规则图形的打印,本文以菱形为例,对使用方法进行了总结 n n方法一: n 通过观察,发现菱形为一个左右上下对称的图形,因此,通过控制range()语句的起点和终点的方法对菱形每一行进行打印: n n 其余基于此方法的一些打印方法与此方法基本相同,略过不谈 n方法二: n 可以将整个图形看成一个平面坐标系,内部的‘*’位置由y=...
java控制台打印佛祖保佑图案
main方法里面写上:nnSystem.out.println(&quot; ......................阿弥陀佛......................\n&quot;+n &quot; _oo0oo_ \n&quot;+n &quot;...
打印二叉树的图 打印二叉树形状 打印二叉树路径 控制台打印二叉树 字符环境打印二叉树
/* 这是一个在字符环境中,用ASCII码打印二叉树形状的算法。 在Linux控制台下写的例题,在DOS中稍有点乱。 采用层次遍法。 算法拙劣,仅供初学者做练习,(本人也是初学者,自学数据结构,刚好学到这二叉树这一章, 半路出家,基础差有点吃力头大,搞几个二叉的例题,却不知道其构造形状, 想调用图形API做个美观点的,却有点偏离本章的学习目的,只好用字符打印, linux环境中打印的还可以,DOS中有点不稳定,如果您有更好的算法一定不吝赐教。 我的QQ:137241638 mail:hnflcp@139.com */ #include <stdio.h> #include <stdlib.h> #define MaxSize 100 //Pstart是二叉树根结点在一行中的位置,一行最能打印124个字符,取其1/2。 //如果你的屏不够宽的话,可以输出文本文件里, aa.exe>>aa.txt #define Pstart 40 typedef struct bstnode { int key, data, bf; struct bstnode *lchild, *rchild; }BSTNode; typedef struct pnode //为打印二叉树建了一个结构。 { int key; //关键字数据1 int data; //关键字数据2 struct pnode *lchild, //左孩子 *rchlid, //右孩子 *parent; //父节点 int lrflag, //标记本节点是左孩子(等于0时),还是右孩子(等于1时) space, //存储本节点打印位置 level; //存储本节点所在层次。 }PBSTNode; /*建立二叉树。 用括号表示法表示二叉树字符串,创建二叉树。 */ BSTNode* CreateBSTNode(char *s) { char ch; BSTNode *p=NULL, *b=NULL, *ps[MaxSize]; int top=-1, tag=-1; ch=*s; while(ch) { switch(ch) { case '(':ps[++top]=p;tag=1;break; case ',':tag=2;break; case ')':top--;break; default: p=(BSTNode*)malloc(sizeof(BSTNode)); p->data=ch; p->lchild=p->rchild=NULL; if(b==NULL) b=p; else { switch(tag) { case 1:ps[top]->lchild=p;break; case 2:ps[top]->rchild=p;break; } } } ch=*(++s); } return b; } //用适号表示法打印二叉树。 void DispBSTNode(BSTNode *b) { if(b!=NULL) { printf("%d",b->key); if(b->lchild!=NULL||b->rchild!=NULL) { printf("("); DispBSTNode(b->lchild); if(b->rchild!=NULL)printf(","); DispBSTNode(b->rchild); printf(")"); } } } int BSTNodeHeight(BSTNode *b) { int lchildh,rchildh; if(b==NULL)return 0; else { lchildh=BSTNodeHeight(b->lchild); rchildh=BSTNodeHeight(b->rchild); return (lchildh>rchildh)?(lchildh+1):(rchildh+1); } } /*建立一个二叉树打印结点的信息, 只被int CreatePBSTNode(BSTNode *b,PBSTNode *pqu[])调用*/ void SetPBSTNodeInfo(BSTNode *b,PBSTNode *parent,PBSTNode *pb,int level,int lrflag) { int f=3; pb->data=b->data; pb->key =b->key; pb->parent=parent; pb->level=level; pb->lrflag=lrflag; pb->space=-1; } /*用层次遍历法,BSTNode结构存储的二叉树转换为,PBSTNode结构的二叉树*/ int CreatePBSTNode(BSTNode *b,PBSTNode *pqu[]) { BSTNode *p; BSTNode *qu[MaxSize]; int front=-1, rear=-1; rear++; qu[rear]=b; pqu[rear]=(PBSTNode*)malloc(sizeof(PBSTNode)); SetPBSTNodeInfo(b,NULL,pqu[rear],1,-1); while(rear!=front) { front++; p=qu[front]; if(p->lchild!=NULL) { rear++; qu[rear]=p->lchild; pqu[rear]=(PBSTNode*)malloc(sizeof(PBSTNode)); SetPBSTNodeInfo(p->lchild,pqu[front],pqu[rear],pqu[front]->level+1,0); } if(p->rchild!=NULL) { rear++; qu[rear]=p->rchild; pqu[rear]=(PBSTNode*)malloc(sizeof(PBSTNode)); SetPBSTNodeInfo(p->rchild,pqu[front],pqu[rear],pqu[front]->level+1,1); } } return rear; } //打印一层结点,及该层结点与父结点的连线路径。 void PBSTNodePrint_char(PBSTNode *pb[],int n,int h) { int l=-1, r=0, i,j,k, end; char c; PBSTNode *p; if(n<=0||h<=0) { return; } else if(pb[0]->level==1) { for(i=0;i<pb[0]->space;i++) printf(" "); printf("%c",pb[0]->data); printf("\n"); return; } h=h-pb[0]->level+2; for(k=0;k<h;k++) { j=0; l--; r++; for(i=0;i<n;i++)//打印线条 { p=pb[i]; end=(p->lrflag==0)?l:r; end+=p->parent->space; for(;j<end;j++) printf(" "); c=(p->lrflag==0)?'/':'\\'; printf("%c",c); } printf("\n"); } for(i=0;i<n;i++)//计算本层结点打印位置 { p=pb[i]; if(p->lrflag==0) p->space=p->parent->space+l; else p->space=p->parent->space+r; } for(i=0,j=0;i<n;i++)//打印关键字数据 { p=pb[i]; for(;j<p->space;j++) printf(" "); printf("%c",p->data); } printf("\n"); } //循环打印所有层的数据 void DispBTree(BSTNode *b) { int n,i,j,high, level; PBSTNode *p; PBSTNode *pqu[MaxSize]; PBSTNode *levelpqu[MaxSize]; n=CreatePBSTNode(b,pqu); high=BSTNodeHeight(b); j=0; level=1; pqu[0]->space=Pstart; for(i=0;i<=n;i++) { p=pqu[i]; if(p->level==level) { levelpqu[j]=p; j++; } else { PBSTNodePrint_char(levelpqu,j,high); level=p->level; j=0; levelpqu[j]=p; j++; } } PBSTNodePrint_char(levelpqu,j,high); } void main() { int iDepth=0, iWidth=0, iCount=0; char *str1="A(B(D,E(H,X(J,K(L,M(T,Y))))),C(F,G(X,I)))"; char *str2="A(B(D(,G)),C(E,F))"; BSTNode *b=CreateBSTNode(str1); DispBSTNode(b);printf("\n"); iDepth=BSTNodeHeight(b); printf("Depth:%d\n",iDepth); DispBTree(b); }
文章热词 统计学稳健估计opencv函数 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链用学习什么语言 大数据用需要学习语言