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

Не удаляется матрицы - C++

Восстановить пароль Регистрация
 
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
14.01.2011, 03:16     Не удаляется матрицы #1
В самом конце кода есть два оператора
delete []mas;
delete []mass;
Первый сработал, а второй выдал ошибку.
Это происходит с не квадратной матрицей, например, 3х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
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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int** input(int m,int n);
void output(int **mas, int m,int n);
int resmas(int **mas,int m,int n);
void editmas(int m,int n,int **mas);
void main(void)
{ 
int n,m;    cout<<endl<<"vvedi koli4estvo strok"<<endl; cin >> m; 
      cout<<"vvedi koli4estvo stolbcov"<<endl; cin >> n;
      
    
 do{
    int **mas=input(m,n);
    
 
    output(mas,m,n); cout<<endl; 
 
      editmas(m,n,mas); 
    
    }
    while(_getch()=='y');
}
 
//1 din
 
#include <iostream> 
using namespace std;
int *entermas(int N);
int** input(int m,int n)
{int **mas = new int *[m];
    for(int i=0; i<m; i++) 
      mas[i]=entermas(n);            
return mas;}      
 
 
int *entermas(int N)
{ 
int *mas0 = new int [N];
  for(int i=0;i!=N;i++) {cout << "vvedite "<< i+1<<" element massiva "<< endl;
cin >> mas0[i];
 
}; return mas0;
}
 
  
//2 din
 
#include <iostream>
using namespace std;
void output(int **mas, int m,int n)
{
  for (int i = 0,j = 0; i!=m; i++){
for (j=0; j!=n; j++){cout << *(*(mas+i)+j)<<" ";
};cout<<endl;};}
 
//3 din
 
#include <math.h>
#include <iostream>
 
using namespace std;
 
void output(int **mas, int m,int n);
 
int resmas(int **mas, int m,int n)
{
  int s=0;
for(int i=0;i!=m;i++)
{ 
  for(int j=0;j!=n;j++)
  {s=s+mas[i][j];}
;}
;
if (s>=0) return 0; return 1;}
 
 
void editmas(int m,int n,int **mas)
{int i,j=1,z,min;
 
if(resmas(mas,m,n)!=0){
 
int **mass = new int *[m];
    for(int i=0; i<n; i++) 
          mass[i]=new int [n];
 
 
 
  for(int i=0;i!=m;i++){min=0;
 
    for(int j=1;j!=n;j++){ 
 
        if(abs(mas[i][j])<abs(mas[i][min])) min=j; };
  z=mas[i][min];   mas[i][min]=mas[i][i]; mas[i][i]=z;
  };
  
  i=0; 
for(int i=0;i!=m;i++){for(int j=0;j!=n;j++){ mass[i][j]=mas[i][j];};};   
      output(mass,m,n);
 
for(int i=0;i<m;++i){
  delete []mas[i];
  delete []mass[i];
  };
  delete []mas;
  delete []mass;
 
}
 
      else cout<<"tak ne poidet!!"<<endl; cout<<"povtorit'?"<<endl;
}
Добавлено через 22 минуты
Нашел ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2011, 03:16     Не удаляется матрицы
Посмотрите здесь:

Удаляется объект когда не требуется и всё равно продолжает существовать C++
Не удаляется 2-х связный список C++
Переменная удаляется после присваивания C++
C++ не удаляется элемент из массива
C++ Free - не удаляется память
C++ Почему удаляется объект?
C++ Динамический массив структур (не происходит передачи и некорректно удаляется)
C++ Объект удаляется до возвращения его из функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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