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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
KGotin-807
2 / 2 / 1
Регистрация: 17.07.2010
Сообщений: 13
#1

Ошибка сегментации - C++

28.07.2010, 14:43. Просмотров 2661. Ответов 9
Метки нет (Все метки)

Здравствуйте, написал программу, запускаю- Windows пишет: "обнаружена ошибка. Приложение будет закрыто". Ошибка в функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool prov(int re[2][2]){
     int i=0,j=0;
     bool r;
     if ((re[i][j]==re[i+1][j+1])and(re[i][j]==re[i+2][j+2])){r=true;};
     
     if ((re[i][j]==re[i-1][j+1])and(re[i][j]==re[i-2][j+2])){r=true;};
     
     for(i=0;i<=3;i++){
     if ((re[i][0]==re[i][1])and(re[i][1]==re[i][2])){r=true;};};
     
     for(i=0;i<=3;i++){
     if ((re[0][i]==re[1][i])and(re[1][i]==re[2][i])){r=true;};};
     
    
     return r;};
Dev-C++ пишет: "Ваша программа вызвала нарушение доступа (ошибку сегментации)".

В чем дело и что такое сегментация?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2010, 14:43     Ошибка сегментации
Посмотрите здесь:

ошибка сегментации - C++
Всем привет! Я никогда не программировал, а тут решил склепать небольшую программку. Да вот только не могу понять почему выскакивает...

Ошибка сегментации - C++
Зарание благодарен за помощ собственно вот мой код . он должен считывать информацию о процессе с фалйа ,а принимать на вход пид процесса ...

Ошибка сегментации - C++
Здравствуйте. Скажите, почему так делать нельзя? class A { public: A* array; //массив A() { //Ошибка...

ошибка сегментации - C++
где может быть ошибка?

Ошибка сегментации - C++
int main() { int mas; } Объясните, почему такой код привод к ошибке? (компилятор VS 2012)

Ошибка сегментации. - C++
Здравствуйте, дорогие форумчане! Тут такое дело, есть программа, код приведен ниже, там есть некоторый массив D. После компиляции...

Ошибка Сегментации - C++
Всем привет! При выполнении кода вылетает ошибка: &quot;Ваша программа вызвала нарушение доступа(ошибку сегментации)&quot;. Как это...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
28.07.2010, 15:11     Ошибка сегментации #2
Ты вышел за границы массива. Двумерный массив re имеет размерность 2x2, поэтому обратиться к элементу re[-2][2], к примеру, будет ошибкой. И первый, и второй индексы re могут меняться только в пределах от 0 до 1
KGotin-807
2 / 2 / 1
Регистрация: 17.07.2010
Сообщений: 13
28.07.2010, 16:12  [ТС]     Ошибка сегментации #3
Спасибо, но такая же ошибка даже если функция выглядит так
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool prov(int re[2][2]){
     int i=0,j=0;
     bool r;
        
     for(i=0;i<=2;i++){
     if ((re[i][0]==re[i][1])and(re[i][1]==re[i][2])){r=true;};};
     
     for(i=0;i<=2;i++){
     if ((re[0][i]==re[1][i])and(re[1][i]==re[2][i])){r=true;};};
     
    
     return r;};
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
28.07.2010, 16:16     Ошибка сегментации #4
Цитата Сообщение от KGotin-807 Посмотреть сообщение
C++
1
2
for(i=0;i<=3;i++)
    {if ((re[i][0]==re[i][1])and(re[i][1]==re[i][2])){r=true;};};
Когда счетчик i примет значение 2, то первое же выражение (re[i][0]) приведет к выходу за границы массива.

Не по теме:

А что за задача, если не секрет?

CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.07.2010, 16:26     Ошибка сегментации #5
KGotin-807, нумерация элементов массивов начинается с нуля. Индекс последнего елемента массива размером n будет n - 1.
KGotin-807
2 / 2 / 1
Регистрация: 17.07.2010
Сообщений: 13
28.07.2010, 16:29  [ТС]     Ошибка сегментации #6
Разве в C массив
C++
1
 int re[2][2];
не тоже самое, что в Pascal'е
Pascal
1
re: array [0..2,0..2] of integer;
?

Задача-не секрет, текстовый вариант крестиков-ноликов.

Спасибо.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.07.2010, 16:32     Ошибка сегментации #7
KGotin-807, нет, int re[n][m] в переводе на Pascal (да простит меня C++) re: array [0..n-1,0..m-1] of integer
MikeSoft
Эксперт С++
3792 / 1774 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
28.07.2010, 16:32     Ошибка сегментации #8
KGotin-807, объявление
C++
1
int re[2][2];
говорит о том, что будет создан двумерный массив типа int размерностью 2х2.
Нумерация полей начинается с нуля.
Поэтому, элементы, доступные для чтения/записи будут иметь индексы:
Код
[0][0]
[0][1]
[1][0]
[1][1]
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
28.07.2010, 16:33     Ошибка сегментации #9
C++
1
int re[2][2];
- эта запись означает, что ты выделяешь память для двумерного массива размерностью 2х2. В Паскале это будет выглядеть так:
Pascal
1
re: array [0..1,0..1] of integer
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2010, 16:34     Ошибка сегментации
Еще ссылки по теме:

Непонятная ошибка сегментации - C++
Задание 1: в таблице хранятся данные о баллах учеников участвовавших в олимпиаде. Распечатать фамилии тех, кто набрал больше 30 баллов. ...

Непонятная ошибка сегментации - C++
В программе используется дерево, элементы которого описываются и создаются таким образом: struct Node { Node* children; int...

Ошибка сегментации из ниоткуда - C++
Суть программы составить матрицу смежности, затем найти вершину с наименьшей степенью. Проблема в том, что код, который заключен в...

Где возникает ошибка сегментации? - C++
где ошибка сегментации тыкните носом пожалуйста #include &lt;windows.h&gt; #include &lt;tchar.h&gt; LRESULT CALLBACK WndProc( HWND, UINT,...

Стек строк. Ошибка сегментации - C++
Привет всем! Программирую недавно, около месяца, в своей программе столкнулся с ошибкой сегментации. Не могу понять, в чем проблема. ...


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

Или воспользуйтесь поиском по форуму:
KGotin-807
2 / 2 / 1
Регистрация: 17.07.2010
Сообщений: 13
28.07.2010, 16:34  [ТС]     Ошибка сегментации #10
Спасибо, дошло.
Yandex
Объявления
28.07.2010, 16:34     Ошибка сегментации
Ответ Создать тему
Опции темы

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