acm.2

 

#include <iostream>
#include <iomanip>
using namespace std;

class Complex
{
public:
Complex():real(0),imag(0) {}
Complex(double r,double i):real(r),imag(i) {}
Complex operator+(Complex &);
Complex operator+(double &);
friend Complex operator+(double&,Complex &);
friend ostream& operator << (ostream& output, const Complex& c);
private:
double real;
double imag;
};

//将程序需要的其他成份写在下面,只提交begin到end部分的代码
//******************** begin ********************
Complex Complex::operator+(Complex &c1)
{
    Complex c;
    c.real=real+c1.real;
    c.imag=imag+c1.imag;
    return c;
}
Complex Complex::operator+(double &i)
{
    Complex c;
    c.real=real+i;
    c.imag=imag;
    return c;
}
Complex operator+(double &i,Complex &c1)
{
    Complex c;
    c.real=c1.real+i;
    c.imag=c1.imag;
    return c;
}
ostream& operator << (ostream& output, const Complex& c)
{
    output<<"("<<setiosflags(ios::fixed)<<setprecision(2)<<c.real<<"+"<<setiosflags(ios::fixed)<<setprecision(2)<<c.imag<<"i)"<<endl;
    return output;
}
//********************* end ********************
int main()
{
//测试复数加复数
double real,imag;
cin>>real>>imag;
Complex c1(real,imag);
cin>>real>>imag;
Complex c2(real,imag);
Complex c3=c1+c2;
cout<<"c1+c2=";
cout<<c3;

//测试复数加实数
double d;
cin>>real>>imag;
cin>>d;
c3=Complex(real,imag)+d;
cout<<"c1+d=";
cout<<c3;

//测试实数加复数
cin>>d;
cin>>real>>imag;
c1=Complex(real,imag);
c3=d+c1;
cout<<"d+c1=";
cout<<c3;

return 0;
}

03-13
<think>好的,用户想了解acm.jar,我需要先回忆一下相关的信息。首先,acm.jar应该和斯坦福的ACM编程库有关。这个库是为Java教学设计的,简化了图形和界面编程,适合初学者。 接下来,用户可能需要知道它的背景,比如由埃里克·罗伯茨开发,用于CS106A课程。然后要介绍它的主要功能,比如图形绘制、事件处理、控制台输入输出等,并举一些例子,比如GWindow、GRect这些类。 还要提到优点,比如上手容易,适合教学。但也要说明缺点,比如不适用于实际项目,性能可能不够,以及现在可能已经过时,被其他库取代。 用户可能想知道现在的情况,是否需要学习它,或者是否有替代品。所以需要建议部分,说明如果是学习旧课程或教学可以用,但新项目建议用JavaFX或Swing。 要确保回答结构清晰,分点说明,并且使用正确的中文表达。同时注意使用LaTeX格式的公式,但这里可能用不上太多,除非涉及到数学例子。不过根据系统指令,如果有变量或方程的话要用$...$,比如在举例绘图坐标时可能需要,比如坐标点$(x, y)$之类的。 需要检查是否有术语错误,比如包名、类名是否正确,比如acm.program和acm.graphics这些包的结构。另外,确认是否有常见的类或方法需要提及,比如GraphicsProgram作为基类,run()方法等。 可能还需要提到使用方式,比如在IDE中如何导入acm.jar,但用户没有具体问安装步骤,所以简要带过即可。重点还是功能和适用场景。 最后,总结acm.jar的现状,帮助用户判断是否适合他们的需求,给出合理的建议。确保回答准确,没有误导信息,特别是关于过时和替代库的部分,要明确说明。</think>acm.jar 是斯坦福大学开发的Java编程教学库,全称为"ACM Java Task Force Library"。它主要用于简化编程教学中的图形界面和基础算法实现,尤其与经典教材《Java语言的科学与艺术》(Karel the Robot Learns Java)密切相关。以下是分步介绍: 1. **背景与用途** - 由计算机科学家Eric Roberts主导开发,专为CS106A课程设计 - 封装了图形、事件处理等复杂操作,使学生能快速实现可视化程序 - 常用于教学:$n$皇后问题、动画演示、简单游戏开发等场景 2. **核心功能包** ```java acm.program // 程序基类(如ConsoleProgram, GraphicsProgram) acm.graphics // 图形组件(GRect, GOval, GLine等) acm.util // 工具类(随机数、错误处理) ``` 3. **典型代码结构** ```java public class Demo extends GraphicsProgram { public void run() { GOval circle = new GOval(50, 50, 100, 100); add(circle); // 在$(0,0)$坐标系中添加图形 } } ``` 4. **优势与局限** ✓ 优势: - 隐藏Swing/AWT复杂性 - 内置控制台输入输出 - 坐标系自动管理 ✗ 局限: - 性能较低(每秒约30帧) - 不支持现代UI特性 - 2014年后停止更新 5. **现状与替代方案** - 当前Java教学更多转向: - JavaFX(支持3D图形) - Processing(创意编程) - IntelliJ原生控制台 建议:如果学习遗留课程代码需使用acm.jar,新项目建议采用JavaFX等现代框架。库文件可通过斯坦福官网archive页面获取,需注意JDK8+环境可能存在兼容性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值