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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2009, 23:15   #1
Troi666
Пользователь
 
Регистрация: 01.12.2008
Сообщений: 58
По умолчанию Ошибка при вводе двумерного динамического массива 004015E3 | Borland C++Builder 6.0 | C++

Доброго времени суток всем. Помогите пожалуйста найти ошибку. Суть следующая. При выполнении кода (приведён ниже) в некоторых ситуациях выскакивает ошибка: "Project Project2.exe raised exeption class EAccessViolation with message Access violation at address 004015E3. Write of address 00000035`. Process stopped. Use Step or Run to continue." Компилятор C++Builder 6. Язык C++ Но думаю не в нём дело, а в кривых руках Ошибка вылезает не при первом выполнении программы, а при последующих. Вылезает при вводе последнего элемента матрицы.
Чтобы получить ошибку 100%, нужно ввести в качестве размерности матрицы сначала 2*3. Прога завершится успешно. А потом запустить снова с параметрами 3*2. При вводе последнего элемента выскочит ошибка. Код проги прилагаю.
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <windows.h>
//---------------------------------------------------------------------------
int i,j;
char bufRus[256];
char* Rus (char* text)
{
        CharToOem(text,bufRus);
        return bufRus;
}

void main()
{
        int n,m,flag;
        cout<<Rus("Введите количество строк: ");
        cin>>n;
        cout<<Rus("Введите количество столбцов: ");
        cin>>m;
        int **matr=new int *[n];
        for (i=0;i<m;i++)
                matr[i]=new int[m];
        for (i=0;i<n;i++)
                for (j=0;j<m;j++)
                {
                        cout<<Rus("Введите элемент [")<<i+1<<"]["<<j+1<<"]: ";
                        cin>>matr[i][j];
                }
        cout<<Rus("\nИсходная матрица: \n");
        getch();
        return;
}
//---------------------------------------------------------------------------
Тормозит в иостриме на функции

Код:
  _Self& operator>> (int& __val) { 
    long __lval;
    unsigned int __uval;
    _M_get_num(*this, __lval);
    __val = __lval;
    __uval = __lval;
    // check if we lose digits
    //    if ((__val != __lval) && ((unsigned int)__val != __lval))
    if ((__val != __lval) && ((long)__uval != __lval))
      this->setstate(ios_base::failbit); 
    return *this;
А точнее на строке
Код:
 __val = __lval;

Последний раз редактировалось Troi666; 18.04.2009 в 00:43.
Troi666 вне форума Ответить с цитированием
Старый 18.04.2009, 07:53   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

int **matr=new int *[n]; //выделено памяти для ? элементов
for (i=0;i<m;i++) .//обработано ? элементов
matr[i]=new int[m];

в комментариях вместо знака вопроса поставь используемые значения(переменные)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 19.04.2009, 13:42   #3
Troi666
Пользователь
 
Регистрация: 01.12.2008
Сообщений: 58
По умолчанию

Мдя...
Случай 1:

Код:
int **matr=new int *[n]; //выделено памяти для 3 элементов
for (i=0;i<m;i++) .//обработано 2 элемента
matr[i]=new int[m];
Случай 2:

Код:
int **matr=new int *[n]; //выделено памяти для 2 элементов
for (i=0;i<m;i++) .//обработано 3 элемента
matr[i]=new int[m];
Спасибо!
Troi666 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при Выполнении Insert nimf БД в Delphi 2 27.11.2007 18:16
При выполнении запроса из проекта пропадает связь с сервером D-mon БД в Delphi 4 19.11.2007 12:24
Ошибка при выполнении запроса Шани БД в Delphi 4 27.07.2007 13:04
Странная ошибка при выполнении okolobaxa Общие вопросы Delphi 2 03.07.2007 00:47
Ошибка при выполнении запроса Elena БД в Delphi 3 14.06.2007 15:13