Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Реализация класса стека - вылетает программа / 5 сообщений из 5, страница 1 из 1
20.11.2016, 19:09
    #39350574
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация класса стека - вылетает программа
Начал писать класс Стек, возникла проблема: вылетает программа на моменте вызова конструктора класса без объяснения причины.
Подозреваю, что что-то не так происходит с массивом.

Код:
Stack.h
Код: plaintext
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.
#pragma once
#ifndef STACK
#define STACK

#include <string>
#include <iostream>
using namespace std;



class Stack
{

private:
	static const long max_steck_size = 2048000;
	long top_element;
	long steck_size;
	long double steck[max_steck_size];

public:
	// Constructor
	Stack();

	// Constructor
	Stack(long size);

	// Constructor
	Stack(long size, long double mas[]);

	// Destructor
	//~Stack();

	void Print_Steck();
	bool Push_Element(long double element);
	bool Pop_Element(long double element);
	bool Linear_Element_Seacher(long double element);
	long Linear_Element_Position_Seacher(long double element);

};

#endif




Stack.cpp
Код: plaintext
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.
#include "Stack.h"

Stack::Stack()
{
	steck_size = max_steck_size;
	top_element = 0;
	for (long i = 0; i < steck_size; i++)
		steck[i] = 0;
}

Stack::Stack(long size)
{
	if (size > max_steck_size)
		abort();
	steck_size = size;
	top_element = 0;
	for (long i = 0; i < steck_size; i++)
		steck[i] = 0;
}

Stack::Stack(long size, long double mas[])
{
	if (size > max_steck_size)
		abort();
	steck_size = size;
	top_element = size - 1;
	for (long i = 0; i < steck_size; i++)
		steck[i] = mas[i];
	for (long i = steck_size; i < max_steck_size; i++)
		steck[i] = 0;
}

void Stack::Print_Steck()
{
	cout << steck[0];
	for (long i = 0; i < steck_size; i++)
		cout << steck[i] << endl;
}




Source.cpp(Main)
Код: plaintext
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.
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <ctime>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <Windows.h>
#include <random>
#include "Stack.h"

using namespace std;



int main()
{

	
	long double mas_1[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

	Stack Stack_1(10, mas_1);

	Stack_1.Print_Steck();

	std::cin.get();
	return 0;
}


...
Рейтинг: 0 / 0
20.11.2016, 19:27
    #39350580
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация класса стека - вылетает программа
ukugyul552465Подозреваю, что что-то не так происходит с массивом.
угу. Если экземпляр Stack размещается на стеке (что имеет место в main)
то под long double steck[max_steck_size] места может не хватить,
в куче размещать нужно массив.
...
Рейтинг: 0 / 0
20.11.2016, 19:33
    #39350586
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация класса стека - вылетает программа
Изопропил, благодарю, помогло.
Не подумал я что-то сразу.
...
Рейтинг: 0 / 0
21.11.2016, 00:10
    #39350695
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация класса стека - вылетает программа
Без опций размер стека регулирует компилятор.

Что то порядка 1Мб по дефолту, но лучше посмотреть документацию на твой компилятор.

Но это не то, на что надо обращать внимание - код ужасен, надо учить матчасть по алгоритму стека.
...
Рейтинг: 0 / 0
21.11.2016, 15:40
    #39351169
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация класса стека - вылетает программа
Этот - код - набросок (действительно были ошибки) , уже переделал его. Всё работает.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Реализация класса стека - вылетает программа / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]