Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2009, 14:38   #1
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость Проверка на колличество скобок!

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,strUtils;
    var
    i,k,p,a,b,left,right:integer;
    st:string;

begin
st:='(я оче)( люблю про)рамить на(делфи)';
k:=1;
p:=1;
left:=0;
right:=0;


for I := 1 to Length(st)-1 do
   begin
   a:=PosEx('(',st,k);
        if a<>0 then
           begin
                inc(left);
                k:=a+1;
            end;

   b:=PosEx(')',st,p);
        if b<>0 then
           begin
                inc(right);
                p:=b+1;
            end;

   end;

 if left=right then
      writeLn('Porobnu')
 else
      writeLn('Ne porobnu');




   readln;
end.
Сел накидал, все работает, но как можно упростить еще код программы?
ЗЫ:препод всегда хочеть, что бы всего было по минимуму(память, время)
ЗЫЫ:есть ли аналог функции PosEx() на С++?
Lemo вне форума Ответить с цитированием
Старый 01.11.2009, 15:14   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

а вот так нельзя
Код:
for I := 1 to Length(st) do
begin
if a[i]='(' then inc(left);
if a[i]=')' then dec(left);
end;
if left=0 then writeln('porovnu')
 else writeln('ne porovnu');
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 01.11.2009 в 15:18.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 01.11.2009, 15:16   #3
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Цитата:
а вот так нельзя
Код:

for I := 1 to Length(st)-1 do
begin
if a[i]='(' then inc(left);
if a[i]=')' then dec(left);
end;
if left=0 then writeln('porovnu')
else writeln('ne porovnu');
Вернее так
Код:
for I := 0 to Length(st)-1 do
begin
if st[i]='(' then inc(left);
if st[i]=')' then dec(left);
end;
if left=0 then writeln('porovnu')
 else writeln('ne porovnu');
Levsha100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расстоновка скобок Ser Общие вопросы по Java, Java SE, Kotlin 4 25.05.2009 22:53
Структуры.Баланс скобок. Влад-mego Общие вопросы C/C++ 2 20.04.2009 00:59
Расстановка скобок с помощью интерпретатора (delphi) Казанцев Андрей Помощь студентам 0 19.04.2009 19:53
Помогите, пожалуйста, обработать кнопки скобок в калькуляторе Taisja Помощь студентам 2 04.10.2008 12:42
Колличество четных элементов в одномерном массиве forsy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 21.05.2008 15:01