0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
1

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

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

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

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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2015, 09:02
Ответы с готовыми решениями:

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

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

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

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

13
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
15.04.2015, 10:03 2
Лучший ответ Сообщение было отмечено 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  [ТС] 3
спасибо!
а если вводить дробное число, то X же должно вычислиться, или нет?
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
16.04.2015, 02:33 4
тоже должно
1
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
20.04.2015, 19:05  [ТС] 5
Joy, а как это реализовать в этом коде?
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
20.04.2015, 19:38 6
код вроде рабочий, что нужно то в итоге?
0
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
20.04.2015, 19:44  [ТС] 7
Joy, да код рабочий, просто еще хотелось бы, чтобы он продолжал работать при вводе дробных чисел, а то мой учитель, как мне кажется, дробное число введет, увидит ошибку и убежит с улыбкой
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
20.04.2015, 20:26 8
Цитата Сообщение от skvr Посмотреть сообщение
хотелось бы, чтобы он продолжал работать при вводе дробных чисел
Так и объявлен вещественный тип
Pascal
1
var x,y:real;
поэтому какое хочешь число, такое и вводи, хоть 1245, хоть 12.45
1
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
20.04.2015, 20:26 9
тестовый прогон:
Введите значение 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  [ТС] 10
Joy, странно, у меня выводится "Должно быть число
Введите значение x="

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

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

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

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

А то учителю объяснил этот алгоритм, а его он не устраивает. гырьт, типа откуда этот ноль берется. В нете поискал, вроде тоже самое. Может вы что знаете, поподробнее?
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
27.04.2015, 20:30 12
http://www.delphibasics.ru/Val.php
1
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 32
29.04.2015, 08:31  [ТС] 13
а через ord эту проверку можно как-то сделать?
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
29.04.2015, 11:29 14
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
29.04.2015, 11:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2015, 11:29
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru