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

2 одинаковых куска кода - вывод разный - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа ПРОВОДНИК для Windows 7 http://www.cyberforum.ru/cpp-beginners/thread1505156.html
Здравствуйте! У меня руки чешутся, заражЁн революционными преобразованиями — а знаний нет! Помогите, пожалуйста, НОВАТОРУ. Кто чем может… Прошу прощения, на каком языке написана программа ниже https://msdn.microsoft.com/en-us/library/ms906558.aspx?f=255&MSPPError=-2147217396 DWORD dwStyle; // Style flags of the tree view INITCOMMONCONTROLSEX iccex; // INITCOMMONCONTROLSEX...
C++ Проверка пароля: чекер ключей У кого есть время написать небольшой чекер ключей? Суть: Вбиваем список ключей в программу, она идёт на https://aw.mail.ru/pin/вбивает в окошко по очереди ключи и нажимает активировать. Если переделывать другой чекер - займёт всего пару минут.. Заранее благодарен! Пункт 6.7 Правил: Запрещено создание и распространение вредоносного ПО, вирусов, кряков и взлома лицензионного софта, а... http://www.cyberforum.ru/cpp-beginners/thread1504852.html
C++ Считывание неизвестного количества чисел
Доброго времени суток, извините что отвлеккаю.Помогите начинающему.Имеется задача...Вводится ряд чисел ...Найти для них НОД.Собственно с поиском НОДа проблем нет.Беда в том,что количество чисел неизвестно .Вообщем вопрос:"Как вводить неизвестное количество чисел?".Надеюсь ,вы мне поможете.
C++ WinAPI Чтение/запись памяти процесса
Какие есть способы чтения или записи в память процесса ? Я нашел только дефолтный readprocessmemory/writeprocessmemory. Можно ли это дело делать через драйвер ? (Да, я знаю, чтобы использовать неподписанный драйвер в 64x, нужно включать тестовый режим. Кстати, других способов, кроме, как подписать драйвер и использовать его не в тестовом режиме, нет ?) Например, создаем приложение на C++...
C++ COM Как выполняется регистрация OLE программы? http://www.cyberforum.ru/cpp-beginners/thread1503767.html
Здорова! Создал программу SDI в MFC с поддержкой автоматизации, и там создался файл .reg и в нем написано идентификатор программы: REGEDIT ; Возможно, этот файл .REG используется программой установки. ; Если программа SETUP недоступна, записи, расположенные ниже, будут зарегистрированы ; в InitInstance автоматически с вызовом в ; CWinApp::RegisterShellFileTypes и...
C++ Где взять движок Chromium (Google Chrome, Opera)? Где достать движок Chromium (google chrome , opera)??? Хочу отредактировать до лично себя, так как оригинальные хром или опера кое где не особо подходят... Я находил как-то ссылку на двиг, и браузера на этом двиге... А вот сейчас найти не могу... :( подробнее

Показать сообщение отдельно
Zai
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 32
26.07.2015, 17:24     2 одинаковых куска кода - вывод разный
В общем, игра крестики нолики.
Сам написал - работает криво, скопировал у автора - работает идеально.
В общем, вот кусок мой
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
95
#include <iostream>
 
 
char board[9] = {};
 
void clearterminal(){
    for(int i = 0; i < 40;i++){
        std::cout<<std::endl;
    }
}
 
void clearboard(){
    for(int i = 0;i < 9 ; i++){
        board[i] = '-';
    }
}
 
bool has_wonQ(char player){
 
    int wins[][3] = {{0,1,2}, {3,4,5}, {6,7,8},{0,3,6}, {1,4,7},
                        {2,5,8}, {0,4,8}, {2,4,6}};
 
    for(int i = 0; i < 8;i++){
        int count = 0;
        for(int j = 0; j< 3; j++){
            if(board[wins[i][j]] == player )
                count ++;
        }
        if(count == 3){
            return true;
        }
    }
    return false;
}
void print_board(std::string indent){
    std::cout << std::endl;
        std::cout<<indent<<"-"<<board[6]<<"-|-"<<board[7]<<"-|-"<<board[8]<<"-\n";
        std::cout<<indent<<"-"<<board[3]<<"-|-"<<board[4]<<"-|-"<<board[5]<<"-\n";
        std::cout<<indent<<"-"<<board[0]<<"-|-"<<board[1]<<"-|-"<<board[2]<<"-\n";
 
}
int get_move (){//просто шаблон достки, как картинка
    std::cout<<"\nMove options: \n";
    std::cout<<"-7-|-8-|-9-" << std::endl;
    std::cout<<"-4-|-5-|-6-" << std::endl;
    std::cout<<"-1-|-2-|-3-" << std::endl;
    std::cout<<"\n";
 
    print_board("");
    std::cout << "\nYour move: ";
    
    int move;
    std::cin >> move;
    while(move > 9 || move < 1 || board[move-1] != '-'){
        std::cout<<"Please enter a legal move (1-9): \n";
        std::cin >> move;
    }
    return move;
}
char play_and_get_winner(){
  int turn = 1;
  
        while(!has_wonQ('X') && !has_wonQ('O')){
          clearterminal();          
          int move = get_move();
          clearboard();
          if(turn%2 == 1){
             board[move-1]='X';
             if(has_wonQ('X')){
                std::cout << "Congratulations player X! You have won!\n";
                return 'X';
             }
          }
          else{ 
             board[move-1]='O';
             if(has_wonQ('O')){
                std::cout << "Congratulations player O! You have won!\n";
                return 'O';
             }
          }
        turn++;
              if(turn == 10){
                std::cout << "\t It's a draw!\n"; 
                return 'D';
              }
       }
return true;
}
int main (){
        std::cout<<"Welcome to tic-tac-toe!\n\n";
        clearboard();
        char winnerg = play_and_get_winner();
        print_board("\t  ");
        return 0;
}
а вот кусок автора
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
95
#include <iostream>
 
char board[9] = {}; 
 
void clearscreen(){
  for(int i = 0; i<40; i++){
    std::cout<<std::endl;
  }
}
 
void clearboard(){
  for(int i = 0; i<9; i++){
    board[i] = '-';
  }
}
 
bool has_wonQ(char player){
  
  int wins[][3] = {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7},
                    {2,5,8}, {0,4,8}, {2,4,6}};
 
  for(int i = 0; i<8; i++){
    int count = 0;
    for(int j = 0; j<3; j++){
      if(board[wins[i][j]] == player) 
        count++; 
    }
    if(count == 3){
      return true;
    }
  }
  return false;
}
 
void print_board(std::string indent){
        std::cout << std::endl;
        std::cout<<indent<<"-"<<board[6]<<"-|-"<<board[7]<<"-|-"<<board[8]<<"-\n";
        std::cout<<indent<<"-"<<board[3]<<"-|-"<<board[4]<<"-|-"<<board[5]<<"-\n";
        std::cout<<indent<<"-"<<board[0]<<"-|-"<<board[1]<<"-|-"<<board[2]<<"-\n";
}
 
int get_move(){
    std::cout<<"\nMove options: \n";
    std::cout<<"-7-|-8-|-9-" << std::endl;
    std::cout<<"-4-|-5-|-6-" << std::endl;
    std::cout<<"-1-|-2-|-3-" << std::endl;
    std::cout<<"\n";
 
    print_board("");
    std::cout << "\nYour move: "; 
    
    int move;
    std::cin >> move;
    while(move > 9 || move < 1 || board[move-1] != '-'){
        std::cout<<"Please enter a legal move (1-9): \n";
        std::cin >> move;
    }
    return move;
}
char play_and_get_winner(){
  int turn = 1;
  
  while(!has_wonQ('X') && !has_wonQ('O')){
          clearscreen();          
          int move = get_move();
          clearscreen();
          if(turn%2 == 1){
             board[move-1]='X';
             if(has_wonQ('X')){
                std::cout << "Congratulations player X! You have won!\n";
                return 'X';
             }
          } 
          else{ 
             board[move-1]='O';
             if(has_wonQ('O')){
                std::cout << "Congratulations player O! You have won!\n";
                return 'O';
             }
          }
      turn++;
      if(turn == 10){
        std::cout << "\t It's a draw!\n"; 
        return 'D';
      }
  }
return true;
}
int main(){
          std::cout<<"Welcome to tic-tac-toe!\n\n";        
          clearboard();
          char winner = play_and_get_winner();
          print_board("\t  ");
          return 0;
}
Я раза 3 проверил все с лупой, различий не нашел.
помогите плиииз

Добавлено через 10 минут
Там ошибка в слове winner в моем коде, но это не решает проблему, просто опечатался.

Добавлено через 46 секунд
Мой аутпут - Просто вводятся значения один за другим, доска не заполняется, и выйгравших нет.
Аутпут автора - все как надо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru