输出坐标

题目描述

开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

输入:

合法坐标为A(或者D或者W或者S) + 数字(两位以内)

坐标之间以;分隔。

非法坐标点需要进行丢弃。如AA10;  A1A;  $%$;  YAD; 等。

下面是一个简单的例子 如:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

处理过程:

起点(0,0)

+   A10   =  (-10,0)

+   S20   =  (-10,-20)

+   W10  =  (-10,-10)

+   D30  =  (20,-10)

+   x    =  无效

+   A1A   =  无效

+   B10A11   =  无效

+  一个空 不影响

+   A10  =  (10,-10)

结果 (10, -10)

 

注意请处理多组输入输出

输入描述:

一行字符串

输出描述:

最终坐标,以,分隔

示例1

输入

A10;S20;W10;D30;X;A1A;B10A11;;A10;

输出

10,-10

 

JAVA实现

import java.util.Scanner;
 
public class Main 
{
    public static void main(String[] args) 
    {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLine()) 
        {
        	int x=0;
        	int y=0;
        	String[] temp=scanner.nextLine().split(";");
        	for(int i=0;i<temp.length;i++)
        	{
        		try {
        		int a=Integer.parseInt(temp[i].substring(1, temp[i].length()));
        		char dir=temp[i].charAt(0);
        		if(dir=='A')
        		{
        			x-=a;
        		}
        		if(dir=='D')
        		{
        			x+=a;
        		}
        		if(dir=='W')
        		{
        			y+=a;
        		}
        		if(dir=='S')
        		{
        			y-=a;
        		}	
        		}
        		catch(Exception e){
                    continue;
                }
        	}
        	System.out.println(x+","+y);
        }
        
    }
             
}

Python实现

1.

import sys
for line in sys.stdin:
    x,y=0,0
    for temp in line.split(';'):
        try:
            a = int(temp[1:])
            if temp[0] == "A":
                x -= a
            if temp[0] == "D":
                x += a
            if temp[0] == "W":
                y += a
            if temp[0] == "S":
                y -= a
        except:
            pass
    print("%d,%d"%(x,y))

2.

import sys
dx = [-1, 0, 0, 1]
dy = [0, -1, 1, 0]
for line in sys.stdin:
    x,y=0,0
    for cmd in line.split(';'):
        cmd = cmd.strip()
        if cmd and cmd[0] in 'ASWD':
            try:
                n=int(cmd[1:])
                x+=n*dx['ASWD'.find(cmd[0])]
                y+=n*dy['ASWD'.find(cmd[0])]
                #print cmd, n, x, y
            except:
                pass
    print "%d,%d"%(x,y)

 

C++实现

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
	string input;
	while (cin >> input)
	{
		int x = 0, y = 0;
		vector<string> ve;
		int len = 0;
		for (int i = 0; i < input.length(); ++i)
		{
			if (input[i] != ';')
			{
				len++;
				continue;
			}
			ve.push_back(input.substr(i - len, len));
			len = 0;
		}
		for (int i = 0; i < ve.size(); i++)
		{
			int num = 0;
			if (ve[i].length() == 3 && ve[i][1] >= '0'&&ve[i][1] <= '9'&&ve[i][2] >= '0'&&ve[i][2] <= '9')
				num = (ve[i][1] - '0') * 10 + (ve[i][2] - '0');

			if (ve[i].length() == 2 && ve[i][1] <= '9'&&ve[i][1] >= '0')
				num = (ve[i][1] - '0');

			if (ve[i].length() == 1)
				num = 0;

			switch (ve[i][0])
			{
			case 'A': x -= num; break;
			case 'D': x += num; break;
			case 'S': y -= num; break;
			case 'W': y += num; break;
			default:break;
			}
		}
		cout << x << "," << y << endl;
	}
	return 0;
}




 

### Altium Designer 21 导出坐标文件格式和设置 在Altium Designer 21中,导出坐标文件(Pick and Place Files)的过程相对简单,但需要明确一些关键设置以确保输出的文件符合要求。以下是详细的设置步骤和注意事项: #### 1. 打开PCB文件并进入装配输出选项 在PCB编辑器界面中,通过菜单栏选择 **File(文件)** > **Assembly Outputs(装配输出)** > **Generate Pick and Place Files**[^3]。 #### 2. 配置输出参数 在弹出的对话框中,进行以下设置: - **取消勾选Description**:避免输出不必要的描述信息。 - **单位选择**:可以选择英制(Inch)或公制(Millimeter),具体取决于制造商的要求。 - **格式选择**:推荐使用CSV格式(兼容Excel文件),便于后续处理和查看。 - 点击 **OK** 完成设置并生成文件。 #### 3. 查找生成的文件 生成的文件会保存在项目的输出文件夹中,路径为 **Project Outputs for XXXXXX**。文件名通常为 **Pick Place for XXXXX.csv**,其中XXXXX是PCB文件的名称。 #### 4. 文件内容说明 生成的CSV文件包含以下关键字段: - **Designator**:元件的参考标识符。 - **Layer**:元件所在的层(顶层或底层)。 - **Mid X, Mid Y**:元件中心点的X和Y坐标。 - **Rotation**:元件的旋转角度。 - **Top/Bottom**:元件是否位于顶层或底层。 #### 示例代码块:生成CSV文件的命令 ```plaintext File > Assembly Outputs > Generate Pick and Place Files ``` --- ### 注意事项 - 如果制造商有特定的文件格式要求,请在导出前确认其模板或规范[^3]。 - 在生成文件之前,确保PCB设计已完成所有必要的调整(如元件位置、旋转角度等)[^3]。 - 如果需要自定义输出格式,可以通过 **Output Job Configuration** 文件进行详细配置[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想去的远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值