Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2012, 21:45   #1
Killan50
 
Регистрация: 26.03.2012
Сообщений: 3
По умолчанию Не корректно работает двумерный массив

Делаю игру крестики нолики с использование двумерного массива, и возникла проблема.
Программа считает a[0][2] и a[1][0] одним значением, и не только их. Ломаю голову, мб я чего-то не знаю о массивах ?

PHP код:
#include"stdio.h"
#include"windows.h"
int main()
{
    
char a[2][2];
    
int q;
    
int o=1;
    
int b,d;
    for(
b=0;b<3;b++)
{
                 for(
d=0;d<3;d++)
                 {
                                  
a[b][d]='#';
                 }
}        
      
      
scanf("%d",&q);
      if(
q==1)
      {
                    if(
o%2)
                    {
                           
a[0][2]='X';

                    }
      
o++;
      };          
                  
      
printf("%c",a[0][0]);
      
printf("%c",a[0][1]);
      
printf("%c",a[0][2]);
      
printf("\n");
      
printf("%c",a[1][0]);
      
printf("%c",a[1][1]);
      
printf("%c",a[1][2]);
      
printf("\n");
      
printf("%c",a[2][0]);
      
printf("%c",a[2][1]);
      
printf("%c",a[2][2]);
      
printf("\n");
      
system("pause");  

Код демонстрирующий ошибку.
Killan50 вне форума Ответить с цитированием
Старый 17.05.2012, 21:49   #2
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

А что этот код должен делать?
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 17.05.2012, 22:01   #3
Killan50
 
Регистрация: 26.03.2012
Сообщений: 3
По умолчанию

Сначала он выводит матрицу 3х3 заполненную решетками.
потом он должен заменить элемент [0][2] на X и снова вывести матрицу, но он почему то за компанию меняет и [1][0].
Killan50 вне форума Ответить с цитированием
Старый 17.05.2012, 22:06   #4
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

в чем компилируете?
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 17.05.2012, 22:09   #5
Killan50
 
Регистрация: 26.03.2012
Сообщений: 3
По умолчанию

Пишу в Dev C++
Killan50 вне форума Ответить с цитированием
Старый 17.05.2012, 22:30   #6
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

вот работает.
Код:
// Prog.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <conio.h>
#include <iostream>

using namespace std;

int _tmain()
{
	
	//char **a=new char*[2];
	char a[3][3];
	int i,j;

	for(i=0; i<3; i++){
		for(j=0; j<3; j++){
			a[i][j]='#';
			cout<<a[i][j];
		};
		cout<<endl;
	};

	a[0][2]='0';
	cout<<endl;

	for(i=0; i<3; i++){
		for(j=0; j<3; j++){
			cout<<a[i][j];
		};
		cout<<endl;
	};

	getch ();
	return 0;
}
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 17.05.2012, 22:33   #7
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

по идеи у Вас проблема тут:
Код:
char a[2][2];
потому что надо создавать размерность по формуле (массив [размер+1][размер+1]).
надо учитывать символ "\0" - окончание строки.
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 18.05.2012, 10:23   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,710
По умолчанию

Цитата:
по идеи у Вас проблема тут:
Именно, но по другой причине. Нету в таком массиве a[0][2] и подобных.

Цитата:
потому что надо создавать размерность по формуле (массив [размер+1][размер+1]).
надо учитывать символ "\0" - окончание строки.
Не надо, если это не строка, а массив байт.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция работает не корректно! VintProg Общие вопросы Delphi 8 04.08.2011 14:54
Не совсем корректно работает программа alexchromets Помощь студентам 2 26.12.2010 19:45
Рекурсия. Не корректно работает прога Driver_09 Помощь студентам 0 23.12.2009 20:02
Программа работает не корректно Neymexa Общие вопросы C/C++ 5 24.12.2008 19:17