Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2019, 12:59   #1
AIsi
Новичок
Джуниор
 
Регистрация: 26.10.2019
Сообщений: 2
Вопрос Как исправить ошибку / исключение?

Выдает ошибку

Программа упирается в исключение:

Необработанное исключение по адресу 0x00D02867 в Нахождение простых чисел (сп.2).exe: Код инструментирования RangeChecks обнаружил обращение к массиву по индексу, выходящему за его пределы.

Помогите пожалуйста исправить

Код:
#include <iostream>
#include <conio.h>

using std::cout;
using std::cin;
using std::endl;

int main()
{
	const int N = 100;
	bool A[N];
	int i, j(0);

	for (i = 0; i < N; i++)
	{
		A[i] = true;
	}

	for (i = 2; i < N; i++)
	{
		for (j = i; j < N;)
		{
			j = j + i;
			A[j] = false;
		}
	}

	for (i = 3; i < N; i++)
		if (A[i])
			cout << i << "\n";

	_getch();
	return 0;
}
______________________
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Вадим Мошев; 26.10.2019 в 15:07.
AIsi вне форума Ответить с цитированием
Старый 26.10.2019, 13:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
for (i = 2; i < N; i++)
{
for (j = i; j < N
{
j = j + i;
A[j] = false;
}
}
i = N / 2; j = N / 2; j = j + i = N; A[j] oops... а у вас и дальше бегается
p51x вне форума Ответить с цитированием
Старый 26.10.2019, 14:25   #3
AIsi
Новичок
Джуниор
 
Регистрация: 26.10.2019
Сообщений: 2
По умолчанию

for (j = i; j < N
{
j = j + i;
if(j < N)
A[j] = false;
}

нужно просто ограничить, чтобы j не выходила за границу массива
т.к. он подставит ((j)14 = (j)14 + (i)14 = 28) в A[28] - false но такого нет. По этому пусть проверит что-бы j не превысила массив

вот так решил
AIsi вне форума Ответить с цитированием
Старый 26.10.2019, 14:27   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Это говорит, что с алгоритмом тут что-то не то.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку "Исключение не обработано" arnora Visual C++ 4 12.05.2018 17:36
Написал программу, телефонная книга. Выскакивает ошибка, что необработанно исключение. Как исправить? NaTenMind Общие вопросы C/C++ 2 26.07.2017 17:12
выдает ошибку проект Project1.exe вызвал исключение класса EConvertError с сообщением ''0.00005' is not a valid floating point value' Daytalt Общие вопросы Delphi 1 10.05.2017 20:39
Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу Анастасия_18 Общие вопросы C/C++ 3 16.07.2014 09:57