На данный вопрос уже ответили:
Давно не писал на плюсах, но синтаксис то уж, вроде, помню. Вылетает эсепшн при попытке выделении памяти (в строке, где создается sum и выделяется под нее память):
int Newron::Handle(int inputs[])
{
float *sum = new float[m];
//float sum[10] = {0,0,0,0,0,0,0,0,0,0};
for (size_t i = 0; i < m; i++)
{
sum[i] = 0;
}
for (size_t i = 0; i < m; i++)
{
for (size_t j = 0; j < n; j++)
{
sum[i] += w[j][i] * inputs[j];
}
}
int maxIndex = FindMax(sum); // Находим максимально значимый
delete[] sum;
return maxIndex;
}
Вызвано исключение по адресу 0x77DC4BA4 (ntdll.dll) в New_NNKoh.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xBEA1E89B.
Подскажите пожалуйста, в чем я грешу. Полный код здесь Второй день борюсь, конкретно таких траблов не нашел на просторах всея сети Спасибо)
В SetWeight тоже самое перепутали n с m
inline void Newron::SetWeights()
{
srand(time(NULL));
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
w[i][j] = (RAND_MAX * rand()) % 2 / sqrt(m) - 1 / sqrt(m);
Имена переменных можно сделать поприкольнее, чтобы было понятно/
У Вас в FindMax() стоит цикл: for (size_t i = 0; i < n; i++), т.е. до n. А Вы скармливаете массив размером m. Вот и выходите за диапазон индексов у sum.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости