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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
spector32
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 4
#1

Почему ошибка? - C++

20.04.2012, 20:47. Просмотров 507. Ответов 12
Метки нет (Все метки)

Почему ошибка?

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.

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
#include <iostream>
#include <conio.h>
#include <string>
#include <iomanip>
 
using namespace std;
 
int main()
{
    
    int a[10][10];
 
    for(int i=0; i<=10; i++)
        for(int i2=0; i2<=10; i2++)
            a[i][i2]=i*i2;
 
    for(int i=0; i<=10; i++)
    {
        for(int i2=0; i2<=10; i2++)
        cout<<setw(3)<<a[i][i2]<<" ";
        cout<<endl;
    }
 
 
 
    getche();
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
saserlend
10 / 10 / 1
Регистрация: 25.11.2011
Сообщений: 139
20.04.2012, 20:51     Почему ошибка? #2
[i2] если не ошибаюсь сделай [j]
NoMasters
Псевдослучайный
1744 / 1087 / 71
Регистрация: 13.09.2011
Сообщений: 3,111
20.04.2012, 20:53     Почему ошибка? #3
Выход за пределы массива, нет там десятых элементов.
spector32
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 4
20.04.2012, 20:55  [ТС]     Почему ошибка? #4
Цитата Сообщение от saserlend Посмотреть сообщение
[i2] если не ошибаюсь сделай [j]
Ничё не изменилось...

Добавлено через 39 секунд
Цитата Сообщение от NoMasters Посмотреть сообщение
Выход за пределы массива, нет там десятых элементов.
C++
1
a[10][10];
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
20.04.2012, 20:57     Почему ошибка? #5
в условии циклов поставь строгое сравнение < 10
spector32
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 4
20.04.2012, 21:03  [ТС]     Почему ошибка? #6
Цитата Сообщение от antoha398 Посмотреть сообщение
в условии циклов поставь строгое сравнение < 10
Я начинающий, у чела который ведёт урок по C++ всё работаем. Это таблица умножения до 100.

Мне надо чтобы было <=10;
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
20.04.2012, 21:05     Почему ошибка? #7
DELETED
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
20.04.2012, 21:06     Почему ошибка? #8
тогда сиди с ошибкой.

либо массив больше делай
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
20.04.2012, 21:08     Почему ошибка? #9
spector32, вы объявляете массив из 10 элементов. В С++ индексация элементов идет с 0. Первый элемент в данном случае 0-вой, последний 9-ый. Вы вышли за пределы, когда указали <= 10, так как нет у вас элемента с индексом 10.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2012, 21:12     Почему ошибка? #10
Цитата Сообщение от spector32 Посмотреть сообщение
int a[10][10];
for(int i=0; i<=10; i++)
* * * * for(int i2=0; i2<=10; i2++)
Массивы начинаются с ноля, но в скобках количество элементов, поэтому последний - девятый.

Добавлено через 3 минуты
Цитата Сообщение от saserlend Посмотреть сообщение
[i2] если не ошибаюсь сделай [j]
Слишком сложно придумать язык, чей компилятор мог бы на это реагировать даже в варианте ручной компиляции. Лет 300 после создания подлинного искусственного интеллекта точно не смогут. Да и не нужно это.
spector32
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 4
20.04.2012, 21:14  [ТС]     Почему ошибка? #11
Цитата Сообщение от Toshkarik Посмотреть сообщение
spector32, вы объявляете массив из 10 элементов. В С++ индексация элементов идет с 0. Первый элемент в данном случае 0-вой, последний 9-ый. Вы вышли за пределы, когда указали <= 10, так как нет у вас элемента с индексом 10.
Спасибо! Въехал!
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2012, 21:16     Почему ошибка? #12
1. 0-й,
2. 1-й,
3. 2-й.
4. 3-й.
5. 4-й.
6. 5-й.
7. 6-й.
8. 7-й.
9. 8-й.
10. 9-й.
Принцип понятен? Если начинаешь с нуля, то номер на 1 меньше индекса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2012, 23:37     Почему ошибка?
Еще ссылки по теме:

Калькулятор, почему возникает ошибка? C++
Почему ошибка? C++
Почему ошибка? C++
C++ О работе new, почему выходит ошибка?
C++ Почему возникает эта ошибка?

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

Или воспользуйтесь поиском по форуму:
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
20.04.2012, 23:37     Почему ошибка? #13
Цитата Сообщение от spector32 Посмотреть сообщение
Я начинающий, у чела который ведёт урок по C++ всё работаем. Это таблица умножения до 100.

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
#include <iostream>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
int main()
{
    
    int a[10][10] = {0};
 
    for(int i = 0; i < 10; i++)
        for(int i2= 0; i2 < 10; i2++)
            a[i][i2] = (i + 1) * (i2 + 1);
 
    for(int i = 0; i < 10; i++)
    {
        for(int i2 = 0; i2 < 10; i2++)
        cout << setw(3) << a[i][i2] << " ";
        cout<<endl;
    }
 
 
 
    getche();
 
    return 0;
}
Yandex
Объявления
20.04.2012, 23:37     Почему ошибка?
Ответ Создать тему
Опции темы

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