Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс стека 
:(
    Опции темы
yuliya28
Дата 14.9.2012, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 12.9.2012

Репутация: нет
Всего: нет



Здравствуйте!помогите создать класс стека, чтобы входные данные были из списка....как я понимаю, это должно быть в конструкторе или нет? и правильно ли я пытаюсь реализовать?

Код



#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
 
const int maxlen =100;

class stack
{
    int s[maxlen];
    int top;
    void pop(int top, int x);
    void push(int top);
    bool empty(int top);
    stack();
    stack(int top);

}
stack::stack()
{
    top=0;
}
stack::stack(int top);


 void stack::pop(int top,int x){
     if (top=maxlen) cout<<"Cтек полон"<<endl;
     s[top]=x;
    top++;
 }
 void stack::push(int top)
 { if (top==0) cout<<"Стек пуст"<<endl;
   top--;
 }
 bool stack::empty (int top)
 {
     if (top==0) return 1;
     else return 0;
 }

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

PM MAIL   Вверх
bsa
Дата 14.9.2012, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



а что за параметры у методов pop() и push()? 
Постмотри на стандартный класс: http://en.cppreference.com/w/cpp/container/stack
PM   Вверх
baldina
Дата 14.9.2012, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(yuliya28 @  14.9.2012,  20:51 Найти цитируемый пост)
создать класс стека, чтобы входные данные были из списка

может имеется в виду использовать список для хранения данных стека?
PM MAIL   Вверх
yuliya28
Дата 14.9.2012, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 12.9.2012

Репутация: нет
Всего: нет



Цитата(baldina @ 14.9.2012,  22:06)
Цитата(yuliya28 @  14.9.2012,  20:51 Найти цитируемый пост)
создать класс стека, чтобы входные данные были из списка

может имеется в виду использовать список для хранения данных стека?

Вывести из файла список чисел например 1 2 3 4 5 в стек   я не знаю это должно быть в конструкторе или отдельным методом
PM MAIL   Вверх
bsa
Дата 17.9.2012, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



yuliya28, ИЗ файлов вводят, а вЫводят В файлы.
Стек не требует отдельного метода для ввода данных из файла. Для этого лучше просто отдельный цикл в main организуй.
PM   Вверх
baldina
Дата 17.9.2012, 11:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



yuliya28, давай решать задачу с самого сначала, спокойно и последовательно. 
не торопись читать этот пост до конца, читай медленно, сравнивая со своими соображениями.
Итак, задача
1. Разработать класс, реализующий стек
2. Протестировать его: прочитать числа из текстового файла и поместить их в стек, а затем вывести числа из стека

начнем с тестового приложения. оно будет состоять из двух частей:

Код

int main () {
  /* 1. 
  открыть файл
  while (не конец файла) {
    считать число из файла
    вывести помещаемое число на экран
    поместить число в стек
  }
  */
  /*2. 
  while (стек не пуст) {
    выбрать число из стека
    вывести его на экран
  }
  */
}

отсюда видно, что от класса стека требуются операции
- поместить в стек (push)
- проверить стек на пустоту (is_empty)
- снять число со стека (pop)
для данной задачи (да и вообще для стека) этих операций достаточно. получаем следующий интерфейс класса
Код

class stack {
  public:
    void push(int);
    int pop(); // к пустому стеку обращаться нельзя, поэтому данный метод должен в таком случае генерировать исключение.
    bool is_empty();
};

как видишь, конструктор в данной задаче не несет существенной роли, общение со стеком производится тремя методами.

Добавлено @ 11:31
теперь мы можем
1. разрабатывать класс стека (реализация у тебя почти есть)
2. уточнять тестовое приложение (функцию main)
Код

int main () {
  stack s;
  //открыть файл
  while (/*не конец файла*/) {
    //int x = считать число из файла
    std::cout << x << ' '; // вывести помещаемое число на экран
    s.push(x); //поместить число в стек
  }
  std::cout << std::endl;

  while (!s.is_empty()) {
    int x = s.pop();
    //вывести x на экран
  }
}

дальше справишься?

Это сообщение отредактировал(а) baldina - 17.9.2012, 11:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0731 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.