Wyrażenia nawiasowe

Wyrażeniem nawiasowym nazywamy dowolny skończony ciąg nawiasów: „[” i „]”. Przykładowo: [ [ ] [ ] ]

Wyrażenie nawiasowe jest poprawne, jeśli:

– jest wyrażeniem pustym (nie zawiera żadnych nawiasów)

– jest postaci AB, gdzie A i B są poprawnymi wyrażeniami nawiasowymi

– jest postaci [ A ], gdzie A jest poprawnym wyrażeniem nawiasowym

Przykład: wyrażenia [ [ ] ] oraz [ [ ] [ ] ] są poprawne. Niepoprawne jest za to wyrażenie [ ] ] [ ] ].

Niech w1, w2, …, wn będą kolejnymi nawiasami w pewnym wyrażeniu nawiasowym W. Przyjmijmy teraz, że z każdym nawiasem otwierającym „[” wiążemy liczbę +1, a z każdym nawiasem zamykającym „]” – liczbę -1. Niech si będzie liczbą związaną z nawiasem wi. Wówczas głębokością nawiasu wk w wyrażeniu W nazywamy sumę:

Sk = s1 + s2 + … + sk

Głębokością wyrażenia W nazwiemy największą głębokość jego nawiasów, czyli maksimum z liczb Sk.

Zadanie 1.

Wskaż, czy dane wyrażenie nawiasowe jest poprawne. Wpisz Tak, jeśli wyrażenie jest poprawne lub Nie – jeśli nie jest poprawne. Wyrażenie nawiasowe

Poprawne (Tak/Nie)

[ ]

Tak

[ ] [ ]

[ [ ] [ ] ] [ ] ]

[ ] [ [ ] [ [ ] [ [ ] [ ] ] ] ]

[ [ ] [ ] [ [ [ ] [ ] ] [ ] ] ]

     

Zadanie 2.

Dla zadanych przykładów policz głębokość wyrażenia. Wyrażenie nawiasowe

Głębokość

[ ]

1

[ ] [ ]

[ [ ] [ ] ]

[ [ ] [ [ ] ] ]

[ [ [ [ ] [ ] ] [ ] ] ]

Zadanie 3.

Dane w pliku dane2_3.txt zapisano w oddzielnych wierszach. W każdym wierszu znajduje się poprawne wyrażenie nawiasowe złożone z nawiasów kwadratowych (nieoddzielonych żadnym znakiem).

Napisz program, który dla zadanych wyrażeń nawiasowych w pliku dane2_3.txt obliczy ich głębokości.

Rozwiązanie

Dla danych z pierwszych czterech wierszy w pliku dane2_3.txt:

[][][]

[[[]]]

[[][][]]

[[[]]]

Odpowiedź

1

3

2

3

Utwórz plik  o nazwie dane2_3.txt i skopiuj do niego  poniższe dane.

[][][]
[[[]]]
[[][][]]
[[[]]]
[][][][]
[[[[]]]]
[[[][]][]]
[[[[]]]]
[][][[]]
[[[]]]
[[][[]][]]
[[[[][]]]]
[][][]
[[[]]]
[[][[][[]][]][[][]]]
[[[[][][][[]]]]]
[][][][][][][][]
[[[]]][]
[[][][][[[[]]]]]
[[[]]]
[[][][]][[][][]][[][][]]
[[[[]]][[[]]][[[]]]]
[[[[][][]][[][][]]]]
[[[[[[]]]]]]
[][[[[]]]][]
[[[[[][][]]]]]
[[][][]][][[[]]]
[[[[[]]][[[]]][[[]]]]]
[][][][][][][][][][[[[[[]]]]]]
[[[[]]][[[[][]]]]]
[[[[[][][]][[][][]][[][][]][[][][]][[][][]]]]]
[[[[]]][[[]]][[]][[[[]]]][]]
[][][][[]][[]][[]][[]]
[[][][[[]]]]
[[[[[[][][]][[][][]]]]]]
[[[[[[[[[]]]]]]]]]
[][][][][][][][[]][][][][[]][][[[]]]
[[[[[]]][[[]]][[[]]][[[]]][[[]]][]]]
[[[][][]][][[][][]]]
[[][[]][][[]][[[]]]]
[][][][][][][][][][[[[]]]][[[[]]]][[[][][]]]
[[[][[]][][[]][[[]]]][[][[]][][[]][[[]]]]]
[[][][][][][][][[]][][][][[]][][[[]]]][][][][][][][][[]][][][][[]][][[[]]]
[[[][[[[[[]]]]]]]]
[[[][][][[[]]][[][][]][[][][]]]]
[[[][][][[[]]]]]
[[][][]][[][][][]][[][][][][]][[][][][[]][][]]
[[[[[[]]][[[]]][[[]]][[[]]][[[]]][[[]]]]]]
[][][[[[][]][]][[][[][][]][]]]
[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]

Zadanie 4.

Napisz program, który dla wyrażeń nawiasowych zapisanych w pliku dane2_4.txt sprawdzi, czy są one poprawne. Dane w pliku zapisano po jednym wyrażeniu w wierszu, podobnie jak w pliku o nazwie dane2_3.txt.

Rozwiązanie

Dla danych z pierwszych czterech wierszy pliku dane2_4.txt:

[][][]

[[[]]]

[[][][]]

[[[]]]]

Odpowiedź

tak

tak

tak

nie

 

Utwórz plik  o nazwie dane2_4.txt i skopiuj do niego  poniższe dane.

[][][]
[[[]]]
[[][][]]
[[[]]]]
[][][][]
[[[[]]]]
[[[][]][]]
[[[[]]]]
[][][[]]
[[[[]]]
[[][[]][]]
[[[[][]]]]
[][][]
[[[]]]
[[][[[][[]][[]][[][]]]
[[[[][][][[]]]]]
[][][][][][][][]
[[[]]][]
[[][][][[[[]]]]]
[[[]]]]]]
[[][][]][[][][]][[][][]]
[[[[]]][[[]]][[[]]]]
[[[[][][]][[][][]]]]
[[[[[[]]]]]]
[][[[[]]]][]
[[[[[][][]]]]]
[[][][]][][[[]]]
[[[[[]]][[[]]][[[]]]]]
[][][][][][][][][][[[[[[]]]]]]
[[[[]]][[[[][]]]]]
[[[[[][][]][[][][]][[][][]][[][][]][[][][]]]]]
[[[[]]][[[]]][[]][[[[]]]][]]
[][][][[]][[]][[]][[]]
[[][][[[]]]]
[[[[[[][][]][[][][]]]]]]]
[[[[[[[[[]]]]]]]]]
[][][][][][][][[]][][][][[]][][[[]]]
[[[[[]]][[[]]][[[]]][[[]]][[[]]][]]]
[[[][][]][][[][][]]]
[[][[[]][][[[]][[[]]]]
[][][][][][][][][][[[[]]]][[[[]]]][[[][][]]]
[[[][[]][][[]][[[]]]][[][[]][][[]][[[]]]]]
[[][][][[][][][][[]][][][][[]][][[[]]]][][][][][[][][][[[]][][][][[[]][][[[]]]
[[[][[[[[[]]]]]]]]
[[[][][][[[]]][[][][]][[][][]]]]
[[[][][][[[]]]]]
[[][][]][[][][][]][[][][][][]][[][][][[]][][]]
[[[[[[]]][[[]]][[[]]][[[]]][[[]]][[[]]]]]]
[][][[[[][]][]][[][[][][]][]]]
[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]