Помогите решить задачу. Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -,*. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Выяснить, верно ли, что в данном тексте больше групп букв, чем групп знаков. Неполучается определить группу букв и цифр, уже низнаю что делать, а завтра сдавать...
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;
?
VoRPaX
25.01.2007 1:42
Условие которое должно выполнятся программой невыполняется, все время пишет 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.
М
теги ...
volvo
25.01.2007 1:46
Может быть, наконец, будет приведена строка, с которой это все тестировалось? Или так и будем переливать "из пустого в порожнее"?
Добавлено: Кстати, теги используй... Они не просто так на форуме придуманы...
arhimag
25.01.2007 1:48
клем могу привести тест при котором использовать твою функцию будет трудно файл из трех строк aaaaaaaaaaaaa2aaaaaaaaaaaaaaaaaaa2aaaaa aaa222222222222aaaaaaaaaaaaaaaaaa222222 22aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
VoRPaX
25.01.2007 1:51
насколько я понял группа букв это "1qqq1" я вводил 1qq1111qq1 и q11qqqq11q и в обоих случаях выводит true
klem4
25.01.2007 1:52
архимагу: Что-то я не понял, и в чем проблема ? Для всех 3-х строк программа выдала одинаково верный результат - true
автору: латинские бувы вводи ... или добавь в letters ['a'..'п', 'р'-'я']
arhimag
25.01.2007 1:56
но это один текст!!!
Добавлено: здесь ответ должен быть наверное "нет"
Добавлено: пготому что цифровых 5 и буквенных тоже пять
klem4
25.01.2007 1:58
Результат верный - true, что тебе не нравится - то ?
ps Задание прочитай еще разок.
VoRPaX
25.01.2007 1:58
в первом случае две группы букв и одна группа ЗНАКОВ, а во втором наоборот две группы ЗНАКОВ и одна группа букв!
извеняюсь, ошибся
klem4
25.01.2007 2:00
На сколько я понял, знаки и цифры для вас одно и тоже ? Значит так и надо было написать в задании, в моем понимании знаки и цифры это разные вещи, а проверять нужно именно
Цитата
Выяснить, верно ли, что в данном тексте больше групп букв, чем групп знаков.
arhimag
25.01.2007 2:11
Клем а что твоя программа на ТУРБО ПАСКАЛе выведе при подании на вход вот этого файла.
Добавлено: почему прошу клема, потому что я не знаю как применить на турбо паскале его функцию к такой строке у нее >1000 символов а у турбо паскаля в строке максимум 256
klem4
25.01.2007 2:11
К твоему глубочайшему сожалению сообщаю: В переменную типа String помещается всего-лишь 255 символов ...
добавлено: Ну вот видишь ты и сам в курсе.
arhimag
25.01.2007 2:12
но ведь в условии нет ограничения на длину
Цитата
текст
а
klem4
25.01.2007 2:15
А когда тебе дуют задачу, в которой сказано: Дано целое число, ты всегда перестраховываешься и пишеш программу таким образом чтобы учеть тот случай, что число может состоять из 1000 цифр ? Все флейм на сегодня окончен, задача решена, тема закрыта.
volvo
25.01.2007 2:18
arhimag, ну, может, хватит? Блин, ни в одном топике от тебя покоя нет - везде со своими идиотскими высказываниями влез!!! Хочешь, я добавлю 4 слова так, что задача ВООБЩЕ будет нерешаемой с использованием TP?
Размер файла 3 гигабайта. ВСЕ... Занавес... Тему тожно закрывать?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.