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

Ход коня по шахматной доске случайным образом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обработка записей (список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ – оценка) http://www.cyberforum.ru/cpp-beginners/thread884939.html
Разработать и отладить программу обработки записей. Предусмотреть: - ввод данных - вывод результатов (на экран в виде таблицы и в файл) Задача: Список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ (от 0 до 100) – оценка. При вводе числа баллов рассчитайте оценку (до 40 баллов – «2», 40-59 баллов – «3», 60-89 баллов – «4», 90-100 баллов – «5») и...
C++ Прямые на плоскости(С++) Доброго времени суток господа. Помогите пожалуйста написать эту задачку в С++. Сам с этой задачей пока не разбирался, времени нету, а задач много :cry: (сам пока другими разбираюсь :pardon:) Прямая на плоскости может быть задано уравнением ax+by+c=0, где a и b одновременно не равны нулю. Будем рассматривать прямые только с целыми коэффициентами a,b,c.Пусть даны коэффициенты нескольких прямых:... http://www.cyberforum.ru/cpp-beginners/thread884925.html
void в проекте на c++ C++
Создаю проект, создал модули состоящие из текста! пытаюсь объединить все в одном модуле вывод ошибку! что нужно исправить вот код #include <iostream> #include <stdio.h> #define CASE using namespace std; void arp (); void ipconfig (); void getmac (); void nbtstat (); void netsh ();
написать такой класс, который представляет собой двоичное число C++
не могу справиться вот с этим: написать такой класс, который представляет собой двоичное число. биты держит в виде объекта std::vector <bool>. написать для этого класса следующие операции: слож, выч, умнож, и битовые операции 'и' и 'или' (числа могут быть разной длины, в этом случае они выравниваются по младшему(правому) биту) помогите пожалуйста кто чем может. Хотя бы с чего начать
C++ Найти все целые числа из промежутка от 300 до 600, у которых сумма делителей кратна 10 (Netbeans) http://www.cyberforum.ru/cpp-beginners/thread884854.html
Ребят, помогите пожалуйста написать программу для данной задачи: Найти все целые числа из промежутка от 300 до 600, у которых сумма делителей кратна 10. Никак не получается:( Либо ошибку выдает либо ответ несоответствующий условию выходит.
C++ Выполнить сортировку одномерного массива X(100) методом бинарных вставок Здравствуйте уважаемые пользователи форума, прошу составить программу в с++ просто нужно сдать программу эту через 2 дня подробнее

Показать сообщение отдельно
Liss29
 Аватар для Liss29
20 / 9 / 2
Регистрация: 18.11.2012
Сообщений: 402
Завершенные тесты: 1
03.05.2016, 21:52     Ход коня по шахматной доске случайным образом
В дополнении к заданию:
Наиболее вероятно, что предыдущая программа совершит относительно корот*
кое путешествие. Теперь модифицируйте ваш у программу так, чтобы она сде*
лала 1000 попыток путешествия. Используйте одномерный массив для регист*
рации количества путешествий каждой длины. По окончании 1000 попыток
путешествия программа должна напечатать эту информацию в строгом табу*
лированном формате. Каков наилучший результат?


Это значит, что нужно создать цикл из 1000 повторений, только не понял модифицировать это
C++
1
for(int i = 1; i <= 64; i++)
или создать цикл в котором 1000 раз будет повторяться заполнение массива board?
C++
1
2
3
 for(int n = 1; n <= 1000; n++)
  {
    for(int i = 1; i <= 64; i++)
Что нужно не пойму...

Добавлено через 23 часа 27 минут
По моему разобрался.

Добавлено через 16 минут
Вот ещё в дополнительном задании с конями нужно модифицировать программу таким образом чтобы она работала до тех пор, пока не будут сделаны все 64 хода, я попытался реализовать так:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
void printBoard(int [][8]);
 
using namespace std;
int main()
{
    int board[8][8] = {0};
    int passes[1000] = {0};
    
    int horizontal[8] = {2, 1, -1, -2, -2, -1, 1, 2};
    int vertical[8] = {-1, -2, -2, -1, 1, 2, 2, 1};
 
    
    int currentRow, currentColumn, moveNumber;
    int counter = 1;
    bool status = false;
    
    srand(time(0));
    //нужно написать программу, которая будет выполняться
    //до победного конца, иначе до полного путешествия коня.
    while(status == false)
    {
        cout << "Введите координату по горизонтали: ";
        cin >> currentRow;
        cout << "Введите координату по вертикали: ";
        cin >> currentColumn;
        if(currentRow >= 0 && currentRow < 8 && currentColumn >= 0 && currentColumn < 8)
        status = true;
      else
        cout << "Недопустимый диапазон ввода, попробуйте ещё раз" << endl;
    }
  while(counter != 64)
  {
    for(; ;)
    {
        board[currentRow][currentColumn] = counter;
        status = false;
        for(int j = 0; j < 8; j++)
        {
            if(currentRow + horizontal[j] >= 0 && currentRow + horizontal[j] < 8 && currentColumn + vertical[j] >= 0 && currentColumn + vertical[j] < 8 && board[currentRow + horizontal[j]][currentColumn + vertical[j]] == 0)
            {
                status = true;
                break;
            }
        }
        
        while(status == true)
        {
            moveNumber = rand() % 8;
            if(currentRow + horizontal[moveNumber] >= 0 && currentRow + horizontal[moveNumber] < 8 && currentColumn + vertical[moveNumber] >= 0 && currentColumn + vertical[moveNumber] < 8 && board[currentRow + horizontal[moveNumber]][currentColumn + vertical[moveNumber]] == 0)
            {
               currentRow += horizontal[moveNumber];
               currentColumn += vertical[moveNumber];
               counter++;
               break;
            }
        }
         
        if(counter == 64)
            break;
        else
            continue;
    }
    
  }
    cout << "Сделано ходов " << counter << endl;
    printBoard(board);
    return 0;
}

но ничего не происходит, на первый взгляд, хотя в книге явно даётся сообщение, что она может выполняться часами даже на мощных компьютерах. Вот и хочу спросить программа годная или она тупо войдёт в бесконечный цикл?

И ещё не понял такой момент: Снова заведите таблицу для регистрации
количества путешествий каждой длины и напечатайте эту таблицу, как толь*
ко будет выполнено первое полное путешествие. Сколько путеш ествий попы *
талась совершить программа перед выполнением полного путеш ествия?

Как я понял нужно создать массив для сохранения результатов, каких ...результатов количества ходов?!, но размер массива какой... я даже представить боюсь, если она будет циклится часами, то это невераятное количество значений или я что-то не так понял?

Может всё же кто-то соизволит помочь, объяснить толково!
 
Текущее время: 21:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru