Страуструп
|
|
1 | |
Ошибка: Нарушение прав доступа17.01.2011, 18:39. Показов 1832. Ответов 2
Метки нет (Все метки)
Здравствуйте, пишу программу для минимизации канонических выражений (сумм минтермов).
Проблема такая - всё компилируется, а при запуске(после ввода символов с клавиатуры 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; } } } } |
17.01.2011, 18:39 | |
Ответы с готовыми решениями:
2
Ошибка: нарушение прав доступа по адресу Ошибка: нарушение прав доступа при чтении Ошибка: Нарушение прав доступа при чтении Ошибка:нарушение прав доступа при записи по адресу |
asics
|
17.01.2011, 18:56
#2
|
Не по теме: Ник, конечно.... :good:
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
18.01.2011, 05:24 | 3 | |||||
Сообщение было отмечено как решение
Решение
в функции ReadMinterms() тоже неправильно tempCube[e][1]=D;, что за 1 ?
0
|
18.01.2011, 05:24 | |
18.01.2011, 05:24 | |
Помогаю со студенческими работами здесь
3
Ошибка обращения к строке (нарушение прав доступа чтения) Ошибка: нарушение прав доступа при чтении по адресу Ошибка времени исполнения: нарушение прав доступа при чтении Ошибка 0xC0000005: нарушение прав доступа при чтении по адресу 0x3854BDD4 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Какой язык программирования лучший для разработки нейронных сетей
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 работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
|