Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 9
1

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

07.11.2016, 20:16. Показов 1713. Ответов 11
Метки нет (Все метки)

Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно, то вывести число 0. Если нет, то вывести -1.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2016, 20:16
Ответы с готовыми решениями:

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

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

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

Дана строка. Если скобки расставлены правильно, то вывести число 1. В противном случае вывести всю строку
Дана строка, содержащая несколько круглых скобок. Если скобки расставлены правильно (то есть каждой...

11
Заблокирован
07.11.2016, 20:21 2
Открывающаяся скобка +1, закрывающаяся -1. В конце должно получиться 0. Если во время счета получилось меньше нуля - уже неправильно.
Теперь пиши код.
0
11 / 11 / 4
Регистрация: 22.09.2016
Сообщений: 90
07.11.2016, 20:38 3
myia, медвежья услуга, скучно просто

Кликните здесь для просмотра всего текста
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
import java.util.Scanner;
 
public class Main {
 
    public static boolean str(String t){
        boolean r = false;
        int z = 0;
        int c = 0;
        for(int i = 0; i<t.length();i++){
            if(t.charAt(i)==')'&&c==0){
                return false;
            }
            if(t.charAt(i)=='('){
                z++;
                c++;
            }
            if(t.charAt(i)==')'){
                z--;
            }
        }
        if(z==0) r=true;
        return r;
    }
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        String t = sc.nextLine();
        System.out.println(str(t));
    }
}
0
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 9
07.11.2016, 20:50  [ТС] 4
Спасибо вам большое
0
Эксперт Java
3276 / 2730 / 831
Регистрация: 05.07.2013
Сообщений: 13,039
08.11.2016, 10:59 5
зачем нужна переменная c?
а если написать так "()a)sd("?
1
nimazzzy
08.11.2016, 11:10
  #6

Не по теме:

xoraxax, типичная ошибка у человека в такой задаче - проверяет на 0 после того, как посчитал :)

0
11 / 11 / 4
Регистрация: 22.09.2016
Сообщений: 90
08.11.2016, 11:40 7
xoraxax, да косячок. Вот так будет лучше
Кликните здесь для просмотра всего текста
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
import java.util.Scanner;
 
public class Main {
 
    public static boolean str(String t){
        boolean r = false;
        int z = 0;
        for(int i = 0; i<t.length();i++){
            if(t.charAt(i)==')'&&z<=0){
                return false;
            }
            if(t.charAt(i)=='('){
                z++;
            }
            if(t.charAt(i)==')'){
                z--;
            }
        }
        if(z==0) r=true;
        return r;
    }
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        String t = sc.nextLine();
        System.out.println(str(t));
    }
}


Добавлено через 16 минут
nimazzzy, сейчас типичная ошибка осталась но работает вроде верно
0
Заблокирован
08.11.2016, 12:02 8
Цитата Сообщение от Serg4356 Посмотреть сообщение
сейчас типичная ошибка осталась
Почему она осталась, если ты во время счета теперь проверяешь?
0
11 / 11 / 4
Регистрация: 22.09.2016
Сообщений: 90
08.11.2016, 12:22 9
nimazzzy, потому
Цитата Сообщение от nimazzzy Посмотреть сообщение
проверяет на 0 после того, как посчитал
Смотри строку 21 первого кода, и строку 19 второго. Проверка на 0 как была, так и осталась после перебора. Т.к. проверка на 0 в моем коде это проверка на соответствие количества левых и правых скобок.
Если ты говоришь о том, что я ввел "z<=0" - то это не проверка на 0, а проверка на наличие достаточного количества правых скобок перед левыми, ошибка на которую указал xoraxax.
0
Заблокирован
08.11.2016, 12:25 10
Не тормози.
Цитата Сообщение от Serg4356 Посмотреть сообщение
Смотри строку 21 первого кода, и строку 19 второго. Проверка на 0 как была, так и осталась после перебора.
Иначе никак, ясен пень.
Цитата Сообщение от Serg4356 Посмотреть сообщение
Если ты говоришь о том, что я ввел "z<=0" - то это не проверка на 0, а проверка на наличие достаточного количества правых скобок перед левыми,
Это и есть проверка на ошибку во время подсчета скобок. Та же самая проверка, что мы не ушли за 0. Странное утверждение, что условие с числом 0 это не проверка на 0
0
11 / 11 / 4
Регистрация: 22.09.2016
Сообщений: 90
08.11.2016, 12:33 11
с тобой вобщем бесполезно спорить Ок, давай так, скажи где тут ошибка, а я признаю что твой кунг фу лучше моего
0
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
08.11.2016, 12:48 12
myia, А вот Вам решение с регулярными выражениями:
Java
1
2
3
4
5
6
7
8
9
public static int checkBraces (String s){
        String pattern = "\\({1}\\w*\\){1}";
        while (s.matches(".*" + pattern + ".*")){
            s = s.replaceFirst(pattern, "");
            System.out.println(s);
        }
        if ((s.contains("("))||(s.contains(")"))) return - 1;
        return 0;
    }
Тесты:
Java
1
2
3
String[] test = {"aa(bbbb(cccc)bb)aaaa", "aaa(fff(dfdf)f)aaaaa)", ")sd)fsd()f(s(d))fsd",
                "()(qqqqqqq(uuuuu(xxxx)uu)qqq)"};
        for (String s : test) System.out.println(checkBraces(s));
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2016, 12:48

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

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

Дана строка, содержащая цифры и строчные латинские буквы. Если буквы в строке упорядочены по алфавиту, то вывести 0; в п
Дана строка, содержащая цифры и строчные латинские буквы. Если буквы в строке упорядочены по...

Проверить,правильно ли расставлены круглые скобки
Проверить, правильно ли в данной строке расставлены круглые скобки (т.е. находится ли справа от...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.