递归字符串C++编程(1)
2016-02-17 14:56
197 查看
问题描述
最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。
不妨设
An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)
Sn=(...(A1+n)A2+n-1)A3+...+2)An+1
FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。
输入格式
仅有一个数:N<201。
输出格式
请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1
c++ Code:
Results:
最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。
不妨设
An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)
Sn=(...(A1+n)A2+n-1)A3+...+2)An+1
FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。
输入格式
仅有一个数:N<201。
输出格式
请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1
c++ Code:
#include<iostream> #include <sstream> #include<stdlib.h> #include<string> #include<math.h> using namespace std; string num2str(double i) { stringstream ss; ss<<i; return ss.str(); } string A(int n) { string q; if (n==1) { return "sin(1)"; } else { q=A(n-1); return q.substr(0,q.length()-(n-1))+((n%2)?"+":"-")+"sin("+num2str(n)+")"+q.substr(q.length()-(n-1)); } } string S(int n,bool isnumerical) { string q=(isnumerical?A(1):"A1")+"+"+num2str(n); int i; for (i=n-1;i>=1;i--) { q="("+q+")"+(isnumerical?A(n-i+1):("A"+num2str(n-i+1)))+"+"+num2str(i); } return q; } int string2int(string str) { return (int)atof(str.c_str()); } int str2num(string s) { int num; stringstream ss(s); ss>>num; return num; } int main() { int N; cin>>N; cout<<"N="<<N<<endl; cout<<"A(N)="<<A(N)<<endl; cout<<"S(N)="<<S(N,false)<<endl; cout<<"S(N)="<<S(N,true)<<endl; return 0; }
Results:
相关文章推荐
- UVa 10474 Where is the Marble?
- 合并石子c++
- leetcode刷题系列C++-Longest Consecutive Sequence
- c++ vector赋值
- C++中的异常操作:throw&try&catch
- c++内存分配
- C++结构(structure)详解
- C语言enum枚举类型解析
- c++ char 运算
- C语言中extern的用法
- hadoop2.7伪分布式模式运行C++程序
- C++ cin.getline()函数的使用
- 线性表详解(c语言版)
- python是c语言开发的
- noip1999导弹拦截c++语言
- C/C++ 中的64位长整型
- 初学C语言常识
- 一些重要的C和C++开发框架和开源工具
- SkylineGlobe MFC C++ 开发示例代码
- C++纯虚函数