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

Странные значения в созданном массиве - C++

Восстановить пароль Регистрация
 
paulbilkis
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 8
17.01.2011, 01:01     Странные значения в созданном массиве #1
Здравствуйте. При создании массива(bool next_area[15][10]) в определенном месте он заполняется следующими значениями:
Код
{{253, 183, true, false, false, false, 192, 116, 252, 183}, {255, 255, 255, 255, 255, 255, 255, 255, 192, 116}, {252, 
    183, false, 240, 253, 183, 156, 243, 255, 191}, {63, 187, 238, 183, 192, 116, 252, 183, false, 240}, {253, 183, true, 
    false, false, false, 192, 116, 252, 183}, {false, 240, 253, 183, 16, false, false, false, 244, 111}, {252, 183, true, 
    false, false, false, 192, 116, 252, 183}, {172, 243, 255, 191, 86, 190, 238, 183, true, false}, {false, false, 192, 
    116, 252, 183, 208, 243, 255, 191}, {120, 201, 238, 183, 192, 116, 252, 183, false, 240}, {253, 183, true, false, 
    false, false, 10, false, false, false}, {244, 111, 252, 183, 192, 116, 252, 183, 192, 116}, {252, 183, 232, 243, 255, 
    191, 234, 240, 238, 183}, {192, 116, 252, 183, 10, false, false, false, 244, 111}, {252, 183, 64, 131, 252, 183, 8, 
    244, 255, 191}}
Всегда одними и теми же. Если же объявление массива перенести в другое место(вне функции) все в порядке. Язык C. Чисто теоретически, почему массив может наполняться такими значениями?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 01:01     Странные значения в созданном массиве
Посмотрите здесь:

C++ Минимальные и максимальные значения в массиве
в цикле где выводится матрица j принимает какие-то странные значения. Почему? C++
Найти сумму максимального значения элементов с четными индексами и минимального значения элементов с нечетными индексами в одномерном массиве C++
Поменять значения в массиве. C++
C++ В одномерном массиве значение каждого элемента заменить разностью этого значения и среднего арифметического значения других элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.01.2011, 01:03     Странные значения в созданном массиве #2
paulbilkis, покажыте код программы!!!!
paulbilkis
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 8
17.01.2011, 01:06  [ТС]     Странные значения в созданном массиве #3
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
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
 
#define AREA_X 15
#define AREA_Y 10
 
int n_x = AREA_X - 1;
int n_y = AREA_Y - 1;
 
bool area[AREA_X][AREA_Y];
 
int alive_count ( int x, int y )
{
    return area[x][y-1] + area[x][y+1] + area[x-1][y] + area[x+1][y] + area[x-1][y-1] + area[x-1][y+1] + area[x+1][y-1] + area[x+1][y+1];
}
 
void print_area ( void )
{
    int x, y;
    
    for ( y = 0; y <= n_y; ++y )
    {
        for ( x = 0; x <= n_x; ++x )
        {
            if (area[x][y])
                printf ("#");
            else
                printf ("*");
        }
        printf ("\n");
    }
}
 
void next_area_g ( void )
{
    int x, y, alive;
    bool next_area[AREA_X][AREA_Y];
    
    long long int array_size = sizeof( bool ) * ( AREA_X * AREA_Y );
    
    for ( y = 0; y <= n_y; ++y )
    {
        for ( x = 0; x <= n_x; ++x )
        {
            alive = alive_count ( x, y );
            if ( area[x][y] )
            {
                if ( alive < 2 || alive > 3 )
                    next_area[x][y] = false;
                else
                    next_area[x][y] = true;         
            }else
            {
                if ( alive == 3 )
                    next_area[x][y] = true;
            }
        }
    }
    
    memcpy ( area, next_area, array_size );
}
 
int main ( void )
{
    int g, count_generations;
    
    area[4][3] = true;
    area[4][4] = true;
    area[4][5] = true;
    area[5][5] = true;
    area[6][4] = true;
    
    printf ( "Введите колличество поколений: " );
    scanf ( "%i", &count_generations );
    print_area ();
    
    for ( g = 1; g <= count_generations; ++g )
    {
        printf ( "\n" );
        next_area_g ();
        print_area ();
    }
    
    return 0;
}
Заранее прошу за логические и алгоритмические ошибки особо не пинать, вторую неделю Си изучаю.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.01.2011, 01:11     Странные значения в созданном массиве #4
paulbilkis, попробуйте инициализировать массив

C++
1
bool area[AREA_X][AREA_Y]={false};
paulbilkis
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 8
17.01.2011, 01:16  [ТС]     Странные значения в созданном массиве #5
Спасибо, помогло. Странно, мне до этого казалось, что при создании булевого массива он по умолчанию принимает значение false.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.01.2011, 01:18     Странные значения в созданном массиве #6
paulbilkis, если его не инициализировать, там будет мусор из памяти!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 05:51     Странные значения в созданном массиве
Еще ссылки по теме:

Найти в созданном массиве целых чисел элемент последовательным методом C++
C++ В созданном массиве строк, подсчитать в тексте количество слов, в которых нету цифр
Значения, которые есть в первом массиве и которых нет во втором массиве, скопировать в третий массив C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.01.2011, 05:51     Странные значения в созданном массиве #7
Цитата Сообщение от paulbilkis
Если же объявление массива перенести в другое место(вне функции) все в порядке.
если он внешний, то он инициализируется нулями, а если он локальный, то случайными значениями, это действует для любых переменных
Yandex
Объявления
17.01.2011, 05:51     Странные значения в созданном массиве
Ответ Создать тему
Опции темы

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