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

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

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

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





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

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


Помогите решить задачу.
Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -,*. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Выяснить, верно ли, что в данном тексте больше групп букв, чем групп знаков.
Неполучается определить группу букв и цифр, уже низнаю что делать, а завтра сдавать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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

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


Знаток
****

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

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


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


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





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

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


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

Сообщение отредактировано: VoRPaX -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Знаток
****

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

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


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

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

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


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


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

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

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


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

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


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





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

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


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

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

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


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

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

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


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


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


Знаток
****

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

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


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

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

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


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


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


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

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

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


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

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



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


Знаток
****

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

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


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


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


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

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

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


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


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


Гость






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

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

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

 





- Текстовая версия 23.09.2020 16:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name