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

Цикл не повторяется - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Оператор повторения http://www.cyberforum.ru/cpp-beginners/thread1004226.html
Проверьте задачу #include<stdio.h> #include<conio.h> #include<math.h> #define n 100 void main() { clrscr(); int i,x;
C++ Объясните что означает переменная b в моей задачи Объясните что означает переменная b в моей задачи, и почему мы все делаем относительно b. Ниже написан код самой задачи. #include <iostream> using namespace std; void firstNum(int ); int main() { http://www.cyberforum.ru/cpp-beginners/thread1004203.html
C++ Класс со значением полей "по умолчанию"
Здравствуйте. Написал программу, но не могу сделать так, чтобы класс принимал значение полей по умолчанию - закомментированный вариант вызывает ошибку. Пожалуйста помогите исправить. И, если не сложно, объясните разницу между test,test2 и test3, а то в первом 2 вызова деструктора, во втором - один, а в третьем случае деструктор не вызывается #include <iostream> using namespace std; //Класс...
Спрашиваю совет по стилю написания кода C++
#include <vector> #include <string> class Errors { private: size_t i; //Глобальный счетчик циклов. std::string exp; //Входящая строка.
C++ Количество треугольников и сумма их периметров http://www.cyberforum.ru/cpp-beginners/thread1004175.html
При заданных А1,...Аn, В1,...Bn, C1,...Cn, для каждой из n троек вида (Ai, Bi, Ci) проверить может ли быть построен треугольник со сторонами Ai, Bi, Ci при этом посчитать число треугольников и сумму их периметров. c++
C++ Вывод количества вершин(узлов) на заданном уровне Напишите пожалуйста прогу которая будет выводить количество вершин(узлов) на уровне который вводим с клавиатуры подробнее

Показать сообщение отдельно
shkrekperviy
1 / 1 / 0
Регистрация: 27.06.2012
Сообщений: 12
11.11.2013, 11:43     Цикл не повторяется
Задача: Пройти шахматным конем максимальное количество клеток доски.
Ставлю несколько попыток, но выполняется только одна. Начиная со второй конь двигаться со стартовой позиции не хочет. Что не так?
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
#include <iostream>
#include <iomanip>
using namespace std;
 
int accessBoard(int);
int setArrayRand(int []);
 
const int size=8;
int a[size][size]={}; // Матрица с колич. вариантов ходов на следующую клетку
 
int main(){
    int board[size][size]={0};
    int hor[size]={2,1,-1,-2,-2,-1,1,2}; // Возможные ходы по горизонтали
    int ver[size]={-1,-2,-2,-1,1,2,2,1}; // Возможные ходы по вертикали
    int steps=0, maxSteps=0;
    int k; // Номер шага
    accessBoard(2); // Создаем матрицу a
    for(int i=0; i<2; i++){
      k=1; 
      int currentRow=0, currentColumn=0;
      board[currentRow][currentColumn]=k;
      int tempRow=0, tempColumn=0;
      while(k<64){
        int arrayRand[size]={0};  
        int accessability=9; // Макс. количество вариантов может быть 8
        setArrayRand(arrayRand); // Генерирование случайной последовательности
        for(int i=0; i<8; i++){
          int row, column;
          int number;
          number=arrayRand[i];
          row=currentRow+ver[number];
          column=currentColumn+hor[number];
          if((row>=0&&row<=7)&&(column>=0&&column<=7)&&(board[row][column]==0)){
            if(a[row][column]<accessability){
              tempRow=row;
              tempColumn=column;
              accessability=a[tempRow][tempColumn];
            }
          }  
        }
        if(currentRow!=tempRow){
          currentRow=tempRow;
          currentColumn=tempColumn;
          k++;
          board[currentRow][currentColumn]=k;
        }
        else{
          break;
          }
        }
        steps=k; // Количество пройденных клеток в данной попытке
        cout<<"steps["<<i+1<<"] = "<<steps<<endl<<endl;
        if(steps>maxSteps) maxSteps=steps; // Макс. количество во всех попытках
    }
    cout<<"Max steps: "<<maxSteps<<endl;
    system("pause");
    return 0;
}
 
int accessBoard(int digit){
    a[0][0]=digit;
    a[0][1]=a[1][0]=digit+1;
    a[0][2]=a[0][3]=a[1][1]=a[2][0]=digit+2;
    a[1][2]=a[1][3]=a[2][1]=digit+4;
    a[2][2]=a[2][3]=digit+6;
    for(int i=0; i<4; i++){
      a[3][i]=a[2][i];
    }
    for(int i=4, k=1; i<8; i++, k+=2){
      for(int j=0; j<4; j++){
        a[i][j]=a[i-k][j];
      }
    }
    for(int i=0; i<8; i++){
      for(int j=4, l=1; j<8; j++, l+=2){
        a[i][j]=a[i][j-l];
      }
    }
}
 
int setArrayRand(int a[]){
    int combine;
    combine=rand()%8;
    a[0]=combine;
    for(int j=1; j<size; j++){
        int count=0;
        combine=rand()%8;
        for(int m=0; m<j; m++){
        if(combine!=a[m]) count++;
        }     
        if(count==j) a[j]=combine;
        else j--;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru