Kompanija za izradu igračaka je počela da pravi novu vrstu robota. On umije da pjeva, govori, plače, rješava domaće zadatke i još dosta zanimljivih stvari. Svakako, jedna od najbitnijih karakteristika ovog robota je kretanje. Robot može da se kreće unaprijed ili da se okrene oko svoje ose za 90°. Zbog bolje orijentacije u prostoru, robotu je neophodno da uvijek zna svoje koordinate. Kao članu projektnog tima koji se bavi softverom, dobili ste zadatak da na osnovu kretanja i okretanja robota odredite njegove koordinate.
Ulaz:
U prvom redu dati su prirodni brojevi N, X i Y, tako da važi 1 ≤ N, X, Y ≤ 1000. N je broj komandi koje izvršava robot, a X i Y su početne koordinate robota u metrima. U drugom redu se nalazi N slova, od kojih je svaki jedno od tri slova: “D”, “L” ili “N” (velikim slovima). “D” označava okretanje za 90° u smjeru kazaljki na satu, “L” u smjeru suprotnom od smjera kazaljki, dok “N” predstavlja kretanje unaprijed. Dužina jednog robotovog koraka je 1 metar. Robot je u početku okrenut tako da gleda u pozitivnom smjeru x-ose.
Izlaz:
U prvom i jedinom redu izlazne datoteke treba ispisati dva cela broja, X i Y, razdvojena razmakom, koji predstavljaju konačnu poziciju robota.
Primer:
ZAD1.DAT | ZAD1.RES | |
---|---|---|
6 2 2 NNNLNN |
5 4 |
#include "stdafx.h" #include <iostream> #include <cstdlib> #include <fstream> #include <cstring> #include <cmath> #include <algorithm> using namespace std; void Naredbe(char naredbe[],int n,int &i,int &j) { int Polozaj=1,X=i,Y=j; string rjesenje; for(int k=0;k<n;k++) { if(naredbe[k]=='S') break; if(naredbe[k]=='N') { if(Polozaj==1) { X=X+1; } else if(Polozaj==2) { Y=Y-1; } else if(Polozaj==3) { X=X-1; } else if(Polozaj==4) { Y=Y+1; } } else if(naredbe[k]=='L') { if(Polozaj==1) {Polozaj=4; } else Polozaj--; } else if(naredbe[k]=='D') {if(Polozaj==4) {Polozaj=1; } else Polozaj++; } } i=X; j=Y; } void Pretvaranje_u_broj(char sadrzaj[],int niz[]) { string st = string(sadrzaj); string str; int l = 0; for (int i = 0; i<st.length(); i++) { if (st[i] == ' ') { niz[l] = atoi(str.c_str()); l++; str = ""; continue; } else if (i == st.length() - 1) { str += st[i]; niz[l] = atoi(str.c_str()); l++; str = ""; } else str += st[i]; } } int main() { char sadrzaj[1000]; int broj[3],a=0,brojac=0; ifstream file; file.open("robot.txt"); file.getline(sadrzaj,100000); Pretvaranje_u_broj(sadrzaj,broj); int n = broj[0]; int x=broj[1]; int y=broj[2]; for(int i=0;i<1000;i++) { sadrzaj[i]='S'; } file.getline(sadrzaj,1000); Naredbe(sadrzaj,n,x,y); cout<<x<<" "<<y<<endl; system("pause"); return 0; }