IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
Closed Topic Открыть новую тему 
> Работа с символьными и строковыми переменными
VoRPaX
сообщение 24.01.2007 19:29
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Помогите решить задачу.
Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -,*. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Выяснить, верно ли, что в данном тексте больше групп букв, чем групп знаков.
Неполучается определить группу букв и цифр, уже низнаю что делать, а завтра сдавать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.01.2007 20:02
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


function IsOk(const s: String): Boolean;
const
letters = ['a'..'z'];
signs = ['*', '-', '+'];
digits = ['0'..'9'];

var
limits: set of char;
WCount, SCount, i: Byte;

begin
i := 1;
WCount := 0;
SCount := 0;
while (i <= Length(s)) do begin

while (i <= Length(s)) and (s[i] in digits) do inc(i);

if i <= Length(s) then begin
if s[i] in letters then begin
limits := letters;
inc(WCount);
end else begin
limits := signs;
inc(SCount);
end;

while (i <= Length(s)) and (s[i] in limits) do inc(i);
end;

end;

IsOk := (WCount > SCount);
end;


?

Сообщение отредактировано: klem4 - 24.01.2007 20:09


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
VoRPaX
сообщение 24.01.2007 21:42
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Условие которое должно выполнятся программой невыполняется, все время пишет True. Может я просто что то делаю не так, а именно неправельно вызываю функцию?
program q4;
var
st:string;
a:boolean;

function IsOk(const s: String): Boolean;
const
letters = ['a'..'z'];
signs = ['*', '-', '+'];
digits = ['0'..'9'];
var
limits: set of char;
WCount, SCount, i: Byte;
begin
i := 1;
WCount := 0;
SCount := 0;
while (i <= Length(s)) do begin
while (i <= Length(s)) and (s[i] in digits) do inc(i);
if i <= Length(s) then begin
if s[i] in letters then begin
limits := letters;
inc(WCount);
end else begin
limits := signs;
inc(SCount);
end;
while (i <= Length(s)) and (s[i] in limits) do inc(i);
end
end;
IsOk := (WCount > SCount);
end;

begin
write('vvedite stroky> ');
readln(st);
a:=isok(st);
writeln('групп букв больше чем групп знаков: ',a);
end.


М
теги ...



Сообщение отредактировано: klem4 - 24.01.2007 21:47
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.01.2007 21:46
Сообщение #4


Гость






Может быть, наконец, будет приведена строка, с которой это все тестировалось? Или так и будем переливать "из пустого в порожнее"? dry.gif

Добавлено:
Кстати, теги используй... Они не просто так на форуме придуманы...
 К началу страницы 
+ Ответить 
arhimag
сообщение 24.01.2007 21:48
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


клем могу привести тест при котором использовать твою функцию будет трудно
файл из трех строк
aaaaaaaaaaaaa2aaaaaaaaaaaaaaaaaaa2aaaaa
aaa222222222222aaaaaaaaaaaaaaaaaa222222
22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
VoRPaX
сообщение 24.01.2007 21:51
Сообщение #6





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


насколько я понял группа букв это "1qqq1"
я вводил 1qq1111qq1
и q11qqqq11q
и в обоих случаях выводит true

Сообщение отредактировано: VoRPaX - 24.01.2007 21:54
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.01.2007 21:52
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


архимагу: Что-то я не понял, и в чем проблема ? Для всех 3-х строк программа выдала одинаково верный результат - true blink.gif

автору: латинские бувы вводи ... или добавь в letters ['a'..'п', 'р'-'я']


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
arhimag
сообщение 24.01.2007 21:56
Сообщение #8


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


но это один текст!!!

Добавлено:
здесь ответ должен быть наверное "нет"

Добавлено:
пготому что цифровых 5 и буквенных тоже пять


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.01.2007 21:58
Сообщение #9


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Результат верный - true, что тебе не нравится - то ?

ps Задание прочитай еще разок.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
VoRPaX
сообщение 24.01.2007 21:58
Сообщение #10





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


в первом случае две группы букв и одна группа ЗНАКОВ, а во втором наоборот две группы ЗНАКОВ и одна группа букв!

извеняюсь, ошибся

Сообщение отредактировано: VoRPaX - 24.01.2007 22:02
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.01.2007 22:00
Сообщение #11


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


На сколько я понял, знаки и цифры для вас одно и тоже ? dry.gif Значит так и надо было написать в задании, в моем понимании знаки и цифры это разные вещи, а проверять нужно именно
Цитата
Выяснить, верно ли, что в данном тексте больше групп букв, чем групп знаков.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
arhimag
сообщение 24.01.2007 22:11
Сообщение #12


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


Клем а что твоя программа на ТУРБО ПАСКАЛе выведе при подании на вход вот этого файла.

Добавлено:
почему прошу клема, потому что я не знаю как применить на турбо паскале его функцию к такой строке у нее >1000 символов а у турбо паскаля в строке максимум 256

Сообщение отредактировано: arhimag - 24.01.2007 22:11


Прикрепленные файлы
Прикрепленный файл  klem.txt ( 1.17 килобайт ) Кол-во скачиваний: 153


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.01.2007 22:11
Сообщение #13


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


К твоему глубочайшему сожалению сообщаю: В переменную типа String помещается всего-лишь 255 символов ...

добавлено: Ну вот видишь ты и сам в курсе.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
arhimag
сообщение 24.01.2007 22:12
Сообщение #14


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


но ведь в условии нет ограничения на длину
Цитата
текст
а


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.01.2007 22:15
Сообщение #15


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


А когда тебе дуют задачу, в которой сказано: Дано целое число, ты всегда перестраховываешься и пишеш программу таким образом чтобы учеть тот случай, что число может состоять из 1000 цифр ? Все флейм на сегодня окончен, задача решена, тема закрыта.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.01.2007 22:18
Сообщение #16


Гость






arhimag, ну, может, хватит? mad.gif Блин, ни в одном топике от тебя покоя нет - везде со своими идиотскими высказываниями влез!!! Хочешь, я добавлю 4 слова так, что задача ВООБЩЕ будет нерешаемой с использованием TP?

Размер файла 3 гигабайта. ВСЕ... Занавес... Тему тожно закрывать?
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 14:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"