• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program sprawdzający poprawność nawiasów

Object Storage Arubacloud
0 głosów
2,597 wizyt
pytanie zadane 21 stycznia 2016 w Java przez mikus Nowicjusz (120 p.)
Witam,

mam za zadanie napisać program, który sprawdzi dowolny plik .java pod kątem poprawności występowania w nim nawiasów { } (podobnie jak w IDE).
Problem polega na tym, że nie mam pomysłu jak się za to zabrać. Zliczenie samych nawiasów nie stanowi problemu jednak nie potwierdzi to poprawności ich zapisu.

4 odpowiedzi

0 głosów
odpowiedź 21 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)

Liczba nawiasów otwarcia musi się równać liczbie nawiasów zamknięcia }, w dodatku jeśli liczba zamykających przekroczy liczbę otwierających mamy błąd.

Pętla z prostymi warunkami. Jeśli liczba } > liczba { błąd, a pod koniec jeśli liczba { != liczba } także błąd. Przypadków zastępowania {} innymi znakami nie zakładam (wiem, że w C++ występuje tak możliwość, nie wiem jak w Javie).

Tak by było dobrze. Chyba nie pominąłem innych przypadków.

komentarz 23 stycznia 2016 przez mikus Nowicjusz (120 p.)

Jednak program ma również sprawdzić poprawność ich użycia (nie tylko ich ilość).

komentarz 23 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)

Nie wiem jak to w Javie, ale w C++ takie nawiasy { } określają poza ciałami jakiś funkcji lub instrukcji, także nowy "zasięg" (ang. scope), w którym rzeczy w środku są niszczone na końcu przed }. Jeśli Java tego nie wspiera to jeden problem mniej.

Jeśli napotkasz ciąg znaków odpowiadający instrukcji sterującej (np. if lub for) ustawiasz jakiegoś boola i jeśli są oba nawiasy lub ich nie ma przed następną instrukcją - nawiasy użyte poprawnie.

Jeśli coś przypomina funkcję (niezbyt wiem jak to ogarnąć, ale będzie musiała sprawdzać użycie ( ) także) i nie ma ; na końcu definicji, musi mieć nawiasy.

Całość sprowadza się do przelecenia całego programu w poszukiwaniu nawiasów i słów kluczowych, po których mogą występować one. Możesz też podpatrzeć kod kompilatorów free source, który sprawdza składnię.

Sam postaram się takiego coś napisać i zobaczę co z tego wyjdzie.

0 głosów
odpowiedź 21 stycznia 2016 przez mbabane Szeryf (79,280 p.)
moze cos na zasadzie stosu:

napotkany otwarty nawias wrzucamy (odkladamy)  na stos, jesli napotkamy zamkniety nawias to zdejmujemy ostatni, napotkany, otwarty nawias ze stosu "i az do wyczerpania zasobu". Jesli po zakonczeniu sprawdzania stos bedzie pusty to nawiasy sa ok.
komentarz 21 stycznia 2016 przez mikus Nowicjusz (120 p.)
Jednak program ma również sprawdzić poprawność ich użycia (nie tylko ich ilość).
0 głosów
odpowiedź 23 stycznia 2016 przez Magicone Nałogowiec (45,100 p.)
Zrób sobie iteracje po całym stringu, ustaw początkową zmienną, np. opened na 0 i za każdym otwarciem danego nawiasu, czyli { inkrementuj tą wartość, a zamknięciem, czyli } dekrementuj. Jeśli po takiej operacji wartość jest ujemna, bądź po skończeniu całej pętli zmienna opened nie jest równa 0 to masz błąd składniowy. ;)
0 głosów
odpowiedź 23 stycznia 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Ja tutaj dodam jeszcze, że należy sprawdzić, czy znaki { lub } nie są częścią jakiegoś łańcucha - np. napisu który ma zostać wyświetlony.

Podobne pytania

0 głosów
0 odpowiedzi 136 wizyt
+1 głos
1 odpowiedź 379 wizyt
pytanie zadane 18 kwietnia 2021 w Python przez New_programmer Początkujący (340 p.)
0 głosów
3 odpowiedzi 504 wizyt

92,537 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...