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

сегментация - C++

Восстановить пароль Регистрация
 
Alexandra777
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 34
21.09.2012, 21:34     сегментация #1
dev ругался на system("PAUSE") изменила на getc(stdin)....итог один___---windows выдает ошибку и прекращает работу...."Ваша программа вызвала нарушение доступа (ошибку сегментации)".


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
#include<stdio.h>
#include<conio.h>
#include <cstdlib>
#include<time.h>
#include<iostream>
#define MaxX 100
#define MaxY 100
void Delete(int a[MaxX][MaxY],int n);
//using namespace std;
int main()
{
//clrscr();
int a[MaxX][MaxY];
srand( (unsigned)time( NULL ) );
 
int i,j;
 
for(i=0;i<MaxX;i++)
{
for(j=0;j<MaxY;j++)
{
a[i][j]=rand();
}
}
 
Delete(a,7);
 
for(i=49;i<=68;i++)
{
Delete(a,i);
}
return 0;
}
 
void Delete(int a[MaxX][MaxY],int n)
 
{
int i,j,k;
 
for(i=n;i<MaxX-1;i++)
{
for(j=0;j<MaxY;j++)
{
a[i][j]=a[i+1][j];
}
}
 
for(j=0;j<MaxY;j++)
{
a[MaxX][j]=0;
}
getc(stdin);
} 
//getch();
//system("PAUSE");
//return EXIT_SUCCESS;
//getch();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 21:34     сегментация
Посмотрите здесь:

Сегментация памяти Assembler
Сегментация изображений
Интерактивная сегментация Delphi
C# Сегментация изображений
Matlab Сегментация изображения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
severus-x
18 / 18 / 0
Регистрация: 21.09.2012
Сообщений: 78
21.09.2012, 21:36     сегментация #2
Я так понимаю Вам это для того, чтобы консолька не закрывалась сразу после выполнения программы?
Если так, то попробуйте:
cin.get();
если не используете using namespace std; то
std::cin.get();
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:39     сегментация #3
не компилируется и не работает - разные вещи. программа сперва компилируется. и вот заменой system("pause") на что-то привело к компиляции программы. но т.к. в коде есть ошибки, то они проявляются уже во время выполнения скомпилированной программы. где-то за массив вылезли скорее всего.
severus-x
18 / 18 / 0
Регистрация: 21.09.2012
Сообщений: 78
21.09.2012, 21:41     сегментация #4
C++
1
2
3
for(i=0;i<MaxX;i++)
{
for(j=0;j<MaxY;j++)
попробуйте
C++
1
2
3
for(i=0;i<MaxX-1;i++)
{
for(j=0;j<MaxY-1;j++)
массивы же с нуля нумеруются.
Alexandra777
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 34
21.09.2012, 21:42  [ТС]     сегментация #5
Вы не могли бы помочь с обнаружением ошибки?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:42     сегментация #6
зачем гадать. нужно точно знать.
C++
1
2
3
4
//строка 50
a[MaxX][j]=0;
//исправить на
a[MaxX-1][j]=0;
severus-x
18 / 18 / 0
Регистрация: 21.09.2012
Сообщений: 78
21.09.2012, 21:44     сегментация #7
DU, и там тоже, да
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:47     сегментация #8
j<MaxY
значит, что тело цикла не будет выполнятся, если j >= MaxY. значит j<MaxY-1 - нет смысла так писать. этот код корректный. выход за пределы не происходит.
Alexandra777
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 34
21.09.2012, 22:18  [ТС]     сегментация #9
......

Добавлено через 9 минут
Цитата Сообщение от DU Посмотреть сообщение
j<MaxY
значит, что тело цикла не будет выполнятся, если j >= MaxY. значит j<MaxY-1 - нет смысла так писать. этот код корректный. выход за пределы не происходит.
подскажите пожалуйста,в чем допущена оплошность:требуется ввести размер матрицы,вводим допустим 5,происходит вывод на экран,далее следует выбор: удалить одну строку(выбираем 1) либо удалить несколько( выбираем 2).допустим вводим 1.Следует вопрос "какую строку удалить".вводим к примеру 3....происходит выполнение ,но за доли секунды консоль закрывается,хоть есть "торможение" и system("PAUSE") было и getc(stdin) и тд..
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
21.09.2012, 22:27     сегментация #10
Цитата Сообщение от Alexandra777 Посмотреть сообщение
a[MaxX][j]=0;
вот здесь выход за границы массива

Цитата Сообщение от Alexandra777 Посмотреть сообщение
void Delete(int a[MaxX][MaxY],int n)
{
........
getc(stdin);
}
вообще то это getc(stdin); в main нужно а не в Delete
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 22:42     сегментация
Еще ссылки по теме:

Сегментация изображения
C# Сегментация изображений
C++ Qt Сегментация изображений

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

Или воспользуйтесь поиском по форуму:
severus-x
18 / 18 / 0
Регистрация: 21.09.2012
Сообщений: 78
21.09.2012, 22:42     сегментация #11
ValeryS, ой точно) чего-то я затупил)
Yandex
Объявления
21.09.2012, 22:42     сегментация
Ответ Создать тему
Опции темы

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