user-0 提问: 一道初级ACM的题目，求帮助

回复:
user: user-1
content: int main() {     int x = 0;     int y = 0;     char dir = 'N';     char str[101] = {0};     int times = 0;     scanf("%d", ×);     if (times <= 0)     {         return 1;     }     int *px = new int[times];     int *py = new int[times];     char *pdir = new char[times];     int i;     for (i = 0; i < times; i++)     {         x = 0;         y = 0;         dir = 'N';         scanf("%s", str);         get_coord(str, x, y, dir);         *(px + i) = x;         *(py + i) = y;         *(pdir + i) = dir;     };      for (i = 0; i < times; i++)     {         printf("%d %d %c\n", *(px + i), *(py + i), *(pdir + i));     }      delete []px;     delete []py;     delete []pdir;      return 0; }

user: user-2
content: 函数不认识吗。。。

user: user-0
content: 引用 4 楼 michael2988 的回复: #define COUNT 4 char dirs[COUNT] = {'N', 'E', 'S', 'W'};  void get_coord(char *str, int &x, int &y, char &dir) {     x = 0;     y = 0;     dir = dirs[0];     int dir_index = 0;     int size = strlen(str);      int i;     for (i = 0; i < size; i++)     {         if ('L' == str[i])         {             dir_index--;             dir_index  = (dir_index >= COUNT) ? (dir_index % COUNT) : dir_index;             dir_index = (dir_index < 0) ? (dir_index + COUNT) : dir_index;         }         else if ('R' == str[i])         {             dir_index++;             dir_index  = (dir_index >= COUNT) ? (dir_index % COUNT) : dir_index;             dir_index = (dir_index < 0) ? (dir_index + COUNT) : dir_index;         }         else if ('M' == str[i])         {             switch (dirs[dir_index])             {             case 'N':                 y++;                 break;             case 'E':                 x++;                 break;             case 'S':                 y--;                 break;             case 'W':                 x--;                 break;             default:                 break;             }         }     }      dir = dirs[dir_index]; }  这个用的是C++?刚学C语言还不太懂。怎么都没有int main了

user: user-0
content: #include <stdio.h>  int main() {    char input[101]={'\0'},dire='\0',ch;    int x=0,y=0;    int i,n,times;    int j=0;    int op,dir=0;    scanf("%d",×);    for(i=0;i<=times;i++)    {        ch=getchar();        while(ch!='\0')        {            input[j]=ch;            ch=getchar();            j++;        }        for(n=0;n<=j-1;n++)        {            if(input[n]=='L')            {              dir--;            }            else if(input[n]=='R')            {              dir++;            }            else if(input[n]=='M')            {                 if(dir>=0)                 {                     op=dir%4;                     switch(op)                     {                         case 0:                             dire='N';break;                         case 1:                             dire='E';break;                         case 2:                             dire='S';break;                         case 3:                             dire='W';break;                         default:                             break;                     }                 }                 else if(dir<0)                 {                     op=dir&4;                     switch(op)                     {                         case 0:                             dire='N';break;                         case -1:                             dire='W';break;                         case -2:                             dire='S';break;                         case -3:                             dire='E';break;                         default:                             break;                      }                 }                     switch(dire)                     {                         case 'N':                             y++;break;                         case 'S':                             y--;break;                         case 'E':                             x++;break;                         case 'W':                             x--;break;                         default:                             break;                }            }         }        printf("%d %d",x,y);    } }  你们看看我这个哪里不对了，能够运行的

user: user-3
content: struct RobotStatus 	 { 		 int x; 		 int y; 		 int dir_idx; 	 }; 	void robotControl() 	{ 		string sControl; 		cin>>sControl; 		int len = sControl.length(); 		RobotStatus rs; 		rs.x = 0; 		rs.y = 0; 		rs.dir_idx =0; 		char FourDirections[4] = {'N','W','S','E'}; 		for(int i=0;i<len;++i) 		{ 			char chCom = sControl[i]; 			switch (chCom) 			{ 			case 'L': 				rs.dir_idx = (rs.dir_idx+1)%4;  				break; 			case 'R': 				if(rs.dir_idx==0) rs.dir_idx = 3; 				else 					rs.dir_idx = rs.dir_idx-1; 			break; 			case 'M': 				switch (rs.dir_idx) 				{ 				case 0: 					rs.y++; 					break; 				case 1: 					rs.x--; 					break; 				case 2: 					rs.y--; 					break; 				case 3: 					rs.x++; 					break; 				default: 					break; 				} 					break; 			default: 				break; 			} 			 		} 		cout<<"当前机器人的状态是："<<endl; 		cout<<"x: "<<rs.x<<endl; 		cout<<"y: "<<rs.y<<endl; 		cout<<"方向: "<<FourDirections[rs.dir_idx]<<endl; 	}

user: user-4
content: 参考代码链接： http://tieba.baidu.com/p/3350535618

user: user-5
content: 可以建一个双向循环链表表示“转向”

user: user-1
content: #define COUNT 4 char dirs[COUNT] = {'N', 'E', 'S', 'W'};  void get_coord(char *str, int &x, int &y, char &dir) {     x = 0;     y = 0;     dir = dirs[0];     int dir_index = 0;     int size = strlen(str);      int i;     for (i = 0; i < size; i++)     {         if ('L' == str[i])         {             dir_index--;             dir_index  = (dir_index >= COUNT) ? (dir_index % COUNT) : dir_index;             dir_index = (dir_index < 0) ? (dir_index + COUNT) : dir_index;         }         else if ('R' == str[i])         {             dir_index++;             dir_index  = (dir_index >= COUNT) ? (dir_index % COUNT) : dir_index;             dir_index = (dir_index < 0) ? (dir_index + COUNT) : dir_index;         }         else if ('M' == str[i])         {             switch (dirs[dir_index])             {             case 'N':                 y++;                 break;             case 'E':                 x++;                 break;             case 'S':                 y--;                 break;             case 'W':                 x--;                 break;             default:                 break;             }         }     }      dir = dirs[dir_index]; }

user: user-6
content: 引用 2 楼 whm546877424 的回复:[quote=引用 1 楼 user-7 的回复:] 模拟。 你把输入的方向或者前进一格一个一个解析出来，一步一步知道处理完所有的步骤不就行了 对的，这个应该用数组吧，可是不知道怎么弄[/quote] 也可以不用数组吧，你可以用enum direction{北(N),西(W),东(E),南(S)};direction m_dirt 表方向; int X，int Y;表示坐标； switch(m_dirt) {   //在每个北(N),西(W),东(E),南(S)里面分别处理'L','R'字符时设置m_dirt值，'M'字符时根据得到的m_dirt设置int X或int Y加1减1；  //最后得到的不就是了。这不是最容易想的么？ }

user: user-0
content: 引用 1 楼 user-7 的回复:模拟。 你把输入的方向或者前进一格一个一个解析出来，一步一步知道处理完所有的步骤不就行了  对的，这个应该用数组吧，可是不知道怎么弄

user: user-7
content: 模拟。 你把输入的方向或者前进一格一个一个解析出来，一步一步知道处理完所有的步骤不就行了