Форум программистов, компьютерный форум CyberForum.ru

Расстановка 8 ферзей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести все цифры числа, начиная с самой правой http://www.cyberforum.ru/cpp-beginners/thread176939.html
задача:Дано целое число N (> 0). Используя операции деления нацело и взя-тия остатка от деления, вывести все его цифры, начиная с самой правой (разряда единиц).
C++ Добавить цикл с постусловием Задача: #include <stdio.h> #include <conio.h> #include <iostream.h> #include <stdlib.h> void main() {clrscr(); struct Abiturient http://www.cyberforum.ru/cpp-beginners/thread176919.html
C++ Удары ферзем по фигурам!!!
Приветствую всех форумчан!!!! Дана задача: Найти возможные способы для удара ферзем максимального количества вражеских фигур за N проходов исходя из определенного задаваемого положения вражеских фигур, не изменяющих своего положения. Определить кратчайшие. Подскажите кто может с чего начинать алгоритм выполнения и может ссылочки какие есть с готовыми кодами?
Поиск минимального, среднее и максимального чисел из трех введенных C++
Помогите плиз, у пользователя запрашивают 3 числа и программа ищет среди них минимальное, среднее и максимальное. С++
C++ Нужен пример интерфейса http://www.cyberforum.ru/cpp-beginners/thread176899.html
Помагите нужен пример интерфейса на С++. В заранее благодарен.
C++ Как написать ехе распаковку в dev c++ Помогите новичку написать ЕХЕ распаковку от нуля до конца. Ещё ЕХЕ не разу не писал и плохо знаю С++ (очень надо) подробнее

Показать сообщение отдельно
Подсолнух
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 94

Расстановка 8 ферзей - C++

15.10.2010, 21:40. Просмотров 1437. Ответов 2
Метки (Все метки)

Привет всем, слушайте, вот исходник на С++ задача <<о восьми ферзях>>:

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include<iostream>
#include<cmath>
#include"pent"
void forming(int geo[12][25]);
void placing(int);
void print(int geo[12][25]);
int main()
{ //массив,в котором каждая строка,реализует представление 1 фигуры
  int   geometry[12][25]={1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
              1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
              0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
              0,0,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
              1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
              0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
              1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
              1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,
              1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
              1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,
              1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
              0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  //структура 1 фигуры
  //прямоугольная область размещения фигур
  //(в дальнейшем поле расстановки) 6х10
  //clrscr();         //очистка экрана
  cout<<"beginning dates:"<<endl; //вывод начальных данных
  getch();        // ожидание нажатия клавишы
  //подпрограмма формирования массива фигур,
  //из начального массива geometry
 forming(geometry);
//  int kol=10; int kol2=0;short b=1;
 // int g=-33, h=48;
    //основная функция, выполняющая всевозможные расстановки фигур
     //на поле расстановки
  placing(1);
   //вывод данных(поле расстановки) на экран
  print(geometry);
  getch();
 //  b ? Print(kol,kol2) : Print(kol,pow(kol,2)+g);
 //  b ? Prrint(kol,kol2) : Prrint(kol,pow(kol,2)-h);
  return 0;
}
 
//подпрограмма формирования массива фигур,
//из начального массива geometry
void forming(int geo[12][25])
 { struct pents
    { int shape[5][5];//форма фигуры
      char located;   //находится на доске/не находится
 }  image[12];  //массив из 12 фигур
    int h;
 
    for(int i=1;i<=12;i++) //кол-во фигур
    { h=1;
      for(int j=1;j<=5;j++) //размерность каждой фигуры
       for(int k=1;k<=5;k++)
   //присвоение массиву форматов каждой фигуры,
   //значений из нгчальных данных
       { image[i].shape[j][k]=geo[i][h];
       h++;
       }
    }
    for(i=1;i<=12;i++)
   //пока ни одна фигура не ледит на поле расстановки,
   //поэтому значение "N"
       image[i].located='N';
}
//основная функция, выполняющая всевозможные расстановки фигур
//на поле расстановки
void placing(int i)       //i-номер фигуры
{ const static int n=6,m=10;
  struct pents
    { int shape[5][5];//форма фигуры
      char located;   //находится на доске/не находится
 }  image[12];  int field[n][m];
    //вспомогательные счётчики и
    //признак нахождения подходящего варианта
    int j1,h1,b;
     //цикл нахождения всевозможных вариантов для i-ой фигуры
    for(int j=1;j<=n;j++)
    { j1=j;
    //просматриваем каждый столбец j-ой строки
      for(int h=1;h<=m;h++)
      { h1=h;b=1;
    //циклы доступа к элементам массива формата каждой фигуры
        for(int k=1;k<=5;k++)
        { for(int l=1;l<=5;l++)
          //если сумма элементов массива формы i-ой фигуры
          //и элементов массива  поля расстановки больше 1
          //т.е. происходит наложение фигур друг на друга, то b присвоить значение 0
          { if (image[i].shape[k][l]+field[j1][h1]>1) b=0;
            h1++;
          }
          j1++;h1=h;
        }
        //если не разу не произошло наложение фигур, т.е. фигура подходит,
        //то выход из цикла поиска
        //т.е. из цикла возможных исходных позиции фигуры по столбцам
        if (b==1) break;
        j1=j;
      }
      if (b==1)
    //присваиваем полю расстановки подошедшую нам фигуру
      { for(int k=1;k<=5;k++)
         for(int l=1;l<=5;l++)
             if (image[i].shape[k][l]==1) field[-j+k][-l+h]=i;
    //поменяли признак находится на доске/не находится
        image[i].located='Y';
    //если это не случай с последней фигурой,
        //то рекурсией осуществляем установку след.фигуры
    if (i<12) placing(++i);
    //  else //иначе, т.е. если дошли до посл.фигуры(нашли 1 вариант), вывод на экран
      //           print();
        //обнуляем значения последней поставленной фигуры
        //на поле расстановеи  и ищем след.подходящий вариант
    for(k=j;k<=6;k++)
     for(int l=h;l<=10;l++) field[k][l]=0;
    //поменяли признак находится на доске/не находится
    image[i].located='N';
      }
    }   //выполняем всё вышесказанное для каждой фигуры,
        //устонавливая её,находя подходящий вариант и
        //удаления для последущего поиска других вариантов
 
}
//вывод данных(поле расстановки) на экран
void print(int geo[12][25])
{
 for(int i=1;i<12;i++){
   for(int j=1;j<25;j++) //координаты поля расстановки
       cout<<geo[i][j];
       cout<<endl;}   //непосредственный вывод
      //сохранение формата вывода
 
 
}

Мне задали её в виде курсовой, код написал, честно, не сам, помогали, но запустить не получается, помогите разобраться в чем дело.

Заранее благодарен!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru