Диана-Николаевна377
?>

Қандай да бір материалдық форма түріне келтірілетін және қандай да бір адамның немесе адамдар тобының ақыл-ой, іс-әрекетінің нәтижесі

Информатика

Ответы

dimanov

Зияткерлік жекеменшік нысаны

polina3mag
Сама задачка порадовала, написал используя только функции С++. Задание реализовал полностью. 
В прикреплённом файле с нормальным форматированием.

#include <iostream>
#include <random>
#include <vector>
#include <algorithm>

// Описывает шахматную нотацию.
struct Notation;
// Заполняет массив случайными шахматными ходами.
void FillField(std::vector<Notation>&);
// Поиск в массиве комбинаций "ход конём".
std::vector<Notation> SearchMoves(const std::vector<Notation>&);
// Поиск возможных комбинаций для хода.
std::vector<Notation> SearchMoves(const Notation&);
// Проверка выхода за границу.
bool CheckMov(const Notation&, int, int);
// Выводит массив в поток.
std::ostream& PrintGround(const std::vector<Notation>&, std::ostream& = std::cout);

int main()
{
std::vector<Notation> field(100);

// Заполняем поле.
FillField(field);

// Выводим исходный массив.
PrintGround(field, std::cout) << std::endl;

// Поиск комбинаций "ход конём".
std::vector<Notation> fieldMovs = SearchMoves(field);

// Выводим полученный массив.
PrintGround(fieldMovs, std::cout) << std::endl;

// Отсортируем оба массива в порядке возрастания.
std::sort(field.begin(), field.end());
std::sort(fieldMovs.begin(), fieldMovs.end());

// Выводим полученные массивы.
PrintGround(field, std::cout) << std::endl;
PrintGround(fieldMovs, std::cout) << std::endl;

return 0;
}

// Описывает шахматную нотацию.
struct Notation{
unsigned char H;
unsigned int  V;

bool operator==(const Notation& rhs) const{ return ((rhs.H == H) && (rhs.V == V)); }
bool operator<(const Notation& rhs) const{ return ((rhs.H < H) || ((rhs.H == H)  && (rhs.V < V))); }
};

// Заполняет массив случайными шахматными ходами.
void FillField(std::vector<Notation>& field){
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(1, 8);

for (auto& i : field){
i.H = 'a' + distribution(generator) - 1;
i.V = distribution(generator);
}
}

// Поиск возможных комбинаций для хода.
std::vector<Notation> SearchMoves(const Notation& stroke){
std::vector<Notation> temp;
int x, y;

for (int i = 0; i < 8; ++i){
switch (i){
case 0: // Вверх влево.
y = +3; x = -1;
break;
case 1: // Вверх вправо.
y = +3; x = +1;
break;
case 2: // Вправо вверх.
y = +1; x = +3;
break;
case 3: // Вправо вниз.
y = -1; x = +3;
break;
case 4: // Вниз вправо.
y = -3; x = +1;
break;
case 5: // Вниз влево.
y = -3; x = -1;
break;
case 6: // Влево вниз.
y = -1; x = -3;
break;
case 7: // Влево вверх.
y = +1; x = -3;
break;
}
// Если ход возможен, добавим его в массив.
if (CheckMov(stroke, x, y))
temp.push_back(Notation{ stroke.H + x, stroke.V + y });
}
return std::vector<Notation>(temp);
}

// Проверка выхода за границу.
bool CheckMov(const Notation& stroke, int x, int y){
bool isLTBorder = (stroke.H + x >= 'a') && (stroke.V + y >= 1);
bool isRBBorder = (stroke.H + x <= 'h') && (stroke.V + y <= 8);
return (isLTBorder && isRBBorder);
}

// Поиск в массиве комбинаций "ход конём".
std::vector<Notation> SearchMoves(const std::vector<Notation>& field){
std::vector<Notation> possible;

// Все возможные ходы одного элемента.
std::vector<Notation> temp = SearchMoves(*field.begin());
for (auto i = field.begin() + 1; i < field.end(); ++i){
for (auto u : temp){
// Ход в массиве - есть ход конём.
if (u == *i) {
possible.push_back(u);
break;
}
}
temp = SearchMoves(*i);
}

return std::vector<Notation>(possible);
}

// Выводит массив в поток.
std::ostream& PrintGround(const std::vector<Notation>& field, std::ostream& out){
for (auto i : field)
out << i.H << i.V << " - ";
return out;
}
nataliaterekhovasinger2
Вот
program qq;
var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t:integer;
begin
cls;
writeln ('Введите 10 пар чисел');
read (a,b); read (c,d); read (e,f); read (g,h); read (i,j); read (k,l); read (m,n); read (o,p); read (q,r); read (s,t);
//Первая пара
if a > b then
writeln ('Первая пара больше число ' ,a)
else 
writeln ('Первая пара больше число ' ,b);
//Вторая пара
if c > d then
writeln ('Вторая пара больше число ', c)
else writeln ('Вторая пара больше число ',  d);
//Третья пара 
if e > f then 
writeln ('Третья пара больше число ',  e)
else 
writeln ('Третья пара больше число ',  f);
//Четвертая пара
if g > h then
writeln ('Четвертая пара больше число ' , g)
else 
writeln ('Четвертая пара больше число '  , h);
//Пятая пара
if  i > j then
writeln ('Пятая пара больше число ' , i)
else writeln ('Пятая пара больше число '  ,g);
//Шестая пара
if  k > l then
writeln ('Шестая пара больше число '  ,k)
else 
writeln ('Шестая пара больше число '  ,l);
//Седьмая пара 
if  m > n then 
writeln ('Седьмая пара больше число ' , m)
else
 writeln ('Седьмая пара больше число '  ,n);
//Восьмая пара
if  o > p then
writeln ('Восьмая пара больше число '  ,o)
else 
writeln ('Восьмая пара больше число '  ,p);
//Девятая пара
if  q > r then 
writeln ('Девятая пара больше число '  ,q)
else 
writeln ('Девятая пара больше число '  ,r);
//десятая пара 
if  s > t then
writeln ('Десятая пара больше число '  ,s)
else 
writeln ('Десятая пара больше число '  ,t);
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Қандай да бір материалдық форма түріне келтірілетін және қандай да бір адамның немесе адамдар тобының ақыл-ой, іс-әрекетінің нәтижесі
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Sergei248
федороа
keykov35
avtalux527
anovikovsr
Viktoriya
benonika
mariapronina720126
cvetprint
gardenkafe
kostmax1971
Darialaza
Ka-shop2791
korolev-comitet8825
akarabut343