#include <stdio.h>
#define ENDSEQ 'F' #define BOARD_SIZE 8
typedef enum {FALSE, TRUE} bool; /*definim el tipus boolea*/
void queenMov(int *row,int *column, char direction, int displacement); void rookMov(int *row,int *column, char direction, int displacement);
int main(void) {
int row, column; int displacement; char movement, direction; bool correct; char temp; int sign; char result;
scanf("%c", &temp); row=(int)temp-'0'; scanf("%c", &temp); column=(int)temp-'0'; scanf("%c", &movement); correct=TRUE; while(correct && movement!=ENDSEQ){ scanf("%c", &direction); scanf("%c", &temp); sign=1;
if(temp=='-'){ scanf("%c", &temp); sign=-1; }
displacement=(int)(temp-'0')*sign; if(movement=='q'){ queenMov(&row, &column,direction,displacement); } if(movement=='r'){ rookMov(&row, &column, direction, displacement); }
if(row>BOARD_SIZE || column>BOARD_SIZE || row<1 || column<1){ correct=FALSE; } scanf("%c", &movement); } if(!correct){ while(movement!=ENDSEQ){ scanf("%c", &movement); } } if(correct){ result='C'; } else{ result='U'; } fprintf(stderr, "El valor de result és %c\n", result); return result; } void queenMov(int *row,int *column, char direction, int displacement){ if(direction=='u'){ *row=*row+displacement; if(displacement>0){ *column=*column+displacement; } else{ *column=*column+((-1)*displacement); } } else { *row=*row+displacement; if(displacement<0){ *column=*column+displacement; } else { *column=*column+((-1)*displacement); } } } void rookMov(int *row,int *column, char direction, int displacement){ if(direction=='v'){ *column=*column+displacement; } else{ *row=*row+displacement; } }
|