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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2018, 14:34   #1
AcHt
 
Регистрация: 22.12.2016
Сообщений: 8
Восклицание [C++] Стеки. Помощь в написании кода

Дан текстовый файл с изображением целых чисел, которые необходимо записать в список L1.Используя структуру "Stack", удалить из последовательности максимальное и минимальное числа и записать оставшиеся числа в выходной файл.

Нужна помощь!

Нужен код(или помощь в написании кода) для поиска max и min для стека. Принцип FILO понимаю. Для списка написать могу, а для стека нет.

Код:
#include "stdafx.h"
#define Stack struct stack
#define NULL 0
#include <iostream>
#include <fstream>

Stack{ int Dn; Stack *NX; };

using namespace std;

class cStack
{
protected: Stack * p;
public:
	cStack() {
		p = NULL;
	};
	~cStack();
	int Empty() {
		return (p == NULL);
	};
	void Push(int D) {
		Stack*q = new(Stack);
		q->Dn = D;
		q->NX = p;
		p = q;
	};
	int Pop() {
		Stack*q = p;
		p = q->NX;
		int B = q->Dn;
		delete(q);
		return B;
	};
	void Display();
	int Len();
	void DelFirst() {
		Stack*q = p;
		p = p->NX;
		delete(q);
	};
	int Del_k(int k);
	int Mini(int Min);
	int Maxi(int Max);
};

//------------------------------------------------------------
void cStack::Display() {
	Stack* t = p;
	if (p)
		while (t) {
			cout << t->Dn << " ";
			t = t->NX;
		}
	else
		cout << "->|";
	cout << endl;
};

int cStack::Del_k(int k) {
	if (Len() < k)return 0;
	if (k == 1) DelFirst();
	else {
		int i = 1; Stack*t = p;
		while (i<k - 1)
		{
			t = t->NX; i++;
		}
		Stack*q = t->NX;
		t->NX = q->NX;
		delete(q);
		return 1;
	}
};
int cStack::Len()
{
	int i = 0; Stack*t = p;
	while (t) { t = t->NX; i++; }
	return i;
};
//------------------------------------------------------------
int cStack::Maxi(int Max)
{
	Stack*q = p;
	int i = 1;
	q = p;
	if (q->NX->Dn > p->Dn)
		Max = q->NX->Dn;
	while (i < 20)
	{
		q = q->NX;
		i++;
	}
	return Max;
};
int cStack::Mini(int Min)
{
	Stack*q = p;
	int i = 1;
	q = p;
	if (q->NX->Dn <q->Dn  )
		Min = q->NX->Dn;
	while (i < 20)
	{
		q = q->NX;
		i++;
	}
	return Min;
};
cStack::~cStack() { while (!Empty())DelFirst(); };

//------------------------------------------------------------
int main()
{
	setlocale(LC_ALL, "Russian");
	int Dt;

	cStack S1,L1;
	int Min = 0, Max = 0;
	ifstream fin; fin.open("I.txt");
	if (!fin.is_open()) {
		cout << "Файл не открылся!\n";
	}
	else {
		cout << "Файл открыт!\n";
	}
	while (true)
	{
		fin >> Dt;
		if (fin.eof())	break;
		S1.Push(Dt);
		
	}
	fin.close();

	S1.Display();

	
	
	
		
	ofstream fout; fout.open("O.txt");
	while (!S1.Empty())
	{
		fout << S1.Pop() << " ";
	}
	fout.close();
	cout << endl;
	S1.~cStack();
	_getch();
	return 0;
}

Последний раз редактировалось AcHt; 13.06.2018 в 14:17.
AcHt вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка чтения файла Umnik1 Общие вопросы Delphi 12 25.06.2013 22:57
Ошибка чтения памяти Khayzenberg Общие вопросы Delphi 0 25.11.2012 13:37
Ошибка 100: Ошибка чтения с диска. vodilawofer Помощь студентам 5 28.12.2011 22:49
Ошибка чтения текста )Игнат( Помощь студентам 0 13.11.2010 16:14
ошибка чтения KiSH333 БД в Delphi 12 22.08.2008 11:09