华为机试-8.计算面积(绘图机器的绘图笔初始位置在原点)

该程序实现了一个计算几何问题,根据给定的直线绘制规则和指令,计算由直线和横坐标轴围成的图形面积。输入包括直线指令的数量和横坐标终点值,以及一系列的偏移指令。程序通过遍历指令,动态更新当前纵坐标并累加与横坐标差值的乘积来得到面积。示例输入和输出展示了具体计算过程。
摘要由CSDN通过智能技术生成

[计算面积]

绘图机器的绘图笔初始位i在原点(0.0)。 机器启动后其绘图笔按下面规则绘制直线:

1 )尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E,

2 )期间可通过指令在纵坐标轴方向进行偏移。井同时恰制直线,偏移后按规则1绘制直线;指令的格式为X offsetY。表示在横坐标X沿纵坐标方向偏移, offsetY为正数表示正向偏移,为负数表示负向偏移。

给定了横坐标格点值E.以及若干条检制指令。请计算给制的直线和横坐标轴。以及X-E的直线组成图形的面积。

输入模述:

首行为两个整数NE。表示有N条指令。机器运行的横坐标終点值E.

接下来N行。每行两个整数表示-条给制指令x osorr。用例保证横坐标X以递增排序方式出现。且不会出现相同横坐标义。取值范围:0<N<= 10000, 0<X<= E<=20000, -10000<=offsetY<=10000.

输出描述:

一个整数,表示计算得到的面积。用例保证.结果范围在0-4294967295内

示例1:

输入

4 10

1 1

2 1

3 1

4 -2

输出

12

#include <iostream>

using namespace std;

int main() {
    int N,E,X,offsetY,area,preX=0,curY=0;
    cin>>N>>E;
    for (int i=0; i<N; ++i) {
        cin>>X>>offsetY;
        area += (X-preX)*curY;
        preX = X;
        curY += offsetY;
    }
    area += (E-preX)*curY;
    cout<<area<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值