Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/160: Рейтинг темы: голосов - 160, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32

Сделать проверку ввода и допустить ввод только цифр

15.04.2015, 09:02. Показов 31321. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать проверку ввода символов, типа если вводится не цифры а текст, то выводить ошибку

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var x,y:real;
begin
writeln ('Введите значение x') ;
read(x) ;
begin
if x>=9 then y:=sin(x*pi/180)
else y:=(sqr(x))/(x-9)  ;
writeln ('Ответ: ',y);
end
 
 
end.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2015, 09:02
Ответы с готовыми решениями:

Допустить ввод только цифр
Обработка ошибок ввода вывода‎ Pascal. вообщем надо сделать так чтоб можно было вводить только цифры... если вводишь буквы чтоб выдовало...

Как сделать проверку на ввод только цифр
Как сделать проверку на ввод только цифр в дате рождения , телефоне итд ? using System; using System.Collections.Generic; using...

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

13
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
15.04.2015, 10:03
Лучший ответ Сообщение было отмечено skvr как решение

Решение

Выделено Caps'ом
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var x,y:real;
    S:STRING;
    C:INTEGER;
begin
REPEAT
  writeln (' Введите значение x=') ;
  readLN(S) ;{читаем строку}
  VAL(S,X,C);{пытаемся преобразовать ее в число, в переменную C - упадет позиция, с недопустимым символом}
  IF C<>0 THEN WRITELN('Должно быть число');
UNTIL C=0; 
{begin тут не нужен, т.к. нет начала секции}
if x>=9 then y:=sin(x*pi/180)
else y:=(sqr(x))/(x-9) ;
writeln ('Ответ: ',y);
{end тоже что и begin}
 
 
end.
1
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
15.04.2015, 23:06  [ТС]
спасибо!
а если вводить дробное число, то X же должно вычислиться, или нет?
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
16.04.2015, 02:33
тоже должно
1
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
20.04.2015, 19:05  [ТС]
Joy, а как это реализовать в этом коде?
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
20.04.2015, 19:38
код вроде рабочий, что нужно то в итоге?
0
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
20.04.2015, 19:44  [ТС]
Joy, да код рабочий, просто еще хотелось бы, чтобы он продолжал работать при вводе дробных чисел, а то мой учитель, как мне кажется, дробное число введет, увидит ошибку и убежит с улыбкой
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.04.2015, 20:26
Цитата Сообщение от skvr Посмотреть сообщение
хотелось бы, чтобы он продолжал работать при вводе дробных чисел
Так и объявлен вещественный тип
Pascal
1
var x,y:real;
поэтому какое хочешь число, такое и вводи, хоть 1245, хоть 12.45
1
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
20.04.2015, 20:26
тестовый прогон:
Введите значение x=
1.23
Ответ: -0.194710424710425
Введите значение x=
1e2
Ответ: 0.984807753012208
Введите значение x=
e3
Ответ: 0
Введите значение x=
1eq
Должно быть число
Введите значение x=
0/00001
Должно быть число
Введите значение x=
0.0001
Ответ: -1.1111234569273E-9
1
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
20.04.2015, 20:41  [ТС]
Joy, странно, у меня выводится "Должно быть число
Введите значение x="

т.е. ответа он не дает почему-то

Добавлено через 1 минуту
Joy, пардон, мой фейл! вводил вместо точек(12.45) запятые(12,45)

все отлично, спасибо большое!
0
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
27.04.2015, 20:21  [ТС]
ребят, снова вас беспокою: на счет работы функции val (s,x,c)

сначала вводится S в строковом типе, потом значение S преобразуется в X числовой тип, и если ошибка при преобразовании, то в C записывается номер того символа, который функция не смогла преобразовать, а если ошибок при преобразовании не было, то в C записывается ноль -- ведь так?

А то учителю объяснил этот алгоритм, а его он не устраивает. гырьт, типа откуда этот ноль берется. В нете поискал, вроде тоже самое. Может вы что знаете, поподробнее?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
27.04.2015, 20:30
http://www.delphibasics.ru/Val.php
1
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
29.04.2015, 08:31  [ТС]
а через ord эту проверку можно как-то сделать?
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
29.04.2015, 11:29
procedure Val(s: string; var value: <тип>; var err: integer);
Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0

Добавлено через 2 часа 43 минуты
Цитата Сообщение от skvr Посмотреть сообщение
а через ord эту проверку можно как-то сделать?
как-то так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var x,y:real;
    S:STRING;
    C,i,p:INTEGER;
begin
REPEAT
  writeln (' Введите значение x=') ;
  readLN(S) ;
  c:=0;p:=0;
  for i:=1 to length(s) do 
    if s[i]='.' then p:=p+1 else  
      if not((ord(s[i])-48) in [0..9]) then begin
        c:=i;
        break;
      end;
  IF (C<>0) or (p>1) THEN WRITELN('Должно быть число');
UNTIL (C=0) and (p<2); 
val(s,x,c);
if x>=9 then y:=sin(x*pi/180)
else y:=(sqr(x))/(x-9) ;
writeln ('Ответ: ',y);
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2015, 11:29
Помогаю со студенческими работами здесь

Допустить ввод только цифр
Так и не нашел удобных функций контроля ввода. Вводится символьная строка (до 7 символов) Надо проверить что все символы цифры. ...

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

Допустить ввод в textBox только цифр
Добрый день! Как сделать фильтрацию в textBox, что бы можно было вводить только два числа разделены двоеточием. Соответственно в него можно...

Ввод только цифр (защита от некорректного ввода)
Помогите, пожалуйста) Мне завтра сдавать надо. Где-то видел (может, это на C#?) функцию (может, не так назвал), которая пытается...

Допустить ввод только чисел
Есть работа с структурами, надо ввести номер аудитории и вывести на экран, но можно вводить только числа, можете помочь как сделать? ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru