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

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

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

 
 Ответить  Открыть новую тему 
> Число ли?!, проверка входных данных...
сообщение
Сообщение #1





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

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


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

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


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


Гость






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

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

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





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

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


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

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





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

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


А можно ли как-нибудь проверить входные данные (на принадлежность к числу), не используя стандартных процедур str() и val()??? huh.gif huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






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

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

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


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

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

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


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

sad.gif

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


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

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

 





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