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

Ошибка "String subscript out of range" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Зацикливание при сравнении строк http://www.cyberforum.ru/cpp-beginners/thread1176223.html
Добрый вечер. У меня возникла проблема при сравнивании строк, после сравнивания происходит расчет по циклу и далее по идее должно переходить к циклу по , но программа зацикливается на здесь, вечно накапливает k и ничего толкового не считает. Почему зацикливается? if(strcmp(sell.FIO,sell.FIO)==0 && sell.FIO!="\0") { k++; strcpy(sell.FIO,"\0"); st.at=st.at+sell.at; st.ves=st.ves+sell.ves;...
C++ Программирование задач с использованием файлов Тема "Программирование задач с использованием файлов " Найти количество положительных элементов двумерного массива в парных строках. http://www.cyberforum.ru/cpp-beginners/thread1176221.html
C++ Составить программу, заполняющую экран закрашенными прямоугольными треугольниками
Составить программу, заполняющую экран закрашенными прямоугольными треугольниками, заполненными установленными ранее шаблонами закраски.
Создать класс для работы с двумерным динамическим массивом чисел C++
Создать класс для работы с двумерным динамическим массивом чисел. Методы: -заполнить массив рандомно. -вывести массив. И конструктор, позволяющий создать массив размерности n на n. В общем то задача не сложная, но проблема с конструктором для двумерного динамического массива. В моем варианте выдает что-то вроде - нарушение прав доступа при чтении 0хсссссссс (вроде так). Хотя если...
C++ Удаление самого длинного слова в файле http://www.cyberforum.ru/cpp-beginners/thread1176179.html
Всем доброго времени суток, помогите пожалуйста доделать задачу: Вот условие: Напишите программу, которая считывает текст из файла и удаляет самое длинное слово в тексте. Необходимо предусмотреть случай, если файла не существует. Здесь реализовано поиск и вывод самого длинного слова в файле #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include...
C++ Подкорректируйте прогу (перевод двоичного числа в десятичное) Добрый день. Компилирую через Visual проект. Перевод из двоичного числа в десятичный, но выскакивает консоль и быстро закрывается при вводе числа. Помогите, может добавить надо что-либо или что ( Сам код: #include "stdafx.h" #include <iostream> using namespace std; подробнее

Показать сообщение отдельно
Fr1kson
22 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 48
14.05.2014, 22:03     Ошибка "String subscript out of range"
C++ (Qt)
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <SFML/Graphics.hpp>
using namespace sf;
int ground = 400;
int i;
 
const int H = 12;
const int W = 40;
 
 
String TileMap[H] = {
 
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"B                                B     B",
"B                                B     B",
"B                                B     B",
"B                                B     B",
"B                        BBBB          B",
"B                                B     B",
"BBB                              B     B",
"B              BB                BB    B",
"B              BB                      B",
"B    B         BB         BB           B",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
 
}; 
 
 
 
class PLAYER {
public:    
    float dx,dy; // скорость
    FloatRect rect; // rect - переменная в которй хранятся координаты Hero
    bool onGround; // переменная которая отвечает за местоположение Hero(на земле или нет)
    Sprite sprite;
    float currentFrame;// текущий кадр
    
    PLAYER(Texture &image)
    {
        sprite.setTexture(image); //загрузка картинки
        rect = FloatRect(0,0,50,50);
 
        dx=dy=0.1;
        currentFrame = 0;
    }
 
    void update(float time)
   {    
 
     rect.left += dx * time;    
     CollisionX(); //столкновение героя по X
 
     if (!onGround) dy=dy+0.0005*time; //если Hero не на земле то он падает с ускорением 0.0005
     rect.top += dy*time; //rect.top координата y
     onGround=false;
     CollisionY();
     if(rect.top > ground) {rect.top = ground ;dy=0; onGround = true;}
 
     currentFrame +=0.005*time;
     if(currentFrame > 9) currentFrame -=9;
 
     if (dx>0) sprite.setTextureRect(IntRect(50*int(currentFrame),200,50,50));
     if (dx<0) sprite.setTextureRect(IntRect(50*int(currentFrame)+50,200,-50,50));
 
     sprite.setPosition(rect.left, rect.top);
     dx=0;
   }
    void CollisionX()// столкновение героя по X
    {
        for(int j =rect.top/32; j<(rect.top+rect.height)/32; j++)
            for(int j =rect.left/32; j<(rect.left+rect.width)/32; j++)
            {
                if(TileMap[i][j]=='B') //если одна из плиток явл стенкой
                {
                    if(dx>0) rect.left = j*32 - rect.width;
                    if(dx<0) rect.left = j*32 + 32;
                }
            }
    }
    void CollisionY()// столкновение героя по Y
    {
        for(int j =rect.top/32; j<(rect.top+rect.height)/32; j++)
            for(int j =rect.left/32; j<(rect.left+rect.width)/32; j++)
            {
                if(TileMap[i][j]=='B') //если одна из плиток явл стенкой
                {
                    if(dx>0) {rect.top = i*32 - rect.height; dy=0; onGround= true;}
                    if(dx<0) {rect.top = i*32 + 32; dy=0;}
                }
            }
    }
};
int main()
{
    RenderWindow window( VideoMode(600, 450), "Platformer"); // создание окна размером 400х600 под названием Platformer
    
    Texture t; // загруза персонажа
    t.loadFromFile("hero.png");
 
    float currentFrame=0; // переменная в которой хранится номер текущего кадра
 
    PLAYER p(t);
 
    Clock clock;
 
    RectangleShape rectangle;
 
    while (window.isOpen())
    {
        float time = clock.getElapsedTime().asMicroseconds();
        clock.restart();
        time = time/500;
 
        Event event; // открытие и закрытие окна
        while (window.pollEvent(event))
        {
            if(event.type==Event::Closed)
                window.close();
        }
        if(Keyboard::isKeyPressed(Keyboard::Left))
        {
            p.dx = -0.1;
        }
        if(Keyboard::isKeyPressed(Keyboard::Right))
        {
            p.dx = 0.1;
        }
        if(Keyboard::isKeyPressed(Keyboard::Up))
        {
            if(p.onGround) {p.dy=-0.35; p.onGround=false;} //если Hero на земле только тогда он может прыгнуть
        }
        p.update(time);
 
        window.clear(Color::White);
 
        for(int i=0; i<H; i++)
            for(int j=0; j<W; j++)
            {
                if(TileMap[i][j]=='B') rectangle.setFillColor(Color::Black);
                if(TileMap[i][j]==' ') continue;
 
                rectangle.setPosition(j*32,i*32) ;
                rectangle.setSize(Vector2f(32.0,32.0));
                window.draw(rectangle);
            }
 
        window.draw(p.sprite);
        window.display(); // вывод на экран
    }
    return 0;
}
вот собственно мой код.
Ошибка "String subscript out of range"
ошибки в основном с необявленной переменной i, но как только я ее объявляю выскакивает иная ошибка
ПОДСКАЖИТЕ ЧТО СДЕЛАТЬ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru