Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Страуструп
1

Ошибка: Нарушение прав доступа

17.01.2011, 18:39. Показов 1832. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, пишу программу для минимизации канонических выражений (сумм минтермов).
Проблема такая - всё компилируется, а при запуске(после ввода символов с клавиатуры
VS2008 выдает следующее:

Первый этап обработки исключения в "0x0041181a" в "shablon.exe": 0xC0000005: Нарушение прав доступа при записи "0xccccccd0".
Необработанное исключение в "0x0041181a" в "shablon.exe": 0xC0000005: Нарушение прав доступа при записи "0xccccccd0".
Программа "[1280] shablon.exe: Машинный код" завершилась с кодом 0 (0x0).


ТЕКСТ ПРОГРАММЫ:


#include "stdafx.h"
#include<iostream>
#include <string>
#include <sstream>
#include <fstream>
#include<algorithm>
#include<stdexcept>
using namespace std;


#define TRUE 1
#define FALSE 1
#define MAX_CUBES 50
#define MAX_VARS 2

typedef unsigned short WORD;

struct cube{
WORD t; //собственно минтерм
WORD f; //его дополнение
};

typedef struct cube CUBE;


// ========== Функции ====================================
//========================================================
//======== переводит число из формата string в формат unsigned_short =======================
unsigned short string_to_unsigned_short( const string& s )
{
istringstream i(s);
unsigned short x;
if (!(i >> x))
return 0;
return x;
}
//== Считывает строки-минтермы с клавиатуры
void ReadMinterms(CUBE** tempCube)
{
string S;
CUBE D;
for (int e=0; e<MAX_VARS; e++){
cout<<"Enter minterm: "<<e<<endl;
getline(cin,S);
D.t= string_to_unsigned_short(S);
D.f=1^D.t;
tempCube[e][1]=D;
}
}


//проверяет содержит ли w точно одну 1
int Oneone(WORD w)
{
int ones,b;
ones=0;
for (b=0; b<MAX_VARS; b++){
if (w&1) ones++;
w=w>>1;
}
return((ones==1));
}

int Combinable(CUBE C1, CUBE C2)
{
WORD twordt, twordf;

twordt=C1.t^C2.t;
twordf=C1.f^C2.f;
return( (twordt==twordf)&&Oneone(twordt));
}


void Combine(CUBE C1, CUBE C2, CUBE *C3)
{
C3->t = C1.t&C2.t;
C3->f = C1.f&C2.f;
}


//проверка на равенство
int EqualCubes(CUBE C1, CUBE C2)
{
return ((C1.t==C2.t)&&(C1.f==C2.f));
}



void main()
{
CUBE cubes[MAX_VARS+1][MAX_CUBES];
int covered[MAX_VARS+1][MAX_CUBES];
int numCubes[MAX_VARS+1];
int m;
int j,k,p;
CUBE tempCube;
int found;
//инициализация числа m-кубов каждого уровня m
for (m=0; m<MAX_VARS+1; m++) numCubes[m]=0;
CUBE* pT=&tempCube;
ReadMinterms(&pT);

for (m=0; m<MAX_VARS; m++){
for (j=0; j<numCubes[m]; j++){
for (k=j+1; k<numCubes[m]; k++){
if (Combinable(cubes[m][j], cubes[m][k])){
//отмечаем покрытые кубы
covered[m][j]=TRUE; covered[m][k]=TRUE;
Combine(cubes[m][j],cubes[m][k], &tempCube);
found=FALSE;
for (p=0; p<numCubes[m+1];p++)
if (EqualCubes(cubes[m+1][p],tempCube)) found=TRUE;
if (!found) {
numCubes[m+1]=numCubes[m+1]+1;
cubes[m+1][numCubes[m+1]-1]=tempCube;
covered[m+1][numCubes[m+1]-1]=FALSE;
}
}
}
}
}
cube A;
for (m=0;m<MAX_VARS; m++){
for (j=0;j<numCubes[m];j++){
if (!covered[m][j]) {
A=cubes[m][j];
cout<<A.f<<endl;
cout<<A.t<<endl;
}
}
}
}
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2011, 18:39
Ответы с готовыми решениями:

Ошибка: нарушение прав доступа по адресу
Добрый день! Очень надеюсь на вашу помощь. Пыталась написать программу, которая строит все...

Ошибка: нарушение прав доступа при чтении
Помогите решить ошибку, если отдельно вызывать функции double det(macierz *A,macierz*B,int u) ...

Ошибка: Нарушение прав доступа при чтении
Всем привет, решил в проект добавить функцию элементарную void MyClass::mouseMove() {...

Ошибка:нарушение прав доступа при записи по адресу
Помогите понять в чём ошибка. Моя программа должна заменять числа из шестнадцатиричной системы...

2
asics
17.01.2011, 18:56
  #2

Не по теме:

Ник, конечно.... :good:

0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.01.2011, 05:24 3
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
    CUBE tempCube;
    int found;
    //инициализация числа m-кубов каждого уровня m
    for (m=0; m<MAX_VARS+1; m++) numCubes[m]=0;
    CUBE* pT=&tempCube;
    ReadMinterms(&pT);
тут видимо нужно создать указатель на массив указателей, а не одну структуру
в функции ReadMinterms() тоже неправильно tempCube[e][1]=D;, что за 1 ?
0
18.01.2011, 05:24
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2011, 05:24
Помогаю со студенческими работами здесь

Ошибка обращения к строке (нарушение прав доступа чтения)
Добрый всем день немогу разобраться что за ошибка и как ее локализовать код и скрин прикреплены

Ошибка: нарушение прав доступа при чтении по адресу
Код: #include &lt;SFML/Graphics.hpp&gt; int M = 3; int N = 3; int Scale = 100; int w = Scale*M;...

Ошибка времени исполнения: нарушение прав доступа при чтении
Как исправить. В функции decode вторая строка. Необработанное исключение по адресу 0x00FD6A4F в...

Ошибка 0xC0000005: нарушение прав доступа при чтении по адресу 0x3854BDD4
задание: поменять местами отрицательные элементы массива с положительными. почему то выдает ошибку?...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru