Zadatak:Robot

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;
}

Komentariši