Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Andrew2012
0 / 0 / 2
Регистрация: 02.07.2011
Сообщений: 3
#1

шахматная доска - C++

13.02.2012, 04:26. Просмотров 1155. Ответов 1
Метки нет (Все метки)

Здравствуйте!
Есть задача: дана шахматная доска размером NxN, нужно расставить N ферзей таким образом, чтобы они не атаковали друг друга.
Нашёл код, но при при компиляции выдаёт ошибку: fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory Error executing cl.exe. (фатальная ошибка C1083: не может открыться включенный файл: ''stdafx.h'').
Подскажите пожалуйста, как это можно исправить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include "stdafx.h"
#include <iostream>
using namespace std;
void Initialization(int n, int ***x);
void Destruction(int n, int **x);
bool Queen(int n, int **x);
void Placement(int n, int **a, int *p, int *h, int *du, 
               int *dd, int i=0, int j=0);
 
int _tmain(int argc, _TCHAR* argv[]){
  int n, i, j;
  bool otv;
  int **mas;
  printf("Ââåäèòå Г°Г*çìåð ГёГ*õìГ*ГІГ*îé äîñêè n : ");
  scanf ("%d",&n);
  Initialization(n,&mas);
  otv = Queen(n,mas);
  if ( otv ) printf("ГЏГ°Г*âèëüГ*îå Г°Г*çìåùåГ*ГЁГҐ Г*Г*éäåГ*Г®\n");
  else printf("ГЏГ°Г*âèëüГ*îãî Г°Г*çìåùåГ*ГЁГї Г*ГҐ Г*Г*éäåГ*Г®\n");
  Destruction(n,mas);
  system("pause");
  return 0;
}
 
//ГЁГ*èöèГ*ëèçГ*öèÿ ïîëÿ ГёГ*õìГ*ГІГ*îé äîñêè
void Initialization(int n, int ***x){ 
  *x = new int*[n]; 
  for (int i = 0 ; i < n; i++ ){
    (*x)[i] = new int[n];
    for (int j = 0 ; j < n ; j++ )
      (*x)[i][j] = 0;
  }
} 
 
//âûâîä Г*Г*éäåГ*Г*îé Г°Г*Г±Г±ГІГ*Г*îâêè Гў ГґГ*éë
void Destruction(int n, int **x){ 
  FILE *f;
  if( ( f = fopen("out.txt","w") ) == NULL ){
    printf("Г”Г*éë out.txt Г*ГҐ ìîæåò áûòü îòêðûò äëÿ Г§Г*ГЇГЁГ±ГЁ");
  }
    else{
      fprintf(f,"%d\n",n);
      for (int i = 0 ; i < n; i++ ){
        for (int j = 0 ; j < n ; j++ )
          fprintf(f,"%2d",x[i][j]);
        fprintf(f,"\n");
      }
    }
  for (int i = 0 ; i < n; i++ )
    delete [] x[i];
  delete [] x;
} 
 
//ïðîâåðêГ* âîçìîæГ*îñòè ïîñòГ*Г*îâêè ôåðçÿ
bool Queen(int n, int **x){
  bool rez = false;
  int *p, *h, *du, *dd;
  p = new int[n];
  h = new int[n];
  du = new int[2 * n - 1];
  dd = new int[2 * n - 1];
  for ( int i = 0 ; i < n ; i++ )
    p[i] = h[i] = 0;
  for ( int i = 0 ; i < (2 * n - 1) ; i++ )
    du[i] = dd[i] = 0;
  Placement(n,x,p,h,du,dd);
  if ( h[0] != 0 ) rez = true;
  delete [] dd, du, h, p;
  return rez;
}
 
//îïèñГ*Г*ГЁГҐ ГґГіГ*êöèè Г°Г*Г±Г±ГІГ*Г*îâêè ôåðçåé
void Placement(int n, int **a, int *p, int *h, int *du, 
               int *dd, int i, int j){
  if ( j >= 0 && j < n )
    if ( i < n )
      if (h[i]==0 && du[i+j] == 0 && dd[n+i-j-1] == 0 ) {
        h[i] = 1;
        du[i+j] = 1;
        dd[n+i-j-1] = 1;
        p[j] = i;
        a[i][j] = 1;
        Placement(n,a,p,h,du,dd,0,j+1);
      }
      else
        Placement(n,a,p,h,du,dd,i+1,j);
    else
      if ( j > 0 ) {
        h[p[j-1]] = 0;
        du[p[j-1]+j-1] = 0;
        dd[n+p[j-1]-(j-1)-1] = 0;
        a[p[j-1]][j-1] = 0;
        Placement(n,a,p,h,du,dd,p[j-1]+1,j-1);
      }
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Вложения
Тип файла: rar листинг.rar (1.0 Кб, 18 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2012, 04:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос шахматная доска (C++):

Шахматная доска
Шахматная доска содержит 8x8 клеток. Горизонтали и вертикали обозначаются...

шахматная доска
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не...

шахматная доска
помогите написать программу, которая отображает на экране следующий рисунок...

Шахматная доска
Даны координаты двух различных полей шахматной доски x1,x2,y1,y2(Целые числа...

Шахматная доска
Заполнить двумерный массив единицами и нулями таким образом, чтобы единицы...

Шахматная доска
Есть шахматная доска (8*8). Нужно с помощью фигуры &quot;конь&quot; обойти все 64 клетки...

1
gustav21
20 / 20 / 4
Регистрация: 23.10.2009
Сообщений: 139
13.02.2012, 11:47 #2
stdafx.h - это файл т.н. предварительно откомпилированных заголовков. Посмотри, в свойствах проекта должна быть установлена опция - pre-compiled headers (Предварительно откомпилированные заголовки)

Добавлено через 2 минуты
Или если эта опция выключена, удали сточку #include "stdafx.h" вообще
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2012, 11:47
Привет! Вот еще темы с решениями:

Шахматная доска
Ребят, сейчас друг сидит на собеседовании, ему досталась какая-то слишком...

С++ Шахматная доска
Помогите пожалуйста с заданием. Нужно сделать шахматную доску 16*16 и...

Шахматная доска
Ребята, помогите! Есть код на С++, выводящий на экран шахматную доску, нужно...

шахматная доска!!
Нужно вывести шахматную доску, где белые клетки - 0 и черные - 1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru