|
Страуструп
|
|
Ошибка: Нарушение прав доступа17.01.2011, 18:39. Показов 1975. Ответов 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
Ошибка: нарушение прав доступа по адресу Ошибка: нарушение прав доступа при чтении Ошибка: Нарушение прав доступа при чтении |
| 17.01.2011, 18:56 | |
|
Не по теме: Ник, конечно.... :good:
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
| 18.01.2011, 05:24 | ||||||
Сообщение было отмечено как решение
Решение
в функции ReadMinterms() тоже неправильно tempCube[e][1]=D;, что за 1 ?
0
|
||||||
| 18.01.2011, 05:24 | |
|
Помогаю со студенческими работами здесь
3
Ошибка обращения к строке (нарушение прав доступа чтения) Ошибка: нарушение прав доступа при чтении по адресу Ошибка времени исполнения: нарушение прав доступа при чтении Ошибка 0xC0000005: нарушение прав доступа при чтении по адресу 0x3854BDD4 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|