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

String subscript out of range при создании динамического массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Метод золотого сечения.исправьте ошибку пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1041193.html
Задача "Провести оптимизацию полученных полиномов на всем заданном интервале по методу золотого сечения" вот что я закодил: #include <stdio.h> #include <conio.h> #include <math.h> #include <locale.h> float f(float x) {return 0.996515 * x*x - 0.016035 * x - 0.018121;} int main(void) { int i = 0;
C++ Подсчет частоты алфавита Доброго времени суток. Как посчитать в тексте из файла частоту алфавита(сколько раз каждый символ встречается в приведенном тексте)? Я понимаю, что мы открываем 2 файла: в 1 изначальный текст, в другой записывается частота алфавита. Вот только не посимвольно же этот текст читать и суммировать. А как сделать это на массивах представляю очень образно и на практике не выходит. Помогите хотя бы с... http://www.cyberforum.ru/cpp-beginners/thread1041174.html
C++ Выбор одного варианта из двух
Добрый вечер! Помогите, пожалуйста, не совсем понял, как с оператором if сделать выбор на вывод подходящего условия. Имеется условие: if (a >b) c=m; else if(a <b) c=b; Как сделать так, что бы в консоли выводился один из вариантов? Пример: вариант а столько то раз (раз - вводимых с клавиатуры). Добавлено через 1 минуту В паскале это выглядит вот так:
C++ Работа с изображением в консольном приложении
Срочно братья программисты, прошу о помощи! Волнуют три вопроса, а еще больше на них ответы (подробные). 1. Функция MakePalette. Принцип работы, результат и т.д. 2. Хранение данных изображения в классе Image.Переменные, типы изображения, связь данных .bmp формата и данных этого же изображения в классе Image. 3.Присваивание и копирование объектов класса. Зачем нужна перезагрузка оператора...
C++ Составьте программу, которая вычисляет сумму чисел от 1 до 10 http://www.cyberforum.ru/cpp-beginners/thread1041145.html
Составьте программу, которая вычисляет сумму чисел от 1 до 100. помогите пожалуйста составить программу с++ пожалуйста
C++ Разработать класс large Помогите, решить задачу. Длинную арифметику перечитал уже несколько десятков раз, но все равно не понял. Небольшой исходник по первой части я уже сделал..., а дальше тупик.. В с++ почти ноль. Разработать класс large – длинное целое. Для хранения одной десятичной цифры использовать одно число типа char. Количество десятичных цифр, которые должны размещаться в этом числе, передавать в... подробнее

Показать сообщение отдельно
antonid
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 22
15.12.2013, 20:38  [ТС]     String subscript out of range при создании динамического массива
StackOverflow, вот все что связано с врагами в функции main. (все переменные, функции и объекты были объявлены, но я это стер)

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
int main()
{   
 
    sf::RenderWindow window(sf::VideoMode(1200,860), "RPG game"); /*создаем окно*/
        Clock clock;
            std::srand(time(NULL));
            mx = player.sprite.getPosition().x;
            my = player.sprite.getPosition().y;
            //** Пустой массив врагов
                        Enemy *en = NULL;
             en = new Enemy[en_kol];
    while (window.isOpen())/*пока открыто окно эта функция выполняется постоянно*/
    {
    
    if(en_kol == 0){
    delete [] en;
            ++lvl;
            en_kol = lvl*2;
                 en = new Enemy[en_kol];
            for (int i = 0;i<en_kol;i++){ /*это вместо конструктора*/
                en[i].rect = sf::FloatRect(600+(i+1)*100, 300+(i+1)*30, 60, 60); /*координаты*/
                    en[i].sprite.setTexture(t); /*задается текстура*/
                                en[i].hp=en[i].mp = 100;
                                                    en[i].speed = 0.005;
                                                    en[i].live = 1; /*жив враг или нет*/
            }
    }
        float time =clock.getElapsedTime().asMicroseconds(); /* скорость игры*/
                    clock.restart();    
                    time = time*1.5;
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
            }
        }
        for (int i = 0;i<en_kol;i++){  /*столкновение со стрелой*/
            if (arrow.rect.top>en[i].rect.top-30 && arrow.rect.top< en[i].rect.top+30 && arrow.rect.left> en[i].rect.left-30 &&  arrow.rect.left< en[i].rect.left+30){
            arrow.fly = 0; /*указываем что стрела перестает лететь и исчезает за предел экрана*/
            arrow.rect.left = -800;
            arrow.rect.top = -800;
            en[i].hp -= 20;
            std::cout<<en_kol<<std::endl;
        } /* и с копьем*/
            if (spear.rect.top>en[i].rect.top-30 && spear.rect.top< en[i].rect.top+30 && spear.rect.left> en[i].rect.left-30 &&  spear.rect.left< en[i].rect.left+30 ){
            spear.fly = 0; /*указываем что копье перестает лететь и исчезает за предел экрана*/
            spear.rect.left = -800;
            spear.rect.top = -800;
            en[i].hp -= 50;     
            std::cout<<en_kol<<std::endl;
        }
                        if (en[i].hp<=0){    
                            en[i].checklive(); /*если враг умер при попадании, то он прячется за предел экрана и кол-во уменьшается на 1 (сказано в функции)*/
            }
        }
 
    for(int i = 0;i<en_kol;i++){
                                en[i].update(time,player.rect.left,player.rect.top); /*тут функции врага(движение, повороты, столкновения со стенами*/
    }
                            
        window.clear(sf::Color::Green);  /*чистим окно и рисуем все текстуры*/
        
        window.draw(cross.sprite);
        window.draw(player.sprite);
        if (en_kol !=0 ){
            for(int i = 0;i<en_kol;i++){
                window.draw(en[i].sprite);
            }
        }
        window.display();
    }
      return 0;
    system("pause");
    }
Добавлено через 2 часа 20 минут
Все еще актуально.

Добавлено через 2 часа 8 минут
Актуально

Добавлено через 5 часов 29 минут
Можно ли вообще так освобождать и выделять память?
 
Текущее время: 14:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru