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

Ошибка с массивами - C++

Восстановить пароль Регистрация
 
Игорь98
34 / 34 / 3
Регистрация: 12.02.2010
Сообщений: 239
05.06.2011, 14:15     Ошибка с массивами #1
Доброго времени суток. Пишу игру двадцать одно очко. Возникли проблемы с массивами. Есть класс, где хранятся: названия карт, значения карт, сумма всех очков и пара функций для генерации карт.
Сам класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef _KARDS_H
#define _KARDS_H
class kards
{
    public:
    AnsiString kard[5];
    int znachenie[5];
    int sum;
    AnsiString generate(void); // функция для генерации случайной карты
    int znach(AnsiString kard); // функции для вычисления значения карты
};
#endif
И есть поток который работает с классом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall GenIgrok::Execute()
{
    kards igrok;
    
    for (int i = 0; i < 6; i++)
    {       
        igrok.kard[i] = igrok.generate(); 
        igrok.znachenie[i] = igrok.znach(igrok.kard[i]);
    }
    
    HMODULE hdll = LoadLibrary("kards.dll");
    if (!hdll)
    {
        MessageDlg("Библиотека 'kards.dll' не найдена!", mtError,
            TMsgDlgButtons() << mbOK, 0);
        return;
    }
 
    Form1->Image8->Picture->Bitmap->LoadFromResourceName((unsigned int)hdll, igrok.kard[0]);
    Form1->Image9->Picture->Bitmap->LoadFromResourceName((unsigned int)hdll, igrok.kard[1]);
 
    FreeLibrary(hdll);
}
Когда программа выполняется появляется ошибка (скрин прикрепил), дальше программа отлично работает, все генерирует и все подсчитывает, но меня напрягает эта ошибка

Ради интереса попробовал немного изменить код, сделать без массивов.
Класс:
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
#ifndef _KARDS_H
#define _KARDS_H
 
class kards
{
    public:
    AnsiString kard1;
    AnsiString kard2;
    AnsiString kard3;
    AnsiString kard4;
    AnsiString kard5;
    AnsiString kard6;
 
    int znachenie1;
    int znachenie2;
    int znachenie3;
    int znachenie4;
    int znachenie5;
    int znachenie6;
 
    int sum;
    AnsiString generate(void);
    int znach(AnsiString kard);
};
 
#endif
Поток:
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
void __fastcall GenIgrok::Execute()
{
    kards igrok;
 
    igrok.kard1 = igrok.generate();
    igrok.znachenie1 = igrok.znach(igrok.kard1);
 
    igrok.kard2 = igrok.generate();
    igrok.znachenie2 = igrok.znach(igrok.kard2);
 
    igrok.kard3 = igrok.generate();
    igrok.znachenie3 = igrok.znach(igrok.kard3);
 
    igrok.kard4 = igrok.generate();
    igrok.znachenie4 = igrok.znach(igrok.kard4);
 
    igrok.kard5 = igrok.generate();
    igrok.znachenie5 = igrok.znach(igrok.kard5);
 
    igrok.kard6 = igrok.generate();
    igrok.znachenie6 = igrok.znach(igrok.kard6);
 
    HMODULE hdll = LoadLibrary("kards.dll");
    if (!hdll)
    {
        MessageDlg("Библиотека 'kards.dll' не найдена!", mtError,
            TMsgDlgButtons() << mbOK, 0);
        return;
    }
 
    Form1->Image8->Picture->Bitmap->LoadFromResourceName((unsigned int)hdll, igrok.kard1);
    Form1->Image9->Picture->Bitmap->LoadFromResourceName((unsigned int)hdll, igrok.kard2);
 
    FreeLibrary(hdll);
}
Код отлично и без ошибок работает, но меня это не очень устраивает, хотелось бы разобраться с массивами!
Миниатюры
Ошибка с массивами  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 14:15     Ошибка с массивами
Посмотрите здесь:

C++ Задачи с массивами (Ошибка)
Ошибка, связанная с массивами C++
C++ Операции с массивами (есть логическая ошибка, не пойму где)
C++ Ошибка в перегрузке оператора - при работе с массивами
C++ Ошибка при работе с массивами char
C++ Ошибка в программе. Работа с двумерными массивами
Ошибка с памятью при работе с двумерными массивами. C++
Ошибка в коде (работа с массивами) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
05.06.2011, 14:22     Ошибка с массивами #2
Вот здесь:
C++
1
2
3
4
5
class kards
{
        AnsiString kard[5];
        int znachenie[5];
};
для создаются массивы по 5 элементов.
А вот здесь:
C++
1
2
3
4
5
        for (int i = 0; i < 6; i++)
        {               
                igrok.kard[i] = igrok.generate(); 
                igrok.znachenie[i] = igrok.znach(igrok.kard[i]);
        }
Используется по 6 элементов из каждого массива.
Yandex
Объявления
05.06.2011, 14:22     Ошибка с массивами
Ответ Создать тему
Опции темы

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