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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tota_Luke
-3 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 16
#1

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

19.05.2011, 23:20. Просмотров 813. Ответов 6
Метки нет (Все метки)

Разработать программу, определяющую симметричность произвольного текста любой длины. Текст всегда должен оканчиваться точкой. Эту задачу рекомендуется решать с помощью двух стеков. В первый стек следует поместить весь текст, затем во второй стек перенести его половину так, чтобы последний символ текста находился на дне стека. Далее путем поэлементного сравнения этих стеков получить ответ на вопрос о симметричности текста.
Ребят, есть у кого какие идеи?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 23:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со стеками (C++):

Работа со стеками - C++
С чем связанны данные ошибки. Компилятор вижак 10 экспресс выпуск. #include <fstream> using namespace std; #include "stack.cpp"//не...

Работа со стеками - C++
Люди подскажите как написать функцию для вывода на экран заданного элемента стека к примеру 3 или 5)

Работа со стеками на Dev C++ - C++
задание такое: удалить из списка все вхождения элемента , имеющего заданное значение. Ошибку выводит , что не объявлен random . Помогите...

Работа со стеками и удаление максимального - C++
Нужно найти самые большой элемент и удалить его из ммассива Добавлено через 10 секунд ...

Работа со стеками, объяснение кода программы - C++
Есть код программы (вырванный из целой проги кусок). В нем используются стеки. Помогите, пожалуйста, построчно (максимально подробно)...

Задача со стеками в Си++ - C++
Нужно создать стек, добавить в него элементы и удалить каждый второй элемент стека.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 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 Посмотреть сообщение
Эту задачу рекомендуется решать с помощью двух стеков. В первый стек следует поместить весь текст, затем во второй стек перенести его половину так, чтобы последний символ текста находился на дне стека.
Нахожу здесь лишним заполнять один из стеков всем текстом, потому что одна из половин будет просто лишней. Достаточно заполнять стек с двух концов до середины, а потом поэлементно вытаскивать из двух контейнеров первые символы и их сравнивать...
1
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
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;
}
1
Напильнег
480 / 120 / 10
Регистрация: 30.09.2010
Сообщений: 473
20.05.2011, 01:30 #4
Цитата Сообщение от Mиxaил Посмотреть сообщение
Нахожу здесь лишним заполнять один из стеков всем текстом, потому что одна из половин будет просто лишней. Достаточно заполнять стек с двух концов до середины, а потом поэлементно вытаскивать из двух контейнеров первые символы и их сравнивать...
А я нахожу, что эту задачу надо решать исходя из того, что к тексту возможен только последовательный доступ, и длина его заранее не известна.

Добавлено через 5 минут
Мдя, оба приведенных "решения" демонстрируют только известный принцип - лишние знания дураку только вредят
0
Tota_Luke
-3 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 16
20.05.2011, 11:04  [ТС] #5
Спс ребят, можете добавить коменты к строкам в ваших кодах, ато многое для меня не понятно...
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.05.2011, 11:13 #6
Цитата Сообщение от Tota_Luke
В первый стек следует поместить весь текст, затем во второй стек перенести его половину так, чтобы последний символ текста находился на дне стека.
вместо первого стека записать в массив, поставить указатели на начало и конец массива
двигать их к центру текста и сравнивать значения
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
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;
      //....
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 13:15
Привет! Вот еще темы с ответами:

операции со стеками - C++
Я нашел интересный код но так и не пойму как выполняется в обшем путаница! Поставил комменты,можете исправить комменты если неверно...

Создание библиотеки для работы со стеками - C++
Есть задание &quot;разработать библиотеку для работы со структурой данных типа стек&quot; . Я создал 3 файла: первый &quot;stek.cpp&quot;, в котором содержится...

Создание функции для работы со стеками по шаблону - C++
Доброго времени суток. Решил написать ряд универсальных функций, которые бы работали со стеками на основе списков, а заодно разобраться с...

Работа со стеками. Ошибка "Ожидался тип" - PascalABC.NET
Доброго времени суток всем. Решала задачку на стеки. К моему удивлению паскаль начал ругаться на первой же строчке и со словами &quot;Ожидался...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.05.2011, 13:15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru