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

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

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

 
 Ответить  Открыть новую тему 
> Является ли заданная строка правильной записью целого числа?, Помогите пожалуйста с задачей...
bama_girl
сообщение 9.04.2008 11:05
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Женский
Реальное имя: Ксюша

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


Определить, является ли заданная строка "правильной записью целого числа" (возможно со знаком).

Вот как ее решила я:

Код
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.


Однако, здесь идет конвертирование и проверка всей строки сразу.... Это очень ограничило количество вводимых символов.... Мне поставили новую задачу: сделать так, чтобы шли конвертирование и проверка каждого символа... Сложность еще в том, что целые числа могут быть и отрицательными, и если делать посимвольную проверку, то нужно учитывать знак "-" в начале строки... unsure.gif
Подскажите пожалуйста, как сделать!

Сообщение отредактировано: bama_girl - 9.04.2008 19:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 9.04.2008 11:24
Сообщение #2


Michael_Rybak
*****

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

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


очень просто. смотри. читаешь строку (как строку, string). если первый символ не минус и не цифра - сразу ответ "нет". иначе, если среди остальных символов только цифры - ответ "да", иначе - "нет". проверяешь циклом for.

и тему переименуй, пожалуйста.

М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
bama_girl
сообщение 9.04.2008 18:59
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Женский
Реальное имя: Ксюша

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


Спасибо большое за помощь, суть ясна =)

Только сразу возник вопрос:

Если я, например, для начала поставлю условие на первые два символа, а дальше с помощью цикла буду осушествлять проверку остальных символов (например дана строка -12345... сначала проверяю -1 (является целым числом), а дальше посимвольно: 2, 3, 4, 5...), такой вариант возможен?...


Сообщение отредактировано: bama_girl - 9.04.2008 19:18
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 9.04.2008 19:45
Сообщение #4


Гуру
*****

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

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


Цитата(Michael_Rybak @ 9.04.2008 12:24) *
если первый символ не минус и не цифра - сразу ответ "нет". иначе...
"$FF" - является правильной записью целого числа?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 9.04.2008 20:53
Сообщение #5


Michael_Rybak
*****

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

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


Цитата
Если я, например, для начала поставлю условие на первые два символа, а дальше с помощью цикла буду осушествлять проверку остальных символов (например дана строка -12345... сначала проверяю -1 (является целым числом), а дальше посимвольно: 2, 3, 4, 5...), такой вариант возможен?...


Да, только учти, что во введенной строке может и не быть двух символов. А может и одного не быть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 10.04.2008 7:02
Сообщение #6


Гуру
*****

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

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


Michael_Rybak, неправда Ваша.
Если нечто нужно проверить на валидность, то следует сначала сформулировать, что же следует считать валидным. Без этого задача не полна. А, пытаясь решать задачу с явно неполным условием, можно запросто сесть в лужу.

Впрочем, каждый волен решать, как лично ему поступать в том или ином случае. Только не следует рекомендовать другим явно неправильные действия.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 10.04.2008 11:26
Сообщение #7


Michael_Rybak
*****

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

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


может нам еще римские цифры учитывать, а так же вербальное представление слов? и иероглифы?

по тексту автора темы совершенно очевидно, что имеется ввиду десятичная запись. более того, при желании можно и вывод такой сделать: функция val c целым аргументом обработает только десятичную запись, а ксюша говорит, что всё ок, только нужно добавить, чтоб работало с длинными числами.

давайте не будем придираться к запятым в тексте, это ну совсем-совсем бессмысленно. я не говорю, вообще не придираться. просто есть какая-то мера подразумеваемости, и в данном случае очень явная, по-моему.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 10.04.2008 21:11
Сообщение #8


Гуру
*****

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

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


Цитата(Michael_Rybak @ 10.04.2008 12:26) *

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

по тексту автора темы совершенно очевидно, что имеется ввиду десятичная запись.
Извини, я телепатическими способностями не обладаю, а в тексте этого в упор не вижу.
Цитата
более того, при желании можно и вывод такой сделать: функция val c целым аргументом обработает только десятичную запись, а ксюша говорит, что всё ок, только нужно добавить, чтоб работало с длинными числами.
Неправда Ваша.
  val('$ff',i,j);
writeln(i,' ',j);

Цитата
давайте не будем придираться к запятым в тексте, это ну совсем-совсем бессмысленно. я не говорю, вообще не придираться. просто есть какая-то мера подразумеваемости, и в данном случае очень явная, по-моему.
Я не придираюсь. Я обращаю внимание на неоднозначность в формулировке задачи.
Увы, на практике очень часто оказывается, что каждый из двух беседующих подразумевает что-то свое, тогда как каждый из них уверен, что они подразумевают одно и то же.
Бывают и более сложные ситуации, например, в системе "преподаватель, студент, помощник" запросто может оказаться, что преподаватель и помощник подразумевают разное, а студент, не владея материалом в достаточной мере, просто даже не подозревает о возможности такой разницы. В таком случае если помощник своевременно сможет доказать студенту необходимость уточнить условие у преподавателя, это в дальнейшем поможет избежать студенту массы неприятностей.
Скажешь не жизненная ситуация?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 10.04.2008 22:54
Сообщение #9


Michael_Rybak
*****

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

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


вообще - согласен. в данном конкретном случае, на мой взгляд, всё предельно ясно. автор жеж божий одуванчик, такой милый и невинный. ты веришь, что от нее могут требовать шестнадцатиричную запись?

p.s. про val каюсь, но дела это не меняет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 11.04.2008 19:41
Сообщение #10


Гуру
*****

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

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


Цитата(Michael_Rybak @ 10.04.2008 23:54) *
ты веришь, что от нее могут требовать шестнадцатиричную запись?
Вопрос касается не особенностей моего вероисповедания, а исключительно условия задачи, которое звучит так:
Цитата
Определить, является ли заданная строка "правильной записью целого числа" (возможно со знаком).

Скажи честно и откровенно, шестнадцатиричное представление является правильной записью целого числа или нет?

Сообщение отредактировано: andriano - 11.04.2008 19:43
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 11.04.2008 23:28
Сообщение #11


code warrior
****

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

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


ППц вы тут демагогию развели...


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 12.04.2008 19:37
Сообщение #12


Michael_Rybak
*****

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

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


Цитата
Скажи честно и откровенно, шестнадцатиричное представление является правильной записью целого числа или нет?


я уже писал про римские и иероглифы.

а спрашивать об очевидном - незачем smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
bama_girl
сообщение 20.04.2008 12:30
Сообщение #13





Группа: Пользователи
Сообщений: 4
Пол: Женский
Реальное имя: Ксюша

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


Ребят, возникла еще одна проблема: в эту задачу как-то надо рекурсию впихнуть...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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