Ребят, не понимаю в чём ошибка "Необработанное исключение по адресу 0x00C34DCF" в строке 29
Код:
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <iomanip>
#include <math.h>
#include <locale>
using namespace std;
class Massiv
{
int *a, *d, n, min;
public:
void Sozd();
void Vvod_Sl();
void Form(int n1, int n2);
void Form_2(int n3, int n4);
void Print();
void Print_2(int number);
void Print_3(int rec, int field);
};
void Massiv::Sozd() //Создание массива строк5
{
int m;
cout << "Количество строк="; cin >> n;
int min = 0;
for (int i = 0; i<n; i++)
{
cout << "Количество элементов " << i + 1 << " в строке= ";
cin >> m;
*(d + i) = m;
if (min<m) min = m;
}
a = (int*)malloc(sizeof(int)*n*min);
}
void Massiv::Vvod_Sl()// Ввод случайных чисел в массив строк
{
Sozd();
for (int i = 0; i<n; i++)
for (int j = 0; j<*(d + i); j++)
{
*(a + i + j) = rand() % 100;
}
}
void Massiv::Print()//Ввывод всех строк
{
for (int i = 0; i<n; i++)
{
for (int j = 0; j<*(d + i); j++)
{
cout << setw(6) << *(a + i + j);
}
cout << endl;
}
}
void Massiv::Print_2(int number)//Ввывод строк по индексу
{
for (int i = 0; i<n; i++)
{
for (int j = 0; j<*(d + i); j++)
{
if (i == number) cout << setw(6) << *(a + i + j);
}
cout << endl;
}
}
void Massiv::Print_3(int rec, int field)//Ввывод конкретного елемента конкретной строки
{
for (int i = 0; i<n; i++)
{
for (int j = 0; j<*(d + i); j++)
{
if ((i == rec) && (j == field)) cout << "Даный элемент= " << setw(6) << *(a + i + j);
else "Массив с такими даннымы не найден!";
}
cout << endl;
}
}
void Massiv::Form(int n1, int n2)//Сцепление двух массивов
{
int m1, m2, k, j, l, p;
int c[20];
m1 = *(d + n1);
m2 = *(d + n2);
int m3 = m1 + m2;
k = 0;
for (l = 0; l<m3; l++)
if (l<m1)
{
c[l] = *(a + n1 + l);
cout << setw(6) << c[l];
}
else if ((l >= m1) && (l<m3))
{
c[l] = *(a + n2 + k);
cout << setw(6) << c[l];
k++;
}
}
void Massiv::Form_2(int n3, int n4)//Слияние двух массивов
{
int m1, m2, k, j, l, p, l1;
int c[20], f[20];
m1 = *(d + n3);
m2 = *(d + n4);
int m3 = m1 + m2;
k = 0;
for (l = 0; l<m3; l++)
{
if (l<m1)
{
c[l] = *(a + n3 + l);
}
else if ((l >= m1) && (l<m3))
{
c[l] = *(a + n4 + k);
k++;
}
}
l1 = 0;
f[l1] = c[l1];
cout << setw(6) << f[l1];
for (p = 1; p<m3; p++)
if (f[l1] != c[p])
{
l++;
f[l1] = c[p];
cout << setw(6) << f[l1];
}
}
void main()
{
setlocale(LC_ALL, "Russian");
Massiv a, b;
int number, punkt, rec, field, kol, n1, n2, n, n3, n4;
cout << "1 - Создание массива "; cout << endl;
cout << "2 - Вывод всех строк"; cout << endl;
cout << "3 - Вывод строки по индексу"; cout << endl;
cout << "4 - Сцепление двух массивов"; cout << endl;
cout << "5 - Слияние двух масивов"; cout << endl;
cout << "6 - Вывод конкретного элемента конкретной строки"; cout << endl;
cout << "7 - Выход"; cout << endl;
cout << "Выберете пункт в меню: "; cin >> punkt;
while (punkt != 7) //Меню
{
switch (punkt)
{
case 1: {
a.Vvod_Sl();
cout << endl;
a.Print();
cout << endl;
cout << "1 - Создание массива"; cout << endl;
cout << "2 - Вывод всех строк"; cout << endl;
cout << "3 - Вывод строки по индексу"; cout << endl;
cout << "4 - Сцепление двух массивов"; cout << endl;
cout << "5 - Слияние двух масивов"; cout << endl;
cout << "6 - Вывод конкретного элемента конкретной строки"; cout << endl;
cout << "7 - Выход"; cout << endl;
cout << "Выберете пункт в меню: "; cin >> punkt;
}
break;
case 2: {
a.Print();
cout << endl;
cout << "1 - Создание массива"; cout << endl;
cout << "2 - Вывод всех строк"; cout << endl;
cout << "3 - Вывод строки по индексу"; cout << endl;
cout << "4 - Сцепление двух массивов"; cout << endl;
cout << "5 - Слияние двух масивов"; cout << endl;
cout << "6 - Вывод конкретного элемента конкретной строки"; cout << endl;
cout << "7 - Выход"; cout << endl;
cout << "Выберете пункт в меню: "; cin >> punkt; }
break;
case 3: {
cout << "Введите номер массива (нумерация начинаеться с 0!): "; cin >> number;
cout << endl;
a.Print_2(number);
cout << "1 - Создание массива"; cout << endl;
cout << "2 - Вывод всех строк"; cout << endl;
cout << "3 - Вывод строки по индексу"; cout << endl;
cout << "4 - Сцепление двух массивов"; cout << endl;
cout << "5 - Слияние двух масивов"; cout << endl;
cout << "6 - Вывод конкретного элемента конкретной строки"; cout << endl;
cout << "7 - Выход"; cout << endl;
cout << "Выберете пункт в меню: "; cin >> punkt;
}
break;
case 4: {
cout << "Введите номер 1-го массива (нумерация начинаеться с 0!!!): "; cin >> n1; cout << endl;
cout << "Введите номер 2-го массива (нумерация начинаеться с 0!!!): "; cin >> n2; cout << endl;
a.Form(n1, n2);
cout << endl;
cout << "1 - Создание массива"; cout << endl;
cout << "2 - Вывод всех строк"; cout << endl;
cout << "3 - Вывод строки по индексу"; cout << endl;
cout << "4 - Сцепление двух массивов"; cout << endl;
cout << "5 - Слияние двух масивов"; cout << endl;
cout << "6 - Вывод конкретного элемента конкретной строки"; cout << endl;
cout << "7 - Выход"; cout << endl;
cout << "Выберете пункт в меню: "; cin >> punkt; }
break;
case 5: {
cout << "Введите номер 1-го массива (нумерация начинаеться с 0!!!): "; cin >> n3; cout << endl;
cout << "Введите номер 1-го массива (нумерация начинаеться с 0!!!): "; cin >> n4; cout << endl;
a.Form_2(n3, n4);
cout << endl;
cout << "1 - Создание массива"; cout << endl;
cout << "2 - Вывод всех строк"; cout << endl;
cout << "3 - Вывод строки по индексу"; cout << endl;
cout << "4 - Сцепление двух массивов"; cout << endl;
cout << "5 - Слияние двух масивов"; cout << endl;
cout << "6 - Вывод конкретного элемента конкретной строки"; cout << endl;
cout << "7 - Выход"; cout << endl;
cout << "Выберете пункт в меню: "; cin >> punkt; }
break;
case 6: {
cout << "Введите номер строки массива(нумерацыия начинаеться с 0!): "; cin >> rec;
cout << endl;
cout << "Введите номер столбца: "; cin >> field;
cout << endl;
a.Print_3(rec, field);
cout << "1 - Создание массива"; cout << endl;
cout << "2 - Вывод всех строк"; cout << endl;
cout << "3 - Вывод строки по индексу"; cout << endl;
cout << "4 - Сцепление двух массивов"; cout << endl;
cout << "5 - Слияние двух массивов"; cout << endl;
cout << "6 - Вывод конкретного элемента конкретной строки"; cout << endl;
cout << "7 - Выход"; cout << endl;
cout << "Выберете пункт в меню: "; cin >> punkt; }
break;
case 7:
break;
}
}
}