Форум программистов, компьютерный форум CyberForum.ru

Удаление двухмерного массива - C++

Восстановить пароль Регистрация
 
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
12.01.2013, 17:51     Удаление двухмерного массива #1
Доброго дня.
Выделяем память под квадратную матрицу --> заполняем --> освобождаем занятую память .
Следующий вопрос : при повторном выделении памяти и заполнении . работа программы некорректна , а именно вывод на экран следующего :
C++
1
2
3
4
5
6
7
8
9
10
11
12
0 1 0 1 1 0 1 0 1 1 0 0 
0 1 0 0 1 0 1 1 0 0 1 0 
1 0 1 1 0 1 0 0 0 0 1 0 
0 0 0 0 0 0 0 0 0 0 0 0 
-1 0 0 0 153563520 -1 -1 0 153563532 0 0 0 
0 0 0 2512992 0 134809 540090416 540090416 170926129 2513376 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 2512992 0 134585 540090416 540090416 170926129 540024881 540090417 170926128 
170926129 540090417 540024880 170926129 540024881 540090417 170991664 540024880 540024880 3153969 0 0 
0 0 0 0 0 0 0 0 0 0 0 0
Код программы :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 case 1 : {
                /*Найдем необходимую размерность массива*/
                nstb = nstolbi(nstb);
                nstr = nstb;
 
                /*Так как , матрица смежности это квадратная матрица , то nstr = nstb*/
                int **a = new int *[nstr];
                     for(int i=0;i<nstr;i++)a[i] = new int [nstb];
                matrix_sm(a,nstr,nstb);
                /* Удаление массива */
                for (int i = 0; i<nstr; i++)delete [] a[i];
                delete [] a;
                break;
            }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 17:51     Удаление двухмерного массива
Посмотрите здесь:

C++ вывод двухмерного массива
C++ Сортировка двухмерного массива
Сортировка двухмерного массива C++
C++ Перемешивание двухмерного массива
Сортировка двухмерного массива по i и j C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
12.01.2013, 18:36     Удаление двухмерного массива #2
scofielcl, в приведенном коде только выделение и освобождение памяти. Где заполнение?
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
12.01.2013, 18:42  [ТС]     Удаление двухмерного массива #3
Заполнение :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void matrix_sm(int **a,const int nstr,const int nstb){
        
    ifstream dll;
    dll.open("sm.txt");
    
    for(int i=0;i<nstr;i++){
        for(int j=0;j<nstb;j++)dll>>a[i][j];
    }
    
    for(int i=0;i<nstr;i++){
           for(int j=0;j<nstb;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<"\n";
    }
    dll.close();
}
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
12.01.2013, 19:30     Удаление двухмерного массива #4
В файле-то есть нужные данные?
Потому что косяков не вижу
Вот такой же код работает нормально:
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
#include <iostream>
 
void enter(int** a, int x, int y)
{
   for (int i = 0; i < x; ++i)
   {
      for (int j = 0; j < y; ++j)
      {
         a[i][j] = rand()%10;
         std::cout << a[i][j] << " ";
      }
      std::cout << std::endl;
   }
}         
 
int main()
{
   for (int i = 0; i < 3; ++i)
   {
      int x = 2;
      int y = 2;
      int** a = new int* [x];
      
      for (int j = 0; j < x; ++j)
         a[j] = new int[y];
         
      enter(a, x, y);
      
      for (int j = 0; j < x; ++j)
         delete [] a[j];
      delete [] a;
      
      std::cout << std::endl;
   }
   
   return 0;
}
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
12.01.2013, 19:54  [ТС]     Удаление двухмерного массива #5
Данные для считывания , есть.
Yandex
Объявления
12.01.2013, 19:54     Удаление двухмерного массива
Ответ Создать тему
Опции темы

Текущее время: 04:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru