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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 01:05   #1
JoSkream
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 12
По умолчанию Активный Эскарон

Здравствуйте товарищи
Прошу помочь в задаче
Сам очень долго думал, носил наброски преподавателю, но всё оказывалось не то
единстенную подсказку которую я услышал это было, что нада строить программну, не отталкиваясь от ответа.
Текст задачи
Составить программу вычисляющую из какого наименьшего числа коней можно создать активынй эскадрон на шахматной доске? решить задачу численным методом
Пояснения:
Эскадрон -- Группа коней , размещенный на бесконечной шахметной доске
Активный Эскадрон -- это эскадрон, который может сделать любое число ходов на шахматной доске и занять одним из своих коней любое поле доски, не оставляя ни на один ход ни одного коня без защиты.
http://sputnik.master-telecom.ru/Sea...978/11/p37.htm -- Задача(внизу)

http://sputnik.master-telecom.ru/Sea...978/12/p61.htm -- Ответ

буду рад любой подсказке и напутствию, т.к. уже давно не посещало идей по этой задаче

Последний раз редактировалось MaTBeu; 26.04.2009 в 14:21.
JoSkream вне форума Ответить с цитированием
Старый 28.04.2009, 13:07   #2
JoSkream
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 12
По умолчанию

Код:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int main(void)
int  C[90][90], S[90][90]          // задаем массив 90 на 90, C От слова Chess шахматы (англ.) S от слова Save
int a,b,c,d,e,f,n,i,p,k,r         // задаем пару переменных 
                  //заполняем массив нулями , нуль -- пустая клета, 1 -- клетка с конем, 2 -- клетка на которую имеет возможность сходить конь

i=0
for(n=1,n<65,n++);    // начинаеться перебор начального кол-ва коней
{
 	              // работаем с клетками в диапазоне 1.3 и 1.3, это квадрат в какором будут распологаться начальное положение фигур
if(n=1)
{
goto f1;
}
if(n=2)
{
goto f2;
}
if(n=3);
{
goto f3;
}
if(n=4);
{
goto f4;
}
if(n=5);
{
goto f5;
}
if(n=6);
{
goto f6;
}
if(n=7);
{
goto f7;
}
f1:                  // First, первые метки
for(a=0,a<3,a++) // обозначаем условия для перебора положений коня на куске шах доск
{
for(b=0,b<3,b++)
{ 
C[a][b]==1;
e==0;
f==0;
С[a][b]=S[e][f] // cохраняем матрицу
c==0;
d==0;
p==0;

if(C[a+1][b+2]++C[a+2][b+1]++C[a+2][b-1]++C[a+1][b-2]++C[a-1][b-2]++C[a-2][b-1]+C[a-2][b+1]+C[a-1][b+2]>=1); // проверка защищенности коня находящегося на данной клетке
{
r==rand(7); // случайный переход к тому или иному вектору хода коня
if(r=0)
{
goto r0;
}
if(r=1)
{
goto r1;
}
if(r=2)
{
goto r2;
}
if(r=3)
{
goto r3;
}
if(r=4)
{
goto r4;
}
if(r=5)
{
goto r5;
}
if(r=6)
{
goto r6;
}
if(r=7)
{
goto r7;
}
r0:         // metka randoma
c=a++1
d=b++2
l1:       //metka
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1); //proverka na vozmojost'hoda 
{
C[a][b]==0; // делаем ход
C[a+1][b+2]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p1;
}
p1:          
r1:         // metka randoma
c=a++2;
d=b++1;
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1);
{
C[a][b]==0; // делаем ход
C[a+2][b+1]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p2;
p2:
r2:         // metka randoma
c=a++2;
d=b--1;
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1);
{
C[a][b]==0; // делаем ход
C[a+2][b-1]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
JoSkream вне форума Ответить с цитированием
Старый 28.04.2009, 13:07   #3
JoSkream
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 12
По умолчанию

Код:
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p3;
}
p3:
r3:         // metka randoma
c=a++1;
d=b--2;
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1);
{
C[a][b]==0; // делаем ход
C[a+1][b-2]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p4;
}
p4:
r4:         // metka randoma
c=a--1;
d=b--2;
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1);
{
C[a][b]==0; // делаем ход
C[a-1][b-2]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p5;
}
p5:
r5:         // metka randoma
c=a--2;
d=b--1;
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1);
{
C[a][b]==0; // делаем ход
C[a-2][b-1]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p6;
}
p6:
r6:         // metka randoma
c=a--2;
d=b++1;
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1);
{
C[a][b]==0; // делаем ход
C[a-2][b+1]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p7;
}
r7:         // metka randoma
p7:
c=a--1;
d=b++2;
if(C[c+1][d+2]++C[c+2][d+1]++C[c+2][d-1]++C[c+1][d-2]++C[c-1][d-2]++C[c-2][d-1]+C[c-2][d+1]+C[c-1][d+2]>=1);
{
C[a][b]==0; // делаем ход
C[a-1][b+2]==1;

for(k=-100,k<100,k++); // перебираем возможные множители . примерно 50 % что эскадрон пойдет по диагонали
{                  // и 50% что он сходит на клетку выше => кокраз передвинеться , ч.и.т.д.
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a+k][b]=S[e][f]); // проверка на сдвижение эскадрона по пертикали
{
i==i+1
}
if(i=90)      // 90 совпадений => матрицы полность идентичны
{
goto z1;         
}
else
{
for(a=0,a<90,a++);
{
for(b=0,b<90,b++);
{
if(C[a][b+k]=S[e][f]); // проверка на сдвижение эскадрона по горизонтали
{
i==i+1
}
if(i=90)
i==0
goto l1;
}
else
{
goto p8;
}
p8:
}
}}

z1:
cout<<"Активынй Эскадрон состоит из_"n"_коней";
cout<<"FIN";
вот мои наработки, ошибок море но что поделаешь :(
JoSkream вне форума Ответить с цитированием
Старый 19.05.2009, 12:38   #4
JoSkream
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 12
По умолчанию

Up! к теме,
долго думал но к сожалению не нашел пути к решению
помогите пожалуйста!
JoSkream вне форума Ответить с цитированием
Старый 19.05.2009, 13:11   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ни одного коня без защиты.
Дык тогда все кони в активный эскадрон входят...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2009, 14:38   #6
JoSkream
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Дык тогда все кони в активный эскадрон входят...
я может не так выразился
но кони должны быть действительно всегда под защитой
я знаю ответ(5)
меня интересует сам процесс решения
JoSkream вне форума Ответить с цитированием
Старый 19.07.2009, 10:18   #7
JoSkream
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 12
По умолчанию Активный Эскадрон

Внимание, ищю Человека который напигет мне вышеуказанную задачю на С++, а так же составить блок схему и математическое решение за деньги
icq 230197595
JoSkream вне форума Ответить с цитированием
Старый 21.07.2009, 18:29   #8
ASME0010
Новичок
Джуниор
 
Регистрация: 21.07.2009
Сообщений: 3
По умолчанию

использование goto не очень хороший стиль
ASME0010 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Активный сабвуфер (проблемы) Nemesisking Компьютерное железо 0 14.07.2008 20:10