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

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

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

> Число ли?!, проверка входных данных...
kleks
сообщение 9.09.2005 18:15
Сообщение #1





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

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


Вообщем такая задачка: предположим мне необходимо ввести размерность матрицы MxN, 0..5 of integer, но при этом я должен проверить...1.является ли то, что я ввожу числом(в противном случае вывести сообщение ), 2.является ли оно целым и 3.входит ли оно в граници от 1..5. Последние два пункта задачки то понятны, а вот как быть с первым!? Подскажите какие-нибудь идеи...Заранее благодарен

Сообщение отредактировано: kleks - 28.09.2005 20:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
klem4
сообщение 9.09.2005 18:24
Сообщение #2


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

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

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


один из вариантов :

uses crt;
var
s : string;

n,error : integer;

Begin

clrscr;

write('n='); readln(s);

val(s,n,error);

if error <> 0 then
writeln('ErrorPos = ',error);

readln;

End.

число будет храниться в n, если это число smile.gif




для чисел с плавающей точкой, n ссответственно не integer, а скажем single.

Сообщение отредактировано: klem4 - 9.09.2005 18:27


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


Гость






Насчет первого тоже понятно:
вводишь "нечто" в виде строки и пытаешься перевести в число через Val (с выключенной проверкой границ {$R-})... Если не произошло ошибки, то это число (таким образом, кстати, можно вообще избавиться от второго пункта).

А теперь еще кое-что:
Цитата(Правила раздела)
1. Заголовок темы должен быть информативным. В противном случае тема удаляется
Делай выводы.

klem4: Последнее китайское предупреждение: проверяй программы, перед тем как запостить. angry.gif
 К началу страницы 
+ Ответить 
kleks
сообщение 9.09.2005 18:34
Сообщение #4





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

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


Спасибо огромное!!!!! Теперь понятно!!!!!!!
Цитата(volvo @ 9.09.05 19:24)
А теперь еще кое-что:
1. Заголовок темы должен быть информативным. В противном случае тема удаляется

За это...извините!!!! Теперь буду знать...!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kleks
сообщение 28.09.2005 20:31
Сообщение #5





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

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


А можно ли как-нибудь проверить входные данные (на принадлежность к числу), не используя стандартных процедур str() и val()??? huh.gif huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.09.2005 20:41
Сообщение #6


Гость






var
N: integer;
begin
{$i-}
repeat
write('Vvedite naturalnoe chislo N = ');
readln(N);
until (IOResult = 0) and (n in [1 .. 5]);
{$i+}
writeln(n)
end.

Вот и попробуй ввести НЕ число или число, но НЕ принадлежащее интервалу 1 .. 5
:no:
 К началу страницы 
+ Ответить 
klem4
сообщение 28.09.2005 20:46
Сообщение #7


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

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

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


Все так то оно так, но почему вот это вылетает если ввести скажем 'asd' ?

uses crt;
var
N:integer;
begin

clrscr;
{$I-}
repeat
write('Vvedite naturalnoe chislo N = ');
readln(N);
writeln('IOReslt = ', IOResult);
until IOResult = 0;
{$I+}
end.




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


Гость






klem4, ты ХОРОШО подумал, прежде чем это сделать?
writeln('IOReslt = ', IOResult);

Обращение к IOResult сбрасывает его в 0, и ошибка "проходит"... Это первое.

Ну, а во вторых, я в тысячный раз повторяю - здесь - НЕ раздел для 32-бит. компиляторов, и проверять программы в FPC не пойдет... Как ты думаешь, я бы выложил программу, если бы она на ТАКОМ спотыкалась?
 К началу страницы 
+ Ответить 
klem4
сообщение 29.09.2005 6:21
Сообщение #9


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

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

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


Я всего навсего на знал о том что
Цитата
Обращение к IOResult сбрасывает его в 0

sad.gif

Сообщение отредактировано: klem4 - 29.09.2005 6:21


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

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

 



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