Форум программистов, компьютерный форум, киберфорум
Наши страницы

Память не может быть прочитана! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сложение в двоичной системе счисления http://www.cyberforum.ru/cpp-beginners/thread345129.html
//--------------------------------------------------------------------------- #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h>...
C++ Работа с памятью. (Незнаю как правильно назвать тему). Программа пример: #include <iostream> void main() { int a, b, c; std::cin >> a; std::cin >> b; http://www.cyberforum.ru/cpp-beginners/thread345119.html
C++ Взаимодействие процессов
Нужно написать задачу, в которой дано 10 процессов (там P1, P2, …, Р10, например) Функционирование и взаимодействие процессов следующее: • P1 (запускается пользователем): Запустить процессы P2, Р3,...
Среда разработки на Symbian 9.1 C++
Доброго времени суток. У меня есть старый Nokia E61(qwerty с Os 9.1). Так вот, суть: Я хочу заниматься кодингом когда PC не рядом. Есть ли под среды symbian? (С++) КОМПИЛЯЦИЯ НЕ ОБЯЗАТЕЛЬНА,...
C++ НОК для N чисел http://www.cyberforum.ru/cpp-beginners/thread345081.html
//--------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> ...
C++ Принятие русского шрифта в консоли Здрасте! Я написал програму, которая должна использовать русский шрифт, но она его не распознает. Для того, что бы она отображала русский текст, я добавил команду setlocale( LC_ALL,"Russian" ); но... подробнее

Показать сообщение отдельно
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149

Память не может быть прочитана! - C++

25.08.2011, 01:34. Просмотров 681. Ответов 8
Метки (Все метки)

Проблема возникает при копировании одного массива в другой. Я вроди просмотрел и размерности вроди совпадают, но может быть я что то упустил, какую нибудь мелочь и поэтому возникает ошибка. Прошу помочь выяснить в чем конкретно проблема.

Входные параметры функции: n=7, m=2, matr[][2]={{1,2},{0,3},{3,4},{2,6},{5,-1},{-1,-1},{5,-1}}, a={0,1,2,3,4,5,6}, Array={{-1,-1,-1,-1,-1,-1,-1},{0,1,2,3,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{5,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{4,6,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},}, fora=1, forArray=9.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
void part2(int n, int m, int matr[][2], int** a, int** Array, int& fora, int forArray)
{
int d2,d1,p1,p2,y1,y2,q1,q2;
 
for (int i=0; i<fora; i++) delete [] a[i];  //удаляем
delete [] a;                                //массив А
fora=forArray;                //новая расзмерность массива А ровна старой размерности массива Array
a = new int * [fora];                     //создаем
for (int i=0; i<fora; i++) a[i]=new int [n]; //новый массив А
 
for(int i=0; i<forArray; i++)   //копируем
{                               //элементы массива Array в
   for(int j=0; j<n; j++)       //массиву А
   {
   a[i][j]=Array[i][j];
   }
}
for (int i=0; i<forArray; i++) delete [] Array[i];  //удаляем
delete [] Array;                                    //массив Аrray
 //------------------------------
for(int i=0; i<n; i++)
{
   for(int j=0; j<m; j++)
   {
      if(j==0)
      {
         d1=matr[i][j];
      }
      else
      {
         d2=matr[i][j];
      }
   }
   p1=serchposition(d1,a,fora,n);
   p2=serchposition(d2,a,fora,n);
   for(int x=i+1; x<n; x++)
   {
      for(int y=0; y<m; y++)
      {
         if(y==0)
         {
            y1=matr[x][y];
         }
         else
         {
            y2=matr[x][y];
         }
      }
      q1=serchposition(y1,a,fora,n);
      q2=serchposition(y2,a,fora,n);
      if((p1==q1)&&(p2==q2))
      {
         forArray=forArray+1;
         Array = new int * [forArray];                        //создаем
         for (int i=0; i<forArray; i++) Array[i]=new int [n]; //новый массив Аrray
         for(int k=0; k<forArray; k++)
         {
            for(int z=0; z<n; z++)
            {
               Array[k][z]=-1;
            }
         }
         funk1(n,fora,i,x,Array,a);    
      }
   }
      for (int i=0; i<fora; i++) delete [] a[i];  //удаляем
   delete [] a;                                //массив А
   fora=forArray;                //новая расзмерность массива А ровна старой размерности массива Array
   a = new int * [fora];                     //создаем
   for (int i=0; i<fora; i++) a[i]=new int [n]; //новый массив А
 
   for(int i=0; i<forArray; i++)   //копируем
   {                               //элементы массива Array в
      for(int j=0; j<n; j++)       //массиву А
      {
      a[i][j]=Array[i][j];    //--------------------ВОТ ТУТ РУГАЕТСЯ------------------------------
      }
   }
 
   for (int i=0; i<forArray; i++) delete [] Array[i];  //удаляем
   delete [] Array;                                    //массив Аrray
}
//--------------------------------------
         cout<<'\n';            cout<<'\n';
 
 
 
bool prov;
cout<<"---------------------------------------------"<<'\n';
int o=1;
for(int i=0; i<fora; i++)
{
   prov=proverka(i,n,a);
   if(prov==true)
   {
   cout<<"class"<<o<<"  ";
      for(int j=0; j<n; j++)
      {
         if(a[i][j]!=-1)
         {
         cout<<a[i][j]<<" ";
         }
      }
      cout<<'\n';
      o++;
   }
}
}
 
//---------------------------------------------------------------------------
int serchposition(int d, int** a, int fora, int n)
{
   for(int i=0; i<fora; i++)
   {
      for(int j=0; j<n; j++)
      {
         if(a[i][j]==d)return i;
      }
   }
return 1000;
}
//---------------------------------------------------------------------------
void funk1(int n, int fora, int i, int x, int** Array, int**a)
{
         for(int i1=0; i1<fora; i1++)    //вместо fora было forArray-1
         {
            for(int j1=0; j1<n; j1++)
            {
               if(a[i1][j1]==i || a[i1][j1]==x){Array[i1][j1]=-1;}
               else{Array[i1][j1]=a[i1][j1];}
               Array[fora][0]=i;
               Array[fora][1]=x;
            }
         }
}
//---------------------------------------------------------------------------
bool proverka (int i, int n, int** a)          //проверка на наличие подкласса при выводе
{                                              //строки со всеми (-1) возвращают значение
bool prov=true;                                //FALSE
    for(int y=0; y<n; y++)
      {
      if(a[i][y]!=-1)
        {
        prov=true;
        return prov;
        }
      else
        {
        prov=false;
        return prov;
        }
      }
return prov;
}
//---------------------------------------------------------------------------
Вот скрин с ошибкойПамять не может быть прочитана!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.