Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
22 / 19 / 6
Регистрация: 24.12.2012
Сообщений: 435

Вывести эквивалентное инфиксное выражение и вставить левые скобки

30.03.2015, 19:53. Показов 2294. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Есть задание:
Напишите программу, которая принимает из стандартного ввода выражение
без левых скобок и выводит эквивалентное инфиксное выражение со вставленными
недостающими скобками. Например, для входных данных
1+2)*3-4)*5-6)))
программа должна вывести
((1+2)*((3-4)*(5-6)))
Если как вставить скобки которые в середине (1+2)*(3-4)*(5-6) мне понятно, то как вставить пары для последних )) не особо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2015, 19:53
Ответы с готовыми решениями:

Рекурсия: проверить, что все левые скобки в s-выражении, представляющем список х, являются крайними левыми
Определить функцию (все левые х), проверяющий, что все левые скобки в s-выражении, представляющем список х, являются крайними левыми...

Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно, то вывести число
Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно, то вывести число 0. Если нет, то вывести -1.

Дана строка, содержащая латинские буквы и скобки. Если скобки расставлены правильно - вывести 0. Иначе - номер позиции, где есть ошибочная скобка
Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно (то есть каждой открывающей соответству-ет одна...

6
4 / 4 / 0
Регистрация: 28.06.2013
Сообщений: 24
21.04.2015, 23:08
Вы так не разобрались? я тоже решаю эту задачу и не знаю как решить.
0
22 / 19 / 6
Регистрация: 24.12.2012
Сообщений: 435
24.04.2015, 23:56  [ТС]
МихаилНовопашин, увы, нет. Забросил.
0
4 / 4 / 0
Регистрация: 28.06.2013
Сообщений: 24
25.04.2015, 11:00
Ура, я РЕШИЛ))))) в яве запускаем так: java class139 1 + 2 + 3 ) + 5 + 6 ) ) )
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public class class139
{
 public static void main(String[] args)
 {
     Stack<String> stack1 = new Stack<String>();
     Stack<String> stack2 = new Stack<String>();
    Queue<String> queue1 = new Queue<String>();
    
     String[] array = args;
     StdOut.println();
     for (int i = 0; i < array.length; i++)
     {
         if (array[i].equals(")"))
         {
              stack1.push(stack2.pop());
         }
         else if (array[i].equals("("))
             continue;
         else
         {
             if (array[i].equals("+") || array[i].equals("-") ||
                 array[i].equals("*") || array[i].equals("/"))
                 stack2.push(array[i]); 
             else
                 stack1.push(array[i]); 
         }
     }
     while (!stack1.isEmpty())
         queue1.enqueue(stack1.pop());
     while (!queue1.isEmpty())
         stack1.push(queue1.dequeue());
     while (!stack1.isEmpty())
         queue1.enqueue(stack1.pop());
     Stack<String> stack = new Stack<String>();
     for (String s : queue1)
     {
         if (s.equals("+")) stack.push("( " + stack.pop() + " + " + stack.pop() + " )");
         else if (s.equals("*")) stack.push("( " + stack.pop() + " * " + stack.pop() + " )");
         else stack.push(s);
     }
     String strEnd = "";
     for (String str : stack)
         strEnd = str;
         //strEnd = str;
     String[] arr = strEnd.split(" ");
     String[] arr2 = new String[arr.length];
     for (int i = 0; i < arr.length; i++)
     {
         if (arr[i].equals(")"))
             arr2[arr2.length-1-i] = "(";
         else if (arr[i].equals("("))
             arr2[arr2.length-1-i] = ")";
         else 
             arr2[arr2.length-1-i] = arr[i];
     }
     String tochnoEnd = "";
     for (int i = 0; i < arr2.length; i++)
     {
         tochnoEnd += arr2[i] + " ";
     }
     StdOut.print(tochnoEnd);
 
 }
}
Добавлено через 6 минут
только в Вашем выражении минусы замените на плюсы или знак умножить, либо добавьте условие в код:

else if (s.equals("-")) stack.push("( " + stack.pop() + " - " + stack.pop() + " )");

Добавлено через 2 минуты
Там все дело в инфиксных и постфиксных выражениях можно про это почитать в книге Седжвика "введение в Яву".
2
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
25.04.2015, 11:12
МихаилНовопашин, а зачем ява в разделе с++?
0
4 / 4 / 0
Регистрация: 28.06.2013
Сообщений: 24
25.04.2015, 19:01
тут смысл в алгоритме решения задачи.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
26.04.2015, 07:43
Задача некорректна и в данной постановке не имеет однозначного ответа.
А для выражения 1 + 3 * 4 - 5)) какой из этих ответов более "эквивалентный"?
1 + 3 * (4 - (5))
1 + (3 * 4 - (5))
(1 + 3 * 4 - (5))

1 + (3 * (4 - 5))
(1 + 3 * (4 - 5))

(1 + (3 * 4 - 5))

1 + 3 * 4 - ((5))
1 + 3 * ((4 - 5))
1 + ((3 * 4 - 5))
((1 + 3 * 4 - 5))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2015, 07:43
Помогаю со студенческими работами здесь

Выражение завернутое в скобки
зачем в скобки заворачивать if ( !( $handle = fopen( $counterFile, “r” ) ) )что это дает?

Регулярное выражение, квадратные скобки
Пример: ,,,],111111] Необходимо составить регулярку, чтобы получить из вышеуказанного примера: 123 абв abc &quot;Привет...

Упростить выражение (раскрыть скобки)
Как упростить такое выражение средствами maple: a(b+b)+a(b+b)+a(b-b)-a*b-b*a-a(b+b)-a(b+b)

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

Что значит выражение с точкой после скобки?
mov ebx,.oe_phys_offs ;так например и как это записать в fasm?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru