Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2016, 17:56   #1
GrandMaster
Новичок
Джуниор
 
Регистрация: 30.03.2016
Сообщений: 2
По умолчанию Необработанное исключение по адресу 0x00C34DCF

Ребят, не понимаю в чём ошибка "Необработанное исключение по адресу 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;
		}
	}
}
GrandMaster вне форума Ответить с цитированием
Старый 04.04.2016, 18:08   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Потому что вы не выделили память для d и пишите фиг знает куда
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необработанное исключение по адресу 0x012A8F88 в Задачи.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x01020000. Мой повелитель Общие вопросы C/C++ 2 09.01.2016 19:53
Необработанное исключение Hellyeah C# (си шарп) 9 22.01.2015 12:34
Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу Анастасия_18 Общие вопросы C/C++ 3 16.07.2014 09:57
Необработанное исключение nik-maximal Visual C++ 0 23.04.2014 16:45