Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проверить корректность входных данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
romanov
Отправлено: 29 Ноября, 2011 - 18:44:40
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Буду очень признателен если поможете разобраться со следующей задачей: дана входная

строка н-р: '{()}{}' надо проверить корректность открытия и закрытия скобок.

Если скобки закрываются симметрично '{()}' , то тут вопросов не возникает, а если так как

описано выше то......???
 
 Top
Данил_123
Отправлено: 29 Ноября, 2011 - 18:49:05
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




Не понял, в чем смысл?


-----
http://mysitecost.ru
 
 Top
Maxi
Отправлено: 29 Ноября, 2011 - 18:54:50
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


Помог: 0 раз(а)




Можно посчитать количество знаков в строке, и если количество "(" будет равно количеству ")" то всё ок, если нет, добавить один нехватающий символ в конец или куда надо. Тут просто надо условие симетрии, так я не знаю что и как именно.

(Отредактировано автором: 29 Ноября, 2011 - 18:56:07)

 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Ноября, 2011 - 18:56:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. echo (stristr($in,"{()}")) ? "True!" : "False!";
???
 
 Top
romanov
Отправлено: 29 Ноября, 2011 - 18:57:07
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




если можете опишите то что вы написали, причем чем тут сравнение символов
(Добавление)
дело в том что надо проверить корректность открытых и закрытых скобок, во входной строке, а не просто вернуть строку
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Ноября, 2011 - 19:48:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Дайте реальную строку.
 
 Top
romanov
Отправлено: 29 Ноября, 2011 - 19:58:24
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




вот реальная строка '{()}' == true здесь передаются симметричные скобки, здесь проблем нет, вот когда передается строка такого вида {()}{} здесь проверить ее намного сложнее, я не знаю как.
Такая строка {(})== false , вложенность скобок неверная.
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Ноября, 2011 - 20:01:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




"Скобочных" последовательностей в строке может быть сколько угодно или только одна?
 
 Top
romanov
Отправлено: 29 Ноября, 2011 - 20:03:17
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




вот варианты:

1. ()==true

2. {()}==true

3. {()}{}==true

4. (())==true

5. {({({({()})})})}==true

6. {(})==false
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Ноября, 2011 - 20:03:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Для одной я вам написал код, только поменяйте условие наоборот.
Можно еще через регулярку, при условии что строка состоит только из этой последовательности:
PHP:
скопировать код в буфер обмена
  1. echo (preg_match('/^\{\(\)\}$/',$str)) ? "Ok" : "Fail";

(Добавление)
Сек
 
 Top
romanov
Отправлено: 29 Ноября, 2011 - 20:11:50
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




большое вам спасибо, но вот только надо реализовать универсальную функцию например isCorrect ('{(}) '), если передать неверную последовательность и внутри функции выполнить ваш код echo (preg_match('/^\{\(\)\}$/',$str)) ? "Ok" : "Fail"; то функция вернет ok хотя на самом деле последовательность неверная. оба ваших варианта сравнивают эти последовальности друг с другом .
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Ноября, 2011 - 20:25:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Да я понял что надо, самому интересно стало, сижу ковыряю. Закатив глазки
 
 Top
romanov
Отправлено: 29 Ноября, 2011 - 20:29:48
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




как вариант можно разделить семметричную последовательность пополам и сравнивать первой символ первой подстроки с первым с конца символом второй подстроки и так дальше, но это если только пос-ть семметричная
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Ноября, 2011 - 20:49:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Симметричность я уже осилил. Думаю насчет несимметрии.
 
 Top
romanov
Отправлено: 29 Ноября, 2011 - 20:50:30
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




если придумаете можете выложить, мне очень надо
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB