Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 42

Использовать контейнер Stack для создания стека, хранящего символы

03.04.2014, 20:52. Показов 2534. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят помогите пожалуйста)))
Использовать контейнер Stack для создания стека, хранящего символы. В созданном стеке найти и поместить на вершину самый последний по алфавиту символ. Порядок остальных символов оставить прежним.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2014, 20:52
Ответы с готовыми решениями:

Разработать собственный класс для создания стека, хранящего символы
Разработать собственный класс MyStack для создания стека, хранящего символы. В созданном стеке найти и удалить первый от вершины гласный...

Использовать контейнер ArrayList для создания связного списка строк
Использовать контейнер ArrayList для создания связного списка строк. Переместить блок (группу строк), находящихся между двумя указанными...

Использовать контейнер List<string> для создания связного списка строк
Использовать контейнер List&lt;string&gt; для создания связного списка строк. Создать два списка символьных строк С1 и С2. Создать функцию,...

9
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
03.04.2014, 21:07
Не думаю, что Stack<T> для этой цели будет подходящим решением... Хотя если такое задание, используйте... Хотя SortedSet<T> подошел бы лучше...
0
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 42
04.04.2014, 16:22  [ТС]
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack <string> Mystack = new Stack<string>();
            char razdel = ' ';
            string stroka = Convert.ToString(Console.ReadLine());
            string[] mas1 = stroka.Split(razdel);
            for (int i = 0; i < mas1.Length; i++)
            {
                Mystack.Push(mas1[i]);
            }
            string max = mas1[0];
            var ind = 0;
            for (int i = 1; i < mas1.Length; i++)
            {
                if (mas1[i].CompareTo(max) > 0)
                {
                    max = mas1[i];
                    ind = i;
                }
                else
                {
                    Console.WriteLine("___");
                }
            }
            string s = "";
            for (int i = 0; i < mas1.Length; i++)
            {
                // ?
            }
            Console.WriteLine("Элементы:  {0} ", s);
            Console.WriteLine();
            Console.WriteLine(max);
            Console.WriteLine();
            foreach (var a in Mystack)
            {
                Console.Write(a);
            }
            Console.ReadLine();
            
                                                   
 
        }
    }
}
Вот что я сделала осталось только поместить самую последнюю букву алфавита в вершину стека у меня что - то не получается, кто может подправьте )))
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
04.04.2014, 16:38
Oksana_C, стек не предназначен для таких операций. но так как имеем такое условие, то остается только перекладывать в другой стек элементы, а потом обратно.
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
Stack <string> Mystack = new Stack<string>();
            char razdel = ' ';
//тут не нужен Convert мы и так получаем строку
            string stroka = Console.ReadLine();
            string[] mas1 = stroka.Split(razdel);
            for (int i = 0; i < mas1.Length; i++)
            {
                Mystack.Push(mas1[i]);
            }
Stack <string> tmpstack = new Stack<string>();    
char max = (char)0;     
//когда стек станет пустым - получим исключение и вылетим из цикла
try
{
while(true) 
{
     if(max.CompareTo(Mystack.Peek())<0) max = Mystack.Pop();
     else tmpstack.Push(Mystack.Pop());
}
}
catch {}
try
{
while(true) 
{
     Mystack.Push(tmpstack.Pop());
}
}
catch {}
Mystack.Push(max);
0
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 42
04.04.2014, 16:48  [ТС]
Если кому надо, вот код самой проги уже сделанный:
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
31
32
33
34
35
36
37
38
39
40
41
42
static void Main(string[] args)
        {
            Stack <string> Mystack = new Stack<string>();
            char razdel = ' ';
            string stroka = Convert.ToString(Console.ReadLine());
            string[] mas1 = stroka.Split(razdel);
            for (int i = 0; i < mas1.Length; i++)
            {
                Mystack.Push(mas1[i]);
            }
            string max = mas1[0];
            var ind = 0;
            for (int i = 1; i < mas1.Length; i++)
            {
                if (mas1[i].CompareTo(max) > 0)
                {
                    max = mas1[i];
                    ind = i;
                }
                else
                {
                    Console.WriteLine("___");
                }
            }
            string temp = "";
            for (int i = 0; i < mas1.Length; i++)
            {
                temp = mas1[ind];
                mas1[ind] = mas1[i];
                mas1[i] = temp;
            }
            foreach (var elem in mas1)
            {
                Console.Write("{0} ", elem.ToString());
            }
            Console.ReadLine();
            
                                                   
 
        }
    }
}
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
04.04.2014, 17:00
Oksana_C, вы изменили порядок элементов в массиве, а не в стеке
0
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 42
04.04.2014, 18:10  [ТС]
Можно почистить стек с помощью clear(); и по новой вставить в стек же ;3
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
04.04.2014, 18:26
Oksana_C, как вариант. но условие задачи подразумевает чтоб вы научились работать со стеком. потому другие варианты скорее всего принесут трояк а не нормальную оценку
1
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 42
04.04.2014, 18:34  [ТС]
Да мне сейчас главное все лаб. работы по быстрому хоть как то закрыть), чтобы потом курсач писать и ни о чём не думать, т.к. курсача 2 да и стеки я делала, когда ещё стеки не объясняли просто у нас как - то поздно материал дают ;C
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
05.04.2014, 00:42
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static void Main(string[] args)
{
    string stroka = "abcdzefgh";
    Stack<char> Mystack = new Stack<char>();
    foreach (char ch in stroka) Mystack.Push(ch);
    
    foreach (char ch in Mystack) Console.Write("{0} ", ch); Console.WriteLine();
    Mystack.Push(maxToTop(Mystack, (char)0));
    foreach (char ch in Mystack) Console.Write("{0} ", ch); Console.WriteLine();
 
    Console.ReadKey();
}
 
private static char maxToTop(Stack<char> stack, char maxCh)
{
    if (stack.Count > 0) {
        char ch = stack.Pop();
        maxCh = maxToTop(stack, ch > maxCh ? ch : maxCh);
        if (ch != maxCh) stack.Push(ch);
    }
    return maxCh;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2014, 00:42
Помогаю со студенческими работами здесь

Использовать контейнер ArrayList для создания связного списка строк. Изменить блок (группу строк) находящихся между двумя указанными строками
Ребят помогите пожалуйста))) Использовать контейнер ArrayList для создания связного списка строк. Изменить блок (группу строк)...

Из одного стека, хранящего символы, создать два новых стека
Из одного стека, хранящего символы, создать два новых стека: один с латинскими буквами, удвоив каждую из них, другой со всеми остальными...

Из одного стека, хранящего символы, создать два новых стека
Из одного стека, хранящего символы, создать два новых стека: один с латинскими буквами, удвоив каждую из них, другой со всеми остальными...

Для класса Stack обеспечить обработку переполнения стека. Есть код
Добрейший денек, Товарищи программеры прошу помощи у демонов С++. Задача: Для класса Stack обеспечить обработку переполнения стека....

Какой контейнер для чего использовать?
для чего какой контейнер эффективней использовать? vector- list- map- set- queue- stack-


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru