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

Ошибка в двумерном массиве - C++

Восстановить пароль Регистрация
 
Killan
 Аватар для Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
17.05.2012, 21:32     Ошибка в двумерном массиве #1
Делаю игру крестики нолики с использование двумерного массива, и возникла проблема.
Программа считает a[0][2] и a[1][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
#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");  
}
Кусок программы показывающий ошибку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nijaz
34 / 34 / 9
Регистрация: 16.12.2010
Сообщений: 100
17.05.2012, 21:45     Ошибка в двумерном массиве #2
C++
1
char a[3][3];
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
17.05.2012, 21:53     Ошибка в двумерном массиве #3
Объявляя arr[N], вы фактически объявляете элементы arr[0], arr[1], ... arr[N-1]. Всего выходит N элементов. Почему? Всё просто - индексация массива начинается с 0. Т.е. если я объявлю массив arr[3], то существуют элементы arr[0], arr[1], arr[2]. Элемента arr[3] не существует, это вне области массива.
Killan
 Аватар для Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
17.05.2012, 21:55  [ТС]     Ошибка в двумерном массиве #4
Эм... не знал о таком, всегда думал что a[2] это 0/1/2 т.е 3 значения.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
17.05.2012, 21:59     Ошибка в двумерном массиве #5
Вы используйте элемент a[2][2], это значит что нам нужен двумерный массив размерностью 3*3. При объявлении масива мы пишем в квадратных скобках не нормер крайнего элемента, а количество элементов. В данном случае 3.

Не по теме:

Код
void read_again()
{
    if (understand) return;
    else read_again();
}

Yandex
Объявления
17.05.2012, 21:59     Ошибка в двумерном массиве
Ответ Создать тему
Опции темы

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