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

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

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

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


Michael_Rybak
*****

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

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


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

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

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

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





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

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


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

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

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


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


Гуру
*****

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

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


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


Michael_Rybak
*****

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

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


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


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


Гуру
*****

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

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


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

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


Michael_Rybak
*****

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

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


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

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

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


Гуру
*****

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

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


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

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

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

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


Michael_Rybak
*****

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

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


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

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


Гуру
*****

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

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


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

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

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


code warrior
****

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

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


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


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


Michael_Rybak
*****

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

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


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


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

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





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

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


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

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

 





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