Дана программа, решающая определенную задачу. сформулировать условие задачи, которую...

0 голосов
58 просмотров

Дана программа, решающая определенную задачу.
сформулировать условие задачи, которую решает данная программа. (паскаль)
var
i, c: integer;
sl: string;

begin
readln(sl);
c := 0;
for i := 1 to length(sl) do begin

if sl[i] = '(' then c:=c+1;
if sl[i] = ')' then c:=c-1;
end;
writeln(c = 0)
end.


Информатика (107 баллов) | 58 просмотров
0

спасибо))

0

а можно с Вами связаться помимо этого сайта?

0

Хорошее решение... я сам всегда именно так считаю в программах скобки.

0

К сожалению для арифметики не очень нет проверки на дурака

0

Тут не требуется. Но если нужно проверить, нет ли некорректно расставленных скобок, нужно все время следить, чтобы "с" не стало отрицательным. Иначе и вариант ))))) ((((( будет верным.

0

Ну а если серьезно подходить - нужно парсер писать и синтаксичкский анализатор)))

0

*синтаксический

0

разве for не должен начинаться с 0 ?

0

Не должен, если это Паскаль, а не С/С++. В Паскале символы в строке традиционно нумеруются от единицы.

Дан 1 ответ
0 голосов
Правильный ответ

Var
    i, c: integer;
    sl: string;

begin
    readln(sl);
    
    c := 0;
    for i := 1 to length(sl) do
    begin
        if sl[i] = '(' then c := c + 1;
        if sl[i] = ')' then c := c - 1;
    end;
    
    writeln(c = 0)
end.

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

(53.1k баллов)