Напишите пожалуйста комменты к программе на С++, что к чему скажем
Напишите пожалуйста комменты к программке на С++, что к чему скажем так.
Задание было такое:
Заполните случайным образом массив (100 частей) попеременно бук-вами латинского алфавита от A до H и знаками цифр от 1 до 8. Про-верьте, есть ли в данном массиве записи, схожие с записью ходов коня по шахматной дощечке, и, если есть заполните ими второй массив. Выполните сортировку приобретенных массивов. Для контроля результата сделайте распечатку массивов, в том числе начального.
include
include
include
char string[101]; // вводимое число
char * temp;
char tempWord[1024];
void checkIdentical(char str[])
int i, j, size;
char c;
bool br;
size = strlen(str);
for(i = 0; i lt; size; i++)
c = str[i];
for(j = i + 1; j lt; size; j++)
if(c == str[j])
printf("%s\n", str);
br = !br;
break;
if(br)
break;
int main()
printf("enter\n");
gets(string);
temp = strtok(string, " ");
printf("words with identical letters:\n\n");
for(; temp != NULL;)
strcpy(tempWord, temp);
checkIdentical(tempWord);
temp = strtok(NULL, " ");
return 0;
В прикреплённом файле с нормальным форматированием.
include lt;iostreamgt;
include lt;randomgt;
include lt;vectorgt;
include lt;algorithmgt;
// Обрисовывает шахматную нотацию.
struct Notation;
// Заполняет массив случайными шахматными ходами.
void FillField(std::vectorlt;Notationgt;amp;);
// Поиск в массиве композиций "ход конём".
std::vectorlt;Notationgt; SearchMoves(const std::vectorlt;Notationgt;amp;);
// Поиск вероятных композиций для хода.
std::vectorlt;Notationgt; SearchMoves(const Notationamp;);
// Проверка выхода за границу.
bool CheckMov(const Notationamp;, int, int);
// Выводит массив в поток.
std::ostreamamp; PrintGround(const std::vectorlt;Notationgt;amp;, std::ostreamamp; = std::cout);
int main()
std::vectorlt;Notationgt; field(100);
// Наполняем поле.
FillField(field);
// Выводим начальный массив.
PrintGround(field, std::cout) lt;lt; std::endl;
// Поиск композиций "ход конём".
std::vectorlt;Notationgt; fieldMovs = SearchMoves(field);
// Выводим полученный массив.
PrintGround(fieldMovs, std::cout) lt;lt; std::endl;
// Отсортируем оба массива в порядке возрастания.
std::sort(field.begin(), field.end());
std::sort(fieldMovs.begin(), fieldMovs.end());
// Выводим приобретенные массивы.
PrintGround(field, std::cout) lt;lt; std::endl;
PrintGround(fieldMovs, std::cout) lt;lt; std::endl;
return 0;
// Обрисовывает шахматную нотацию.
struct Notation
unsigned char H;
unsigned int V;
bool operator==(const Notationamp; rhs) const return ((rhs.H == H) amp;amp; (rhs.V == V));
bool operatorlt;(const Notationamp; rhs) const return ((rhs.H lt; H) ((rhs.H == H) amp;amp; (rhs.V lt; V)));
;
// Наполняет массив случайными шахматными ходами.
void FillField(std::vectorlt;Notationgt;amp; field)
std::default_random_engine generator;
std::uniform_int_distributionlt;intgt; distribution(1, 8);
for (autoamp; i : field)
i.H = 'a' + distribution(generator) - 1;
i.V = distribution(generator);
// Поиск вероятных композиций для хода.
std::vectorlt;Notationgt; SearchMoves(const Notationamp; stroke)
std::vectorlt;Notationgt; temp;
int x, y;
for (int i = 0; i lt; 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::vectorlt;Notationgt;(temp);
// Проверка выхода за границу.
bool CheckMov(const Notationamp; stroke, int x, int y)
bool isLTBorder = (stroke.H + x gt;= 'a') amp;amp; (stroke.V + y gt;= 1);
bool isRBBorder = (stroke.H + x lt;= 'h') amp;amp; (stroke.V + y lt;= 8);
return (isLTBorder amp;amp; isRBBorder);
// Поиск в массиве композиций "ход конём".
std::vectorlt;Notationgt; SearchMoves(const std::vectorlt;Notationgt;amp; field)
std::vectorlt;Notationgt; possible;
// Все вероятные ходы 1-го элемента.
std::vectorlt;Notationgt; temp = SearchMoves(*field.begin());
for (auto i = field.begin() + 1; i lt; field.end(); ++i)
for (auto u : temp)
// Ход в массиве - есть ход конём.
if (u == *i)
possible.push_back(u);
break;
temp = SearchMoves(*i);
return std::vectorlt;Notationgt;(possible);
// Выводит массив в поток.
std::ostreamamp; PrintGround(const std::vectorlt;Notationgt;amp; field, std::ostreamamp; out)
for (auto i : field)
out lt;lt; i.H lt;lt; i.V lt;lt; " - ";
return out;
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Физика.
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.