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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как вписать string в массив? http://www.cyberforum.ru/cpp-beginners/thread1505229.html
Хочу вставить надпись string в рамочку из матрицы char. вбивает всю строку в одну ячейку массива. Я новичок, не понимаю указателей и сложных конструкций. Подскажите кто поопытней. #include<iostream> #include<conio.h> #include<iomanip> using namespace std; int main(){ int a=218,b=192,c=217,d=191,l=196,w=179; const int n=22,m=19; char in_string; cout<<"enter card value"<<endl;
C++ Добавить данные в реестр Здорова! Есть я глянул у меня для определенных компонентов добавляется в реестр данные об интерфейсе, от например такие данные для интерфейса IMyDialog_Auto . Я там проверил там нету интерфейса для IBank, как можно добавить в реестр записи в ручную например? Мне нужно создать вручную такие записи в реестре для IBank как и для IMyDialog_Auto, видимо из за того что нету IBank в реестре у меня... http://www.cyberforum.ru/cpp-beginners/thread1505217.html
C++ Ошибка C2661 с RectangleShape в Марио на C++
Код был написан по туториалу с этого видео - http://www.youtube.com/watch?v=6OHMFwQK44k. SFML подключил с помощью инструкции отсюда - http://kychka-pc.ru/sfml/urok-1-podklyuchenie-biblioteki-k-srede-razrabotki-visual-studio-2013.html. 6OHMFwQK44k #include <SFML/Graphics.hpp> using namespace sf; int ground = 400; const int H = 12;
C++ Не пойму как работает char
Выдает не символ, а сивол и число!!Это я уже пробую явное приведение. Кто поопытней, поясните!! #include<iostream> #include<conio.h> using namespace std; int a=218; char b=192; char c=217; char d=191; char l=196; char w=179;
C++ Состоит ли число из одинаковых цифр? http://www.cyberforum.ru/cpp-beginners/thread1505158.html
Здраствуйте, помогите пожалуйста написать программу Данно натуральное число N. Используя только элементарные арифметические операции (+, —, *, /) выяснить, верно ли, что это число содержит все одинаковые цифры, как например 555, 44 и т.п.
C++ Собрать программу без Visual Studio Здравствуйте, вот возник вопрос, суть в сабже. В чем сам вопрос, поясняю. К примеру есть программа: int main() { cout <<"blabla"; } Ну как пример. Как сделать так чтобы без использования студии поменять в программе строку вывода? то есть к примеру я в одной программе ввел в поле "abrakadabra" и оно заменило или собрало заново программу с выводом строки и выводом моего слова. подробнее

Показать сообщение отдельно
Zai
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 32

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

26.07.2015, 17:24. Просмотров 293. Ответов 4
Метки (Все метки)

В общем, игра крестики нолики.
Сам написал - работает криво, скопировал у автора - работает идеально.
В общем, вот кусок мой
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 секунд
Мой аутпут - Просто вводятся значения один за другим, доска не заполняется, и выйгравших нет.
Аутпут автора - все как надо.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru