Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/74: Рейтинг темы: голосов - 74, средняя оценка - 4.59
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221

Заполнение Stack и вывод на печать

15.02.2011, 19:59. Показов 16268. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ДОбрый день, подскажите пожалуйста как написать программу, которая бы считывала предложения, и респечатывала в обратном порядке
Спасибо большое!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.02.2011, 19:59
Ответы с готовыми решениями:

[bcc32 Error] File1.cpp(19): E2316 'Stack<T>::Stack()' is not a member of 'Stack<T>'
Возникает ошибка File1.cpp(19): E2316 'Stack&lt;T&gt;::Stack()' is not a member of 'Stack&lt;T&gt;' #pragma hdrstop #pragma argsused ...

Заполнение stack из double c клавиатуры
Добрый день, подскажите пожалуйста где ошибка, как заполнить Stack c клавиатуры #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

Заполнение класса Stack случайными числами из промежутка
Доброго утра! Подскажите пожалуйста, как переделать существующий класс Stack так, чтобы он принимал случайные числа из промежутка и...

49
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 04:24  [ТС]
Студворк — интернет-сервис помощи студентам
а можно как и в первый раз и то и другое и побольше))!!!!!!!!!!!!
вы гений!!!!!!Спасибо!!!!!!!
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 04:36
Elena_Tu, самое простое, что приходит в голову - это взять массив или List. Я взял бы List, так как с ним проще работать. И просто реализовываете все необходимые методы. Из названных вами все методы занимают не более 5 строк, уточните только что должен возвращать метод toString и в каком виде.
isEmpty - проверяете, что тот контейнер, на котором вы строите свой стек не пуст
size - возвращаете текущий размер вашего контейнера
pop и push - и так все понятно, что делают и как реализовывать.

ЗЫ. хватит жать под каждым моим постом кнопку "+1"
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 04:47  [ТС]
а можно один пример какой-нибудь из 5 строк? с объяснением?
Вот это метод toString из книги, который вроде как надо дописать, я правда вообще не пойму что это такое%
Java
1
2
3
4
5
6
7
8
9
  public String toString()
  {
    String result = "";
 
    for (int scan=0; scan < top; scan++)
      result = result + stack[scan].toString() + "\n";
 
    return result;
  }
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 04:56
Вот, допустим, мы создаем стек на основе списка (List)
Оговорю сразу, что вершина стека будет хранится в первом элементе внутреннего контейнера.
Можно сделать и наоборот, только придется просто развернуть наоборот логику методов pop, push и peek
Java
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
// описываем сам класс как параметризированный, т.е. все элементы этого контейнера будут иметь одинаковый тип
public class Stack<Type> {
 
   public Stack() {
      // в конструкторе выделяем память под наш базовый контейнер
      // в данном случае это List
   };
 
   // объявляем сам контейнер
   private List<Type> stack;
   // хотя ничего нам не мешает создать обычный массив
   // private Type stack[]; 
   // только в этом случае придется управлять размером контейнера и сдвигами при чтении/записи
 
   public void push(Type value) {
      // реализовываем помещение нового элемента в первый элемент внутреннего контейнера
      // для обычного массива не забываем увеличить размер массива на 1
   }
 
   public Type pop() {
      // получаем и сохраняем значение последнего элемента внутреннего контейнера во 
      // временную переменную, удаляем этот элемент и возвращаем временную переменную
   }
 
   public Type peek() {
      // возвращаем значение последнего элемента внутреннего контейнера
      // в отличие от pop этот элемент не удаляем
   }
 
   public int size() {
      // возвращаем размер внутреннего контейнера. 
   }
 
   public boolean empty() {
      // проверяем равен ли размер внутреннего контейнера 0 или нет
   }
 
   public String toString() {
      // ваша логика перевода стека в строку
   }
}
Собственно, простой стек создан


Цитата Сообщение от Elena_Tu Посмотреть сообщение
а можно один пример какой-нибудь из 5 строк? с объяснением?
я так реализовал метод toString
Java
1
2
3
4
5
6
7
8
9
10
11
public String toString() {
   String strStack = "";
   // берем размер стека, т.к. вершина стека - это последний элемент контейнера
   int index = stack.size();
   // и идем справа налево, записывая значения элементов контейнера в строку через пробел
   while (index-- != 0) {
      strStack += stack.get(index) + " ";
   }
   // возвращаем наш стек в виде строки
   return strStack;
}
Делал на базе списка
1
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 05:02  [ТС]
если я все это смогу написать, то потом просто соеденить с той программой, что поначалу была я понимаю не получиться%?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 09:59
Elena_Tu, я сейчас написал и у меня все это прекрасно работает
Весь класс с форматированием у меня занял 43 строки.

А сейчас, если вы не против, то я пойду спать, все-таки 4 часа утра за окном
Если есть вопросы - пишите, как проснусь - отвечу

Добавлено через 4 часа 53 минуты
Ну как успехи?
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 16:52  [ТС]
я нашла готовый код, но сама так и не поняла что делать, а так хочется самой написать, можете поподробнее рассказать?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 17:07
Цитата Сообщение от Elena_Tu Посмотреть сообщение
можете поподробнее рассказать?
Какой момент подробнее рассказать?
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 19:04  [ТС]
какие переменные декларировать (top and size)? какой size брать, нужен ли он воообще, или каждый раз так как в toString вы делали
int index=stack.size()? как ошбики определять, например, если стак пустой?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 19:08
Цитата Сообщение от Elena_Tu Посмотреть сообщение
как ошбики определять, например, если стак пустой?
Интересная мысль, когда ночью писал - не учел этого. Сча доделаю работу и посмотрю
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 19:14  [ТС]
мне хотя бы пока без ошибок этих, каков алгоритм написания методов?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 19:16
Elena_Tu, алгоритм каждого метода описан в 24 посте
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 19:20  [ТС]
если бы я поняла с первого раза, я бы не переспрашивала, а если бы понимала, что преподаватель говорит, так вообще давно уже обедать пошла
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 19:21
Может лучше код, который обсудим и разберем?
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 19:24  [ТС]
Давайте ваш, а потом мой? который у нас в книге дан, которой у меня нет( но код перепечатала
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 19:25
Вот мой, но без обработки ошибок
Java
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
42
43
import java.util.ArrayList;
import java.util.List;
 
public class Stack<Type> {
 
   public Stack() {
      stack = new ArrayList<Type>();
   };
 
   private List<Type> stack;
 
   public void push(Type value) {
      stack.add(value);
   }
 
   public Type pop() {
      Type currentValue = stack.get(stack.size() - 1);
      stack.remove(stack.size() - 1);
      return currentValue;
   }
 
   public Type peek() {
      return stack.get(stack.size() - 1);
   }
 
   public int size() {
      return stack.size();
   }
 
   public boolean empty() {
      return stack.isEmpty();
   }
 
   public String toString() {
      String strStack = "";
      int index = stack.size();
      while (index-- != 0) {
         strStack += stack.get(index) + " ";
      }
      return strStack;
   }
 
}
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 19:32  [ТС]
Цитата Сообщение от M128K145 Посмотреть сообщение
public Type pop() { Type currentValue = stack.get(stack.size() - 1); stack.remove(stack.size() - 1); return currentValue; }
вот это не очень понятно(
и не очень понятно с peek
И все таки как же быть с пустым stack?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 19:38
Цитата Сообщение от Elena_Tu Посмотреть сообщение
вот это не очень понятно(
Помним, что вершина стека - это последний элемент нашего внутреннего контейнера.
Метод pop - возвращает значение вершины стека и удаляет этот элемент. Мы так и делаем
Java
1
2
3
4
5
6
public Type pop() {
   Type currentValue = stack.get(stack.size() - 1); // сохраняем значение вершины стека
   // во временную переменную
   stack.remove(stack.size() - 1); // удаляем вершину стека, т.к. ее уже посмотрели
   return currentValue; // возвращаем значение вершины
}
Цитата Сообщение от Elena_Tu Посмотреть сообщение
peek метод тоже, мы же не должны удалять, почему уменьшаем размер ?
Peek - возвращает значение вершины, не удаляя ее. Точно так мы и делаем
Java
1
2
3
4
public Type peek() {
   return stack.get(stack.size() - 1); // возвращаем значение вершины стека
   // при этом не удаляем ее
}
stack.size() - 1 - это не уменьшение размера, это обращение по индексу к последнему элементу контейнера, т.к. нумерация начинается с нуля и индекс последнего элемента равен размер этого контейнера - 1
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
16.02.2011, 20:11  [ТС]
а как быть в empty list?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2011, 20:16
Цитата Сообщение от Elena_Tu Посмотреть сообщение
а как быть в empty list?
имеете в виду метод стека
Java
1
boolean empty();
?
Здесь несколько вариантов, если делать на списке, то вы можете вернуть значение метода isEmpty принадлежащего списку(как это сделал я), также вы можете вернуть результат сравнения
Java
1
return stack.size() == 0;
, такой способ годится даже если вы делаете стек не на списке, а на массиве
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.02.2011, 20:16

Вывод на печать DBGrid из TabSheet на печать в файл ворда
Здравствуйте, не могли бы помочь с выводом на печать? В делфи 10 подключена база и информация выводится в DBGrid на TabSheet. Необходимо...

заполнение структуры, где-то ошибка run-time check failure #2 stack around the variable a was corrupted
Просмотрите пожалуйста код, ошибка run-time check failure #2 stack around the variable 'Data' was corrupted. Почитал, что она возникает,...

Вывод ошибки без Stack trace
Делаю так: function handleError($errno, $errstr, $errfile, $errline, array $errcontext) { // error was suppressed with the...

Ввод и вывод кирилицы, stack around the variable...
Разбирался с вводом и выводом русских слов через chartooema, все правильно отображается, но после завершения программы сразу вылетает...

Создание, заполнение и печать бланка
Здравствуйте, возник вопрос - через что реализовать &quot;бланк&quot;, к примеру как препроводительная ведость для инкассации.. Ломаю голову


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru