Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2011, 12:20   #1
darst
 
Регистрация: 18.01.2011
Сообщений: 3
Стрелка Ход конем на Turbo C

Всем здрасти!!! Есть такое вот задание:
Написать программу, позволяющую определить все поля, находящиеся под ударом коня, установленного на выбранную клетку, например, вводим d2:
a b с d e f g h
1 0 * 0 0 0 * 0 0
2 0 0 0 k 0 0 0 0
3 0 * 0 0 0 * 0 0
4 0 0 * 0 * 0 0 0
5 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0


Есть даже код этого задания:
Код:
#include <stdio.h>
#include <conio.h>
main()
{
 int x,y,i,j;
 char inp[32],d[8][8];
 clrscr();
 printf("\nVvedite poziciyu: ");
 scanf("%s",inp);
 strlwr(inp);
 x=inp[1]-'1';
 y=inp[0]-'a';
 if (x<0 || x>8 || y<0 || y>8)
  {
   printf("\nOshibka vvoda dannih");
   getche();
   return 1;
  }
 else
   {
     x=x++;
     printf(" abcdefgh");
     for (i=1;i<8;i++)
     {
      printf("\n%d",i);
      for (j=0;j<8;j++)
       {
         if (i==x & j==y)
         {
           d[i][j]='k';
           printf("%c",d[i][j]);
          }
         else
            if ((i==x+1 & j==y+2) || (i==x+2 & j==y+1) || (i==x-1 & j==y+2) || (i==x-2 & j==y+1) || (i==x+1 & j==y-2) || (i==x+2 & j==y-1) || (i==x-1 & j==y-2) || (i==x-2 & j==y-1))
             {
               d[i][j]='x';
               printf("%c",d[i][j]);
             }
           else
              {
                d[i][j]='o';
                printf("%c",d[i][j]);
              }
       }
     }
   }
getche();
}
Только в этом коде у меня есть ошибка, с которой я не могу разобраться.
Выяснил, что при вводе данных не провряет на ошибки (почему так и не понял ), так же если ввести, например g8 он выдет не совсем ожилаемый результат. Вот в этом собственно и надо помочь разобраться.
darst вне форума Ответить с цитированием
Старый 18.01.2011, 19:59   #2
darst
 
Регистрация: 18.01.2011
Сообщений: 3
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
main()
{
 int x,y,i,j;
 char inp[32],d[8][8],ch;
 clrscr();
 printf("\nVvedite poziciyu: ");
 scanf("%s",inp);
 strlwr(inp);
 x=inp[1]-'1';
 y=inp[0]-'a';
 x=x++;
 y=y++;
 ch='a';
 if ((x>0 && x<9) || (y>0 && y<9));
  {
   printf("\nOshibka vvoda dannih");
   getche();
   return 1;
  }
 else
 {
 for (i=0;i<=8;i++)
  for (j=0;j<=8;j++)
    {
     if (i==0)
       {
	if (i==0 & j==0) printf(" ");
	 else
	  {
	   printf("%c",ch);
	   ch++;
	  }
       }
      else
       {
	if (j==0) printf("\n%d",i);
	 else
	  {
	   if (i==x & j==y)
	    {
             d[i][j]='k';
	     printf("%c",d[i][j]);
     	    }
	   else
	     if ((i==x+1 & j==y+2) || (i==x+2 & j==y+1) || (i==x-1 & j==y+2) || (i==x-2 & j==y+1) || (i==x+1 & j==y-2) || (i==x+2 & j==y-1) || (i==x-1 & j==y-2) || (i==x-2 & j==y-1))
	       {
	        d[i][j]='x';
	        printf("%c",d[i][j]);
	       }
	      else
		{
		 d[i][j]='o';
		 printf("%c",d[i][j]);
		}
	  }
       }
    }
  }
getche();
}
Вот переделал немного программу в более рабочий вариант, только по завершении выполнения она выпадает в ошибку. Чем она модет быть вызвана?
darst вне форума Ответить с цитированием
Старый 18.01.2011, 20:37   #3
darst
 
Регистрация: 18.01.2011
Сообщений: 3
По умолчанию

ВОТ ОКОНЧАТЕЛЬНО ПРАВЕЛЬНЫЙ (РАБОЧИЙ) ВАРИАНТ:
Код:
#include <stdio.h>
#include <conio.h>
main()
{
 int x,y,i,j;
 char inp[32],d[8][8],ch;
 clrscr();
 printf("\nVvedite poziciyu: ");
 scanf("%s",inp);
 strlwr(inp);
 x=inp[1]-'1';
 y=inp[0]-'a';
 x=x++;
 y=y++;
 ch='a';
 if ((x>0 && x<9) || (y>0 && y<9))
   {
    for (i=0;i<=8;i++)
     for (j=0;j<=8;j++)
       {
        if (i==0)
          {
           if (i==0 & j==0) printf(" ");
	    else
	       {
		printf("%c",ch);
		ch++;
	       }
           }
          else
            {
	     if (j==0) printf("\n%d",i);
	      else
		{
		 if (i==x & j==y)
		   {
		    d[i][j]='k';
		    printf("%c",d[i][j]);
		   }
		  else
		   if ((i==x+1 & j==y+2) || (i==x+2 & j==y+1) || (i==x-1 & j==y+2) || (i==x-2 & j==y+1) || (i==x+1 & j==y-2) || (i==x+2 & j==y-1) || (i==x-1 & j==y-2) || (i==x-2 & j==y-1))
		     {
		      d[i][j]='x';
		      printf("%c",d[i][j]);
		     }
		    else
		      {
		       d[i][j]='o';
		       printf("%c",d[i][j]);
		      }
		}
	     }
	}
    }
  else
     {
      printf("\nOshibka vvoda dannih");
      getche();
      return 1;
     } 
getche();
}
darst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача"Ход конем" станислав16 Общие вопросы C/C++ 13 25.11.2018 15:58
Ход конем Etlau Помощь студентам 3 28.05.2010 19:16
Ход конем на Си Ekатерина Помощь студентам 2 02.05.2010 15:41
ход конем Zuuu92 Паскаль, Turbo Pascal, PascalABC.NET 1 29.04.2010 22:16
Методы решения задач типа: ход конем Levsha100 Свободное общение 14 01.10.2009 19:33