Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсия и итерация 
:(
    Опции темы
A.A.K.
Дата 10.12.2005, 21:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите найти ошибку. Программа не хочет работать:

Код

#include<iostream.h>
#include<conio.h>
#include<cstdlib.h>

int arr[8][8], row[64], col[64];
int ktmov1[8] = { -2, -1, 1, 2, 2, 1, -1, -2 };
int ktmov2[8] = { 1, 2, 2, 1, -1, -2, -2, -1 };

int i, j, move_num, d; 
      
 int main() 
{
 int addknight( );
}
      
  int addknight( )  
{
   int a, b, e; 
          
 
  arr[i][j] = 1;
  row[move_num] = i;
  col[move_num] = j;
  move_num++;
         
  for ( a = 0 ; a <= 7 ; a++ ) {
   
    if ( move_num >= 64 ) {
     int writeboard( ); 
      exit ( 0 );
    }
              
   
    b = i + ktmov1[a];
    e = j + ktmov2[a];
              
    if ( b < 0 || b > 7 || e < 0 || e > 7 )
      continue; 

   
    if ( arr[b][e] == 1 )
      continue; 
     i = b; j = e;
    addknight();
  } 
         
  move_num-- ;
      
 
  arr[row[move_num]][col[move_num]] = 0;
  move_num--;   
  i = row[move_num]; j = col[move_num];
  move_num++; 
}
      
void main( ) 
{
  int a;
          
  clrscr( );
  gotoxy ( 1, 10 );
  cout<<  "Hit any key for next move " ;
  gotoxy ( 1, 11 );
  for ( a = 0 ; a <= 63 ; a++ ) 
  {
    if ( a % 8 == 0 )
      cout<< "\n" ;
    cout<<"#";
  }
  for ( a = 0 ; a==63 ; a++ )
  {
    gotoxy ( col[a] * 3 + 1, 12 + row[a] );
    cout<< "%3d", a + 1;
    getch( );
  }
}


 ! 
 
Используем теги [code=cpp][/code].

  Вверх
LPBOY
Дата 10.12.2005, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Под какой компилятор нужно чтобы работала?

Если под Borland C++ 3.1 или Turbo C++, тогда так
Код

#include <stdlib.h>
#include <conio.h>
#include <stdio.h>

int arr[8][8], row[64], col[64];
int ktmov1[8] = { -2, -1, 1, 2, 2, 1, -1, -2 };
int ktmov2[8] = { 1, 2, 2, 1, -1, -2, -2, -1 };

int i, j, move_num, d;

void addknight();
void writeboard();

int main() {
  addknight( );
  return 0;
}

void addknight( )  {
  register int a, b, e;

 /* пометить клетку как посещенную и запомнить координаты клетки */
  arr[i][j] = 1;
  row[move_num] = i;
  col[move_num] = j;
  move_num++;

 /* проверить 8 возможных перемещений коня */
  for ( a = 0 ; a <= 7 ; a++ ) {
   /* если все ходы сделаны, печатаем их */
    if ( move_num >= 64 ) {
      writeboard( );
      exit ( 0 );
    }

   /* определяем колонку и строку для следующего хода */
    b = i + ktmov1[a];
    e = j + ktmov2[a];

   /* проверяем, что после выполенения хода конь остается на шахматной доске */
    if ( b < 0 || b > 7 || e < 0 || e > 7 )
      continue;

   /* проверяем, были ли мы уже в этой клетке */
    if ( arr[b][e] == 1 )
      continue;
     i = b; j = e;
    addknight();
  }

 /* уменьшить счетчик ходов и попробовать сделать следующий ход */
  move_num-- ;

 /* освобождаем клетку, ранее занятую конем */
  arr[row[move_num]][col[move_num]] = 0;
  move_num--;  /* пробуем сделать следующий ход */
  i = row[move_num]; j = col[move_num];
  move_num++;
}

void writeboard( ) {
  int a;

  clrscr( );
  gotoxy ( 1, 10 );
  printf ( "Hit any key for next move " );
  gotoxy ( 1, 11 );
  for ( a = 0 ; a <= 63 ; a++ ) {
    if ( a % 8 == 0 )
      printf ( "\n" );
    printf ( "#" );
  }
  for ( a = 0 ; a <= 63 ; a++ ) {
    gotoxy ( col[a] * 3 + 1, 12 + row[a] );
    printf ( "%3d", a + 1 );
    getch( );
  }
}


Это сообщение отредактировал(а) LPBOY - 10.12.2005, 21:45
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.