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

Необработанное исключение - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция с неограниченным количеством аргументов http://www.cyberforum.ru/cpp-beginners/thread1102676.html
Вообщем проблема: написал функцию неограниченным количеством аргументов под виндой (компилятор mingw) все работает как часы, но под unix (компилятор gcc) начинаются проблемы, а точнее правильно берет только 1 аргумент, а остальные берет от балды (-1633125008 327571911603200 32675 1900239536 и.т.д). Ребят помогите, что и где я накосячил?
C++ Найти сумму отрицательных элементов расположенных на главной диагонали матрицы Задана матрица A 1.Найти сумму отрицательных элементов расположенных на главной диагонали 2.Найти максимальный элемент среди положительных элементов 3 строки 4 столбца и его местоположение 3.заменить найденный максимальный элемент на сумму положительных элементов 2 строки. http://www.cyberforum.ru/cpp-beginners/thread1102673.html
C++ Можно ли объявить дружественную функцию как шаблон?
Так всё работает: template<class T> class random { /*всячина*/ public: friend void function(random<int>&); /*всячина*/
Задача : Обход шахматной доски конем С++ рекурсия C++
Доброго времени суток ! Есть задача , обойти всю шахматную доску фигурой конь , не наступая на одну и туже клетку 2 раза , решить ее нужно с помощью рекурсии. По примеру этого кода , нужно написать программу. Выручайте ! #include <Windows.h> #include <iostream> using namespace std; const int Y = 20, X = 50; void fill(int a, int y, int x); void drawField(int a);
C++ Цикл For. Вычислить значение функции http://www.cyberforum.ru/cpp-beginners/thread1102659.html
#include <iostream> #include <conio.h> #include <math.h> using namespace std; int main () { float x_start=1.0,x_step=0.3,x_end=2.5; float a=-1.5,b=2.0,c=3.0,d=4.0;
C++ Поиск в глубину, ширину, графы Добрый день. Есть задача с бидонами (есть три бидона : 1ый 14 литров -заполнен молоком, 2ой 9 литров-пуст, 3ий 5 литров - пуст. Нужно путем переливания получить в одном из бидонов 7 литров. Вылить не в бидон нельзя. Вылить из бидона половину, "на глаз" - тоже нельзя.). Нужно решить ее методом поиска в глубину/ширину. А на выходе получить ту ветку графа, которая привела нас к решению. Решил... подробнее

Показать сообщение отдельно
Anzohan
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 14

Необработанное исключение - C++

22.02.2014, 13:28. Просмотров 307. Ответов 1
Метки (Все метки)

Здравствуйте. Нужно добавить в готовый класс свои функции из предыдущих работ. Все добавил, но при вызове функции "cdd" вылезает ошибка "Необработанное исключение в "0x00f12afb" в "eta.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdfd".". Попробовал запустить старое задание, из которого я взял код и добавил сюда - тоже не работает. Хотя на университетских компьютерах все работало.
Сам код:
Файл CLASS_MATRIX_H
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
//Создайте класс с именем Matrix.
//Данные класса представлены тремя переменными-членами;
//два члена типа int для хранения размеров матрицы и указатель типа double**.
//Функции_члены:
//Конструктор без параметров:
//Конструктор с параметрами - размерами матрицы;
//Функция вывода матрицы на экран;
//Функция ввода данных в матрицу с клавиатуры;
//Функции вычисления максимального и манимального элементов матрицы;
//Функция вычисления суммы элементов матрицы;
//Функция возвращает количество строк матрицы;
//Функция возвращает количество столбцов матрицы;
//Функция доступа к отдельному элементу матрицы по индексу;
//Функция умножения элементов матрицы на константу;
//Функция умножения двух матриц;
 
#ifndef CLASS_MATRIX_H
#define CLASS_MATRIX_H
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
class Matrix {
 int n, m;
 double ** pMas;
public:
 Matrix();                                //Конструктор
 Matrix(int _n, int _m);                  //Конструктор с параметрами
 Matrix(const Matrix & matr);             //Конструктор копирования
 ~Matrix();                               //Деструктор
 void Get_Matrix() const;                 //Вывод матрицы на экран
 void Set_Matrix();                       //Ввод данных в матрицу с клавиатуры 
 double Sum();                            //Сумма элементов матрицы
 double Max();                            //Максимальный элемент матрицы
 double Min();                            //Минимальный элемент матрицы
 Matrix operator * (double mn);           //Умножение элементов матрицы на число
 double* operator [] (int i);             //Для доступа к эл. массива по индексам
 inline int Get_Row() {return n;}         //Количество строк матрицы
 inline int Get_Col() {return m;}         //Количество столбцов матрицы
 Matrix operator * (const Matrix & matr); //Умножение матриц
 Matrix operator = (const Matrix & matr); //Перегрузка оператора присваивания
void cdr(int u); 
void cdd(int u);
void sdvig();
};
 
#endif //CLASS_MATRIX_H
Файл CLASS_MATRIX.cpp
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#include "Class_Matrix.h"
 
//Конструктор
Matrix::Matrix()
{
 n = 0;
 m = 0;
 pMas = NULL;
}
//-------------------
//Конструктор с параметром
Matrix::Matrix(int _n, int _m)
{
 n = _n;
 m = _m;
 int i, j;
 pMas = new double *[n];
 for(i = 0; i < n; i++) pMas[i] = new double [m];
 
 for(i = 0; i < n; i++)
  for(j = 0; j < m; j++)
   pMas[i][j] = 0;
}
//-------------------
//Конструктор копирования
Matrix::Matrix(const Matrix & matr)
{
 n = matr.n;
 m = matr.m;
 int i, j;
 pMas = new double *[n];
 for(i = 0; i < n; i++) pMas[i] = new double [m];
 
 for(i = 0; i < n; i++)
  for(j = 0; j < m; j++)
   pMas[i][j] = matr.pMas[i][j];
}
//-------------------
Matrix::~Matrix()
{
 cout << "Destructor" << endl;
 for(int i = 0; i < n; i++)
  delete []pMas[i];
 delete []pMas;
}
 
//-------------------
void Matrix::Get_Matrix() const
{
 for(int i = 0; i < n; i++)
 {
  for(int j = 0; j < m; j++)
   cout << pMas[i][j] << "  ";
  cout << endl;
 }
 cout << endl;
}
//-------------------
void Matrix::Set_Matrix()
{
 cout << "Elements massiva?:" << endl;
 for (int i = 0; i < n; i++)
  for(int j = 0; j < m; j++)
   cin >> pMas[i][j];
 cout << endl;
}
//-------------------
double Matrix::Sum ()
{
 double s = 0;
 for (int i = 0; i < n; i++)
  for(int j = 0; j < m; j++)
   s += pMas[i][j];
 return s;
}
//-------------------
double Matrix::Max()
{
 double max = pMas[0][0];
 for(int i = 0; i < n; i++)
  for(int j = 0; j < m; j++)
  {
   if (pMas[i][j] > max)
   {
    max = pMas[i][j];
   }
  }
 return max;
}
//-------------------
double Matrix::Min()
{
 double min = pMas[0][0];
 for(int i = 0; i < n; i++)
  for(int j = 0; j < m; j++)
  {
   if (pMas[i][j] < min)
   {
    min = pMas[i][j];
   }
  }
 return min;
}
//---------------------
Matrix Matrix::operator * (double mn)
{
 Matrix c;
 c.n = n;
 c.m = m;
 int i, j;
 c.pMas = new double *[c.n];
 for(i = 0; i < c.n; i++) c.pMas[i] = new double [c.m];
 for(i = 0; i < n; i++)
  for(j = 0; j < m; j++)
  {
   c.pMas[i][j] = pMas[i][j] * mn;
  }
 return c;
}
//---------------------
double* Matrix::operator [] (int i)
{
 if((i < 0) || (i >= n))
 {
  cout << "Go out border" << endl;
  exit(1);
 }
 else
 {
  return pMas[i];
 }
}
//---------------------
Matrix Matrix::operator * (const Matrix & matr)
{
 if(m != matr.n)
 {
  cout << "Multiply Matrix is impossible" << endl;
  exit(1);
 }
 Matrix temp(n, matr.m);
 int i, j, k;
 for(i = 0; i < temp.n; i++)
 {
  for(j = 0; j < temp.m; j++)
  {
   double s = 0;
   for(k = 0; k < m; k++)
   {
    s += pMas[i][k] * matr.pMas[k][j];
   }
   temp.pMas[i][j] = s;
  }
 }
 return temp;
}
//-----------------------
Matrix Matrix::operator = (const Matrix & matr)
{
 int i, j;
 if(pMas)
 {
  for(i = 0; i < n; i++)
   delete []pMas[i];
  delete []pMas;
 }
 n = matr.n;
 m = matr.m;
 pMas = new double *[n];
 for(i = 0; i < n; i++) pMas[i] = new double [m];
 
 for(i = 0; i < n; i++)
  for(j = 0; j < m; j++)
   pMas[i][j] = matr.pMas[i][j];
 return *this;
}
 
void Matrix::sdvig() {
    int u;
    cout<<"Vvedite na skolko budet osushestvlatsa sdvig "<<endl;
    cin>>u;
    char z;
    cout<<"Vvedite kuda budet osushestvlatsa sdvig (r or d)"<<endl;
    cin>>z;
    if (z=='r') {
         cdr(u);
    } else if (z=='d') {
        cdd(u);
    }
}
 
 
void Matrix::cdr(int u) {
    int tmp;
        if (u==0) {
            return;
        }
    for (int k=0;k<u;k++)
for (int i=0;i<n; i++)
for (int j=0;j<m;j++){
tmp=pMas[i][j];
pMas[i][j]=pMas[i][0];
pMas[i][0]=tmp;
}   
    for (int i=0;i<n;i++) {
        for (int j=0;j<m;j++)
cout<<setw(4)<<pMas[i][j]<<"  ";
cout<<endl;
    }
}
 
void Matrix::cdd(int u) {
    int tmp;
        if (u==0) {
            return;
        }
    for (int k=0;k<u;k++)
for (int i=0;i<n; i++)
for (int j=0;j<m;j++){
tmp=pMas[j][i];
pMas[j][i]=pMas[0][i];
pMas[0][i]=tmp;
}   
    for (int i=0;i<n;i++) {
        for (int j=0;j<m;j++)
cout<<setw(4)<<pMas[i][j]<<"  ";
cout<<endl;
    }
    
}
Файл MainSam4.cpp
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
#include "Class_Matrix.h"
 
int main() {
 Matrix a(2, 4);
 a.Set_Matrix();
 a.Get_Matrix();
 a.sdvig();
 cout << "Sum = " << a.Sum() << endl;
 cout << "Max = " << a.Max() << endl;
 cout << "Min = " << a.Min() << endl;
 int i, j;
 for(i = 0 ; i < a.Get_Row(); i++)
 {
  for(j = 0; j < a.Get_Col(); j++)
   cout << a[i][j] << "  ";
  cout << endl;
 }
 cout << endl;
// a[1][2] = 0;
// a.Get_Matrix();
 
 Matrix h(4, 3);
 h.Set_Matrix();
// h = h * 3.0;
 h.Get_Matrix();
 
 Matrix d;
 d = a * h;
 d.Get_Matrix();
 
 Matrix g(d);
 g.Get_Matrix();
 system("pause");
 return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru