Форум «Всё о Паскале» _ Задачи _ Является ли заданная строка правильной записью целого числа?
Автор: bama_girl 9.04.2008 11:05
Определить, является ли заданная строка "правильной записью целого числа" (возможно со знаком).
Вот как ее решила я:
Код
program laba; uses crt; var s:string; w, code:integer; procedure start; begin writeln('введите строку'); readln(s); end; procedure process; begin Val(s,w,code); end; procedure finish; begin If code=0 then writeln('Строка ', s,' является записью целого числа ') else writeln('Строка ', s,' не является записью целого числа '); readln; end; begin writeln ('Эта программа определяет, является ли введенная вами строка правильной записью целого числа.'); readln; start; process; finish; end.
Однако, здесь идет конвертирование и проверка всей строки сразу.... Это очень ограничило количество вводимых символов.... Мне поставили новую задачу: сделать так, чтобы шли конвертирование и проверка каждого символа... Сложность еще в том, что целые числа могут быть и отрицательными, и если делать посимвольную проверку, то нужно учитывать знак "-" в начале строки... Подскажите пожалуйста, как сделать!
Автор: Michael_Rybak 9.04.2008 11:24
очень просто. смотри. читаешь строку (как строку, string). если первый символ не минус и не цифра - сразу ответ "нет". иначе, если среди остальных символов только цифры - ответ "да", иначе - "нет". проверяешь циклом for.
и тему переименуй, пожалуйста.
М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
Автор: bama_girl 9.04.2008 18:59
Спасибо большое за помощь, суть ясна =)
Только сразу возник вопрос:
Если я, например, для начала поставлю условие на первые два символа, а дальше с помощью цикла буду осушествлять проверку остальных символов (например дана строка -12345... сначала проверяю -1 (является целым числом), а дальше посимвольно: 2, 3, 4, 5...), такой вариант возможен?...
Автор: andriano 9.04.2008 19:45
Цитата(Michael_Rybak @ 9.04.2008 12:24)
если первый символ не минус и не цифра - сразу ответ "нет". иначе...
"$FF" - является правильной записью целого числа?
Автор: Michael_Rybak 9.04.2008 20:53
Цитата
Если я, например, для начала поставлю условие на первые два символа, а дальше с помощью цикла буду осушествлять проверку остальных символов (например дана строка -12345... сначала проверяю -1 (является целым числом), а дальше посимвольно: 2, 3, 4, 5...), такой вариант возможен?...
Да, только учти, что во введенной строке может и не быть двух символов. А может и одного не быть.
Автор: andriano 10.04.2008 7:02
Michael_Rybak, неправда Ваша. Если нечто нужно проверить на валидность, то следует сначала сформулировать, что же следует считать валидным. Без этого задача не полна. А, пытаясь решать задачу с явно неполным условием, можно запросто сесть в лужу.
Впрочем, каждый волен решать, как лично ему поступать в том или ином случае. Только не следует рекомендовать другим явно неправильные действия.
Автор: Michael_Rybak 10.04.2008 11:26
может нам еще римские цифры учитывать, а так же вербальное представление слов? и иероглифы?
по тексту автора темы совершенно очевидно, что имеется ввиду десятичная запись. более того, при желании можно и вывод такой сделать: функция val c целым аргументом обработает только десятичную запись, а ксюша говорит, что всё ок, только нужно добавить, чтоб работало с длинными числами.
давайте не будем придираться к запятым в тексте, это ну совсем-совсем бессмысленно. я не говорю, вообще не придираться. просто есть какая-то мера подразумеваемости, и в данном случае очень явная, по-моему.
Автор: andriano 10.04.2008 21:11
Цитата(Michael_Rybak @ 10.04.2008 12:26)
может нам еще римские цифры учитывать, а так же вербальное представление слов? и иероглифы?
Не видя условия, ответить на этот вопрос невозможно.
Цитата
по тексту автора темы совершенно очевидно, что имеется ввиду десятичная запись.
Извини, я телепатическими способностями не обладаю, а в тексте этого в упор не вижу.
Цитата
более того, при желании можно и вывод такой сделать: функция val c целым аргументом обработает только десятичную запись, а ксюша говорит, что всё ок, только нужно добавить, чтоб работало с длинными числами.
Неправда Ваша.
val('$ff',i,j); writeln(i,' ',j);
Цитата
давайте не будем придираться к запятым в тексте, это ну совсем-совсем бессмысленно. я не говорю, вообще не придираться. просто есть какая-то мера подразумеваемости, и в данном случае очень явная, по-моему.
Я не придираюсь. Я обращаю внимание на неоднозначность в формулировке задачи. Увы, на практике очень часто оказывается, что каждый из двух беседующих подразумевает что-то свое, тогда как каждый из них уверен, что они подразумевают одно и то же. Бывают и более сложные ситуации, например, в системе "преподаватель, студент, помощник" запросто может оказаться, что преподаватель и помощник подразумевают разное, а студент, не владея материалом в достаточной мере, просто даже не подозревает о возможности такой разницы. В таком случае если помощник своевременно сможет доказать студенту необходимость уточнить условие у преподавателя, это в дальнейшем поможет избежать студенту массы неприятностей. Скажешь не жизненная ситуация?
Автор: Michael_Rybak 10.04.2008 22:54
вообще - согласен. в данном конкретном случае, на мой взгляд, всё предельно ясно. автор жеж божий одуванчик, такой милый и невинный. ты веришь, что от нее могут требовать шестнадцатиричную запись?
p.s. про val каюсь, но дела это не меняет.
Автор: andriano 11.04.2008 19:41
Цитата(Michael_Rybak @ 10.04.2008 23:54)
ты веришь, что от нее могут требовать шестнадцатиричную запись?
Вопрос касается не особенностей моего вероисповедания, а исключительно условия задачи, которое звучит так:
Цитата
Определить, является ли заданная строка "правильной записью целого числа" (возможно со знаком).
Скажи честно и откровенно, шестнадцатиричное представление является правильной записью целого числа или нет?
Автор: hardcase 11.04.2008 23:28
ППц вы тут демагогию развели...
Автор: Michael_Rybak 12.04.2008 19:37
Цитата
Скажи честно и откровенно, шестнадцатиричное представление является правильной записью целого числа или нет?
я уже писал про римские и иероглифы.
а спрашивать об очевидном - незачем
Автор: bama_girl 20.04.2008 12:30
Ребят, возникла еще одна проблема: в эту задачу как-то надо рекурсию впихнуть...