powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Реализация класса стека - вылетает программа
5 сообщений из 5, страница 1 из 1
Реализация класса стека - вылетает программа
    #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
Реализация класса стека - вылетает программа
    #39350580
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465Подозреваю, что что-то не так происходит с массивом.
угу. Если экземпляр Stack размещается на стеке (что имеет место в main)
то под long double steck[max_steck_size] места может не хватить,
в куче размещать нужно массив.
...
Рейтинг: 0 / 0
Реализация класса стека - вылетает программа
    #39350586
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил, благодарю, помогло.
Не подумал я что-то сразу.
...
Рейтинг: 0 / 0
Реализация класса стека - вылетает программа
    #39350695
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без опций размер стека регулирует компилятор.

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

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


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