Форум программистов, компьютерный форум 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

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

14.12.2013, 21:56. Просмотров 561. Ответов 12
Метки (Все метки)

Всем привет. Пишу игру на c++. Смысл состоит в том чтобы отстреливать группы врагов, которые появляются сразу после уничтожения предыдущей и в большем количестве. Застрял я на реализации появления новых групп.
Пытаюсь реализовать так(часть кода в которой ошибка):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <SFML/Graphics.hpp>/*Графическая библиотека SFML*/
#include <iostream>
int lvl = 0, en_kol = 0; /*уровень, кол-во врагов*/
int main(){
Enemy *en = new Enemy[1];/* первый раз создается массив класса enemy*/
    while (window.isOpen())
    {
    
    if(en_kol == 0){
        delete [] en; /*чистим память*/
            lvl++;/*уровень повышается*/
            en_kol = lvl*2;
            Enemy *en = new Enemy[en_kol];/*создаем новый массив и действуем дальше с ним*/
        
    }
}
system("pause");
return 0;
}
Программа вылетает при убийстве первой группы с ошибкой "string subscript out of range", однако если убрать
C++
1
lvl++;
, то все нормально работает.
Вопрос: как это исправить или как по другому реализовать появление новых групп?
PS: В такой программе все работает.
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
#include <iostream>
using namespace std;
class A{
public:
    int g;
    A(){
        cout<<"object has been created"<<endl;
    }
        ~A(){
        cout<<"object has been deleted"<<endl;
    
    }
};
int main(){
    int size = 10;
A *p = new A[size];
for (int i = 0;i<100;i++){
delete [] p;
p = NULL;
size++;
A *p = new A[size];
}
    system("pause");
return 0;
}
PPS: Я в c++ новичок, поэтому просьба не смеяться с моих методов =)

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

Добавлено через 2 часа 16 минут
Все еще актуально.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru