C++ 趣图

2024-01-05 14:21
文章标签 c++ 趣图

本文主要是介绍C++ 趣图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、心形

1、

 http://mathworld.wolfram.com/HeartCurve.html

#include<stdio.h>
using namespace std;
int main()
{for (float y=1.5;y>-1.5;y-=0.1) //行 {for(float x=-1.5;x<1.5;x+=0.05) //列 {float a=x*x+y*y-1;putchar(a*a*a-x*x*y*y*y<=0.0?'*':' ');}putchar('\n');}
} 

对上面第二个公式的画图。

2、字符下标输出

#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int main()
{for (float f=-1.0;f<=1.0;f+=0.1){cout<<f<<" "<<".:-=+*#%@"[(int)(abs(f)*8)]<<endl;}
} 

".:-=+*#%@"这个当成一个字符串,利用下标输出即可
3、
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{system("mode con cols=500 ");//更改输出界面的宽度for (float y=1.5f;y>-1.5f;y-=0.1f){for(float x=-1.5f;x<1.5f;x+=0.05f){float a=x*x+y*y-1;float f= a*a*a-x*x*y*y*y;putchar(f<=0.0?".:-=+*#%@"[(int)(f*-8)]:' ');}putchar('\n');}
} 

利用下标对其输出进行变换

二、文件读写

1、

#include<iostream>
#include<stdio.h>
#include <fstream>
using namespace std;
int main()
{ofstream fout("C:/Users/Administrator/Desktop/output.txt");int num = 150;char name[] = "John Doe";fout << "Here is a number " << num << "\n";fout << "Now here is a string: " << name << "\n";fout << flush; fout.close();
} 

三、

#include <math.h>
#include <stdio.h>
#define T double //双精度 T f(T x, T y) 
{return sqrt(x * x + y * y) - 0.8;//半径0.8 的圆 
}char outline(T x, T y) 
{T delta = 0.001;if (fabs(f(x, y)) < 0.05) //0.8圆外又加了0.1宽度外框圆环 {T dx = f(x + delta, y) - f(x - delta, y);T dy = f(x, y + delta) - f(x, y - delta);//求梯度 (斜率)return "|/=\\|/=\\|"[(int)((atan2(dy, dx) / 6.2831853072 + 0.5) * 8 + 0.5)];//将斜率与值对应 }else if (f(x, y) < 0) //圆内输出. return '.';else //圆外 不输出 内容 return ' ';
}int main() {for (T y = -1; y < 1; y += 0.05)for (T x = -1; x < 1; x += 0.025)putchar(outline(x, y));putchar('\n');
}

 四、

#include<iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
using namespace std;
#define T doubleT c(T x,T y,T r){return sqrt(x*x+y*y)-r;} //圆 T u(T x,T y,T t){return x*cos(t)+y*sin(t);}
T v(T x,T y,T t){return y*cos(t)-x*sin(t);}T fa(T x,T y){return fmin(c(x,y,0.5),c(x*0.47+0.15,y+0.25,0.3));}//T no(T x,T y){return c(x*1.2+0.97,y+0.25,0.2);}T nh(T x,T y){return fmin(c(x+0.9,y+0.25,0.03),c(x+0.75,y+0.25,0.03));}T ea(T x,T y){return fmin(c(x*1.7+0.3,y+0.7,0.15),c(u(x,y,0.25)*1.7,v(x,y,0.25)+0.65,0.15));}
T ey(T x,T y){return fmin(c(x+0.4,y+0.35,0.1),c(x+0.15,y+0.35,0.1));}
T pu(T x,T y){return fmin(c(x+0.38,y+0.33,0.03),c(x+0.13,y+0.33,0.03));}
T fr(T x,T y){return c(x*1.1-0.3,y+0.1,0.15);}
T mo(T x,T y){return fmax(c(x+0.15,y-0.05,0.2),-c(x+0.15,y,0.25));}
T o(T x,T y,T(*f)(T,T),T i){T r=f(x,y);return fabs(r)<0.02?(atan2(f(x,y+1e-3)-r,f(x+1e-3,y)-r)+0.3)*1.273+6.5:r<0?i:0;}
T s(T x,T y,T(*f)(T,T),T i){return f(x,y)<0?i:0;}T f(T x,T y){return o(x,y,no,1)?fmax(o(x,y,no,1),s(x,y,nh,12)):fmax(o(x,y,fa,1),fmax(o(x,y,ey,11),fmax(o(x,y,ea,1),fmax(o(x,y,mo,1),fmax(s(x,y,fr,13),s(x,y,pu,12))))));}int main(int a,char**b)
{ofstream fout("C:/Users/Administrator/Desktop/output.txt");for(T y=-1,s=a>1?strtod(b[1],0):1;y<0.6;y+=0.05/s)//:1倍数{for(T x=-1;x<0.6;x+=0.025/s){putchar(" .|/=\\|/=\\| @!"[(int)f(u(x,y,0.3),v(x,y,0.3))]);fout<<" .|/=\\|/=\\| @!"[(int)f(u(x,y,0.3),v(x,y,0.3))];}fout<<"\n";//换行}fout << flush; fout.close();
}

1倍

3倍

4倍

 

 

 

 

 

  

  

 

  

  

  

  

 

转载于:https://www.cnblogs.com/ruo-li-suo-yi/p/9115444.html

这篇关于C++ 趣图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/573165

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u

C++11中的包装器实战案例

《C++11中的包装器实战案例》本文给大家介绍C++11中的包装器实战案例,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录引言1.std::function1.1.什么是std::function1.2.核心用法1.2.1.包装普通函数1.2.

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

C++ 多态性实战之何时使用 virtual 和 override的问题解析

《C++多态性实战之何时使用virtual和override的问题解析》在面向对象编程中,多态是一个核心概念,很多开发者在遇到override编译错误时,不清楚是否需要将基类函数声明为virt... 目录C++ 多态性实战:何时使用 virtual 和 override?引言问题场景判断是否需要多态的三个关

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf