Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
36 / 36 / 28
Регистрация: 17.01.2012
Сообщений: 64

Обработка входных данных

26.11.2013, 22:41. Показов 980. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача, в которой вводится натуральное число типа word.
Нужно сделать программу устойчивой к неправильном вводу.
Как посоветуете это сделать?
Написать свою функцию (уже готова) или это можно сделать стандартными средствами языка?

Все это дело должно работать в борланд паскале.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2013, 22:41
Ответы с готовыми решениями:

Описание входных и выходных данных
Всем привет! Где в данной программе находятся входные и выходные данные? Заранее спасибо! program SeaWar; uses Graph,crt; var...

Описание входных и выходных данных
Описать входные и выходные данные(что вводим и что выводим).Буду очень благодарен кто выручит. uses crt; var m:array of...

Реализовать ввод данных из файла, просмотр входных и выходных данных
помогите пожалуйста с вот этой программой создать программный комплекс, реализующий ввод данных из файла, просмотр входных и выходных...

6
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.11.2013, 23:15
Простой пример:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var
  w: word;
  ioRes: integer;
begin
  {$I-}
  repeat
    ReadLn(w);
    ioRes := IOResult;
    if ioRes <> 0 then WriteLn('*** Ошибка ввода. Повторите.');
  until ioRes = 0;
end.
Внутренняя переменная InOutRes получает результат последней операции ввода-вывода, 0 если ошибки нет, либо код ошибки. До тех пор, пока InOutRes <> 0, операции ввода вывода блокируются. Функция IOResult возвращает значение переменной InOutRes и устанавливает её в 0.
1
354 / 135 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
26.11.2013, 23:26
{$I-}
Не забываем потом {$I+}
1
36 / 36 / 28
Регистрация: 17.01.2012
Сообщений: 64
26.11.2013, 23:45  [ТС]
да! я пробовал так делать (и еще через val), но оба способа рабтали не для всех случаев.
например, если запустить код выше и ввести 65536 - выкидывает 201 ошибку.
если добавить {$R-} - естественно, просто закрывается без ошибки.

так можно все-таки как-нибудь сделать?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.11.2013, 23:53
Цитата Сообщение от Ромаха Посмотреть сообщение
Не забываем потом {$I+}
Ни к чему, баловство это. Если уж есть желание держать ввод-вывод в {$I+}, можно пользоваться чем-то вроде:
Pascal
1
2
3
{$IFOPT I+}{$DEFINE I_ON}{$I-}{$ENDIF}
какой-то код
{$IFDEF I_ON}{$I+}{$UNDEF I_ON}{$ENDIF}
Но для учебных примеров несколько громоздко...

sfc, в Free Pascal конструкция работает безупречно, попытка ввода числа вне пределов диапазона кодом выше обнаруживается. Как точно было в TP/BP сейчас не вспомню и проверить пока негде, чуть позже посмотрю...
1
36 / 36 / 28
Регистрация: 17.01.2012
Сообщений: 64
27.11.2013, 00:27  [ТС]
bormant, ну не знаю. у меня выкидывает ошибку и во fp

Добавлено через 29 минут
хотя вот, вроде додумался.
нужно сделать w лонгинтом и добавить проверку с 65535
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
27.11.2013, 13:40
Цитата Сообщение от sfc Посмотреть сообщение
сделать w лонгинтом и добавить проверку с 65535
Это, пожалуй самый простой вариант.

Посмотрел на TP/BP/FPC -- действительно при вводе числа вне допустимого диапазона поведение зависит от $R, при R+ получаем RE (runtime error), а при R- -- обрезанный ввод без возможности отследить факт несоответствия введённого и попавшего в переменную. Val() ведёт себя точно также.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2013, 13:40
Помогаю со студенческими работами здесь

Контроль входных данных
как контролировать вводимые данные? т.е. begin for i:=0 to c-1 do begin writeln('a: '); Readln(a1); writeln('b: '); Readln(b1);...

Тип входных данных в TextBox
Необходимо сделать поле ввода минут. MaskedTextBox мне не подходит. Как это сделать? Если нужна дополнительная информация, пишите.

Описание входных и выходных данных кода
Помогите написать описание входных и выходных данных этого кода

Решить неравенство для произвольных входных данных ax+c<=b
Решить неравенство для произвольных входных данных ax+c&lt;=b

Ввод очень длинного числа в входных данных
Ребят, помогите пожалуйста. Смысл задачи состоит в следующем: В 1 строке входного файла содержится 80 значное число, состоящее из 0 и 1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru