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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2015, 10:05   #1
a.tereshhuk
Пользователь
 
Аватар для a.tereshhuk
 
Регистрация: 07.10.2014
Сообщений: 14
По умолчанию C++ - Классы. Поля данных

Здравствуйте!
Помогите разобраться с классами.
Вот само задание :
Разработать алгоритм решения задачи обработки данных, хранящихся в динамической структуре данных (линейный список, стек, очередь). Создать класс динамическая структура данных (линейный список, стек, очередь), что содержит поля данных (указатель на первый элемент и (или) указатель на посл-ной элемент, или указатель на вершину стека) и методы: конструктор (инициирования полей данных), деструктор (освобождение памяти для списка, стека), функцию добавления элемента (первого и (или) последнего элемента, вершины стека), функцию удаления элемента (первого и (или) последнего элемента, вершины стека), функции доступа (для возвращения значений закрытом-х полей данных класса).
Реализовать алгоритм на языке С ++ с помощью методов (функций) класса.
В главной функции должны быть объявлены объекты классов (вызовы конструкторов), реализовано вызов функций класса и вывода результатов на экран.

Условия брать из Лабораторной работы №2.


Условие Лаб№2
Вариант 20.
Сформировать стек по файлу чисел. Удалить из стека узлы с минимальным значением информационного поля. Использовать дополнительный стек.


Мне нужно код Лаб№2 запихнуть в класс, но с классами у меня очень плохо.Помогите пожалуйста

Лабораторная №2 у меня есть. Она по этой ССЫЛКЕ

Спасибо!
Если не успел сдать работу во время - скажи что исправлял баги и оптимизировал код
a.tereshhuk вне форума Ответить с цитированием
Старый 05.05.2015, 10:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include <iostream>
#include  <string>
#include <fstream>
using namespace std;
/*Вариант 20.
	Сформировать стек по файлу чисел.
	Удалить из стека узлы с минимальным значением информационного поля.
	Использовать дополнительный стек.
*/

struct node
{
	double a;
	node* prev;
};
typedef node* pnode;

class Laba20 {
publik:
bool empty(pnode &Top) // пустой ли я
{
	return (Top == NULL);
}
void Push(pnode &Top, double x) //пуш ми
{
	pnode p;
	p = new node;
	p->a = x;
	p->prev = Top;
	Top = p;
}
void Pop(pnode &Top) //вытащи ми
{
	double c;
	pnode p;
	p = Top->prev;
	delete Top;
	Top = p;
}
void delmin(pnode &Top) //удаление минимума
{
	pnode buf; // допольнительный стек
	double min(10000);
	buf = nullptr;
	while (!empty(Top)) //нахождение минимума
	{
		if (Top->a < min) min = Top->a;
		Push(buf, Top->a);
		Pop(Top);
	}

	while (!empty(buf)) // переписываем без минимумов в главный стек
	{
		if (buf->a != min)
		{
			Push(Top, buf->a);
		}
		Pop(buf);
	}
}
void onscreen(pnode &Top) // шоу ми
{
	pnode buf=nullptr; //допольный стек пустой
	while (!empty(Top))
	{
		Push(buf, Top->a);
		Pop(Top);
	}
	cout << "Contents of stack:\n";
	while (!empty(buf))
	{
		cout << buf->a << " ";
		Pop(buf);
	}
	delete Top; //очищение стека
}
void input(fstream &f, string nf)
{
	double x;
	bool ff = false;
	f.open(nf, ios::binary | ios::out);
a:  cout << "Input your elements: (any element for stop)\n";
	cout << "Elements:\n";
	while (cin >> x)
	{
		f.write((char*)&x, sizeof x);
		if (ff == false)
		{
			ff = true;
		}
	}
	if (!ff)
	{
		cin.clear(); //очищение потока
		cin.ignore(10000, '\n');
		cout << "Attention no one element!!! Repeat enter\n"; // вывод сообщение
		goto a;
	}
	f.close();
}
void create_stack(pnode &Top, fstream &f, string nf) //создание стека
{
	double x;
	f.open(nf, ios::binary | ios::in);
	while (f.read((char*)&x, sizeof x))
	{
		Push(Top, x);
	}
	f.close();
}
}
int main()
{
     laba20* l20=new laba20();
	char y;
	pnode p = nullptr;
	fstream f;
	string nf("f");
	l20->input(f, nf);
	l20->create_stack(p, f, nf);
	l20->delmin(p);
	l20->onscreen(p);
     delete l20;
	cout << endl;
	return 0;
}
Не проверял. Но вроде ниче не упустил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2015, 10:41   #3
a.tereshhuk
Пользователь
 
Аватар для a.tereshhuk
 
Регистрация: 07.10.2014
Сообщений: 14
По умолчанию

Сейчас проверю, но все равно спасибо.Если что, отредактирую под себя.
Спасибо огромное!
Если не успел сдать работу во время - скажи что исправлял баги и оптимизировал код
a.tereshhuk вне форума Ответить с цитированием
Старый 05.05.2015, 10:46   #4
a.tereshhuk
Пользователь
 
Аватар для a.tereshhuk
 
Регистрация: 07.10.2014
Сообщений: 14
По умолчанию

Stilet, все работает на ура.
Я исправил только publik -> public и вы пропустили ; . Еще раз спасибо огромное
Если не успел сдать работу во время - скажи что исправлял баги и оптимизировал код
a.tereshhuk вне форума Ответить с цитированием
Старый 05.05.2015, 11:18   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
public и вы пропустили
Нда... Толи "описался" толи "опписался" ))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# ПРОСТЕЙШИЕ КЛАССЫ. ПОЛЯ, КОНСТАНТЫ, КОНСТРУКТОРЫ, СВОЙСТВА serg.malkow2014 Помощь студентам 0 15.05.2014 23:51
проверка поля на тип данных anghela Помощь студентам 3 16.11.2013 21:38
Считывание данных со скрытого поля Claster Помощь студентам 2 09.09.2011 23:01
Классы, объекты,поля объектов Mr_skiner Общие вопросы Delphi 9 10.03.2011 23:07
Ввод данных в поля на страничке Port 111 Работа с сетью в Delphi 7 12.01.2009 20:34