Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
6 / 6 / 2
Регистрация: 19.02.2011
Сообщений: 36

работа со строками

24.06.2011, 18:34. Показов 1616. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется строка символов. В числе прочих в этой строке допускается использование скобок трех типов – (), [] и {}. Скобки разных типов могут быть вложены друг в друга. Необходимо написать функцию, получающую такую строку в качестве параметра. Функция возвращает “True”, если скобки в строке используются корректно – то есть соблюдается правильная последовательность расстановки и сбалансированность. Функция возвращает “False” для всех остальных случаев.
Варианты правильных строк:
• “ab ( cd ) ef”
• “ab [ ( cd ) ] ( [ ef ] ) gh”
• “abcdef”
Варианты неправильных строк:
• “ab ) cd ) ef”
• “ab ( cd { ef ) gh } ij”
помогите решит задачу плиз!!!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2011, 18:34
Ответы с готовыми решениями:

Работа со строками(операции над строками)
Пусть дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами...

Работа со строками, заполнить компоненты строками из файла
Привет! Нужна помощь в заполнении формы В общем, есть форма отправки письма. У нее есть 2 функции, сохранить письмо и открыть письмо (на...

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

2
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
24.06.2011, 19:54
Лучший ответ Сообщение было отмечено ilshat09 как решение

Решение

Код не мой.

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
using System.Collections.Generic;
//...
        public bool Return(string s)
        {
            // Стек скобок
            Stack<char> brackets = new Stack<char>();
            // Лист открывающих скобок
            List<char> open = new List<char>(new[] { '(', '{', '[' });
            // Лист закрывающих скобок
            List<char> close = new List<char>(new[] { ')', '}', ']' });
            // Результат проверки строки
            bool error = false;
            // Проходим циклом по всем символам в строке
            foreach (var ch in s)
                // Если символ принадлежит списку открывающих символов
                if (open.Contains(ch))
                    // Заносим в стек ожидаемый закрывающий символ
                    brackets.Push(close[open.IndexOf(ch)]);
                // Если символ относится к закрывающим
                else if (close.Contains(ch))
                    // Если стек пустой, либо символ на вершине стека не соответствует текущему закрывающему
                    if (brackets.Count == 0 || brackets.Pop() != ch)
                    {
                        // Ошибка в строке
                        error = true;
                        // Выходим из цикла
                        break;
                    }
            // Если в процессе проверки получили ошибку, либо стек не пустой
            if (error || brackets.Count > 0)
                return false;
            else
                return true;
        }
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
24.06.2011, 20:23
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
using System;
 
namespace SomeNamespace {
    class Program {
        static bool IsCorrect(string arg) {
 
            string brackets = string.Concat(arg.Split("qwertyuiopasdfghjklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM".ToCharArray()));
 
            int countBefore = brackets.Length; //длина мессива до удаления парных скобок
            int countAfter = brackets.Length;  //длина мессива после удаления парных скобок
            int diff = brackets.Length;        //разница
 
            do {
                countBefore = brackets.Length;
                //удаляем парные скобки
                brackets = brackets.Replace("{}", string.Empty).Replace("[]", string.Empty).Replace("()", string.Empty);
                countAfter = brackets.Length;
                diff = countBefore - countAfter;
            } while(Math.Abs(diff) != 0);
 
            if(countAfter == 0) {
                return true;
            } else {
                return false;
            }
        }
        public static void Main(string[] args) {
            string argumentFalse = "a[sd{addad]asd(ad)asd]";
            string argumentTrue = "a[sd{addad}asd(ad)asd]";
            Console.WriteLine(IsCorrect(argumentFalse).ToString());
            Console.WriteLine(IsCorrect(argumentTrue).ToString());
            Console.ReadKey();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2011, 20:23
Помогаю со студенческими работами здесь

Задание по темам: ООП, исключения, работа со строками (возможно применение коллекций List), работа с компоновщиком
ТЯЖЕЛО РАБОТАТЬ С КОМПОНОВЩИКОМ. БУДУ РАД ВАШИМ ОТВЕТАМ. 1. Ознакомиться с принципом работы структурного шаблона проектирования...

Работа со строками
Вставить после вхождения строки str подстроку str1. Попытался сам сделать, но дальше этого работа не идёт. Нужна помощь. #include...

Работа со строками
6. Напишите сценарий, в котором определяется количество &quot;счастливых&quot; шестизначных автобусных билетов, т. е. таких, в номерах которых сумма...

Работа со строками
Дана строка. Преобразовать все строчные1|прописные2 латинские3|русские4 буквы в прописные1|строчные2.

Работа со Строками
Дана строка текста. Группы символов, разделенных одним или несколькими пробелами назовём словами.Пробелы могут находиться как в начале, так...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru