Форум программистов, компьютерный форум CyberForum.ru

Работа со стеками - C++

Восстановить пароль Регистрация
 
Tota_Luke
-3 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 16
19.05.2011, 23:20     Работа со стеками #1
Разработать программу, определяющую симметричность произвольного текста любой длины. Текст всегда должен оканчиваться точкой. Эту задачу рекомендуется решать с помощью двух стеков. В первый стек следует поместить весь текст, затем во второй стек перенести его половину так, чтобы последний символ текста находился на дне стека. Далее путем поэлементного сравнения этих стеков получить ответ на вопрос о симметричности текста.
Ребят, есть у кого какие идеи?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 23:20     Работа со стеками
Посмотрите здесь:

Работа со стеками C++
C++ Работа со структурами, работа с векторами.
C++ операции со стеками
C++ Работа с битами И Работа с символьными данными
C++ Задача со стеками в Си++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
19.05.2011, 23:58     Работа со стеками #2
C++
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
#include <iostream>
#include <string>
#include <stack>
 
int main ()
{
    std::string main_string = "qwerewq";
 
    std::stack < char > char_stack_first;
    std::stack < char > char_stack_second;
 
    for (int index = 0; index < main_string.length() / 2; index++)
    {
        char_stack_first.push ( main_string [index] );
        char_stack_second.push( main_string [main_string.length() - index - 1] );
    }
 
    bool Checker = true;
    while ( ( !char_stack_first.empty() ) && ( Checker ) )
    {
        Checker = ( char_stack_first.top() == char_stack_second.top() );
        char_stack_first.pop();
        char_stack_second.pop();
    }
 
    std::cout << Checker << std::endl;
 
    std::cin.get();
    return 0;
}
Добавлено через 8 минут
Насчет точки: будем считать, что я ее заранее удалил, дабы просто работать с предложением...

Добавлено через 12 минут
Цитата Сообщение от Tota_Luke Посмотреть сообщение
Эту задачу рекомендуется решать с помощью двух стеков. В первый стек следует поместить весь текст, затем во второй стек перенести его половину так, чтобы последний символ текста находился на дне стека.
Нахожу здесь лишним заполнять один из стеков всем текстом, потому что одна из половин будет просто лишней. Достаточно заполнять стек с двух концов до середины, а потом поэлементно вытаскивать из двух контейнеров первые символы и их сравнивать...
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.05.2011, 01:03     Работа со стеками #3
C++
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
#include <iostream>
#include <string>
#include <stack>
#include <vector>
 
int main ()
{
      std::string main_string = "qwerewq";
      std::stack<char,std::vector<char> > first(std::vector<char> (main_string.begin(),main_string.end ()));
      std::stack < char > second;
      int temp= first.size()/2;
      for (int index = 0; index < temp; index++)      {
        second.push ( first.top() );
        first.pop();
      }
 
      bool Checker = true;
      while ( ( !second.empty() ) && ( Checker ) )
      {
        Checker = (first.top() == second.top() );
        first.pop();
        second.pop();
      }
 
     std::cout << Checker << std::endl;
 
     std::cin.get();
     return 0;
}
Напильнег
480 / 120 / 10
Регистрация: 30.09.2010
Сообщений: 473
20.05.2011, 01:30     Работа со стеками #4
Цитата Сообщение от Mиxaил Посмотреть сообщение
Нахожу здесь лишним заполнять один из стеков всем текстом, потому что одна из половин будет просто лишней. Достаточно заполнять стек с двух концов до середины, а потом поэлементно вытаскивать из двух контейнеров первые символы и их сравнивать...
А я нахожу, что эту задачу надо решать исходя из того, что к тексту возможен только последовательный доступ, и длина его заранее не известна.

Добавлено через 5 минут
Мдя, оба приведенных "решения" демонстрируют только известный принцип - лишние знания дураку только вредят
Tota_Luke
-3 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 16
20.05.2011, 11:04  [ТС]     Работа со стеками #5
Спс ребят, можете добавить коменты к строкам в ваших кодах, ато многое для меня не понятно...
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.05.2011, 11:13     Работа со стеками #6
Цитата Сообщение от Tota_Luke
В первый стек следует поместить весь текст, затем во второй стек перенести его половину так, чтобы последний символ текста находился на дне стека.
вместо первого стека записать в массив, поставить указатели на начало и конец массива
двигать их к центру текста и сравнивать значения
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 13:15     Работа со стеками
Еще ссылки по теме:

Работа со стеками на Dev C++ C++
Создание библиотеки для работы со стеками C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.05.2011, 13:15     Работа со стеками #7
C++
1
2
3
4
5
6
7
8
9
      //инициализируем стек строкой main_string и объявляем второйпустой стек
      std::stack<char,std::vector<char> > first(std::vector<char> (main_string.begin(),main_string.end ()));
      //....  
      //Запихиваем во второй стек значения из первого, как и надо по заданию. Первый тем самым уменьшается
      int temp= first.size()/2;
      //....  
      //сравниваем стеки поэлементно   
      bool Checker = true;
      //....
Yandex
Объявления
20.05.2011, 13:15     Работа со стеками
Ответ Создать тему
Опции темы

Текущее время: 21:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru