Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Модератор форума: Berestovskiy  
Корректность ввода
Что надо изменить в данной программе (программа работает), чтобы, при вводе БУКВЫ (цифры с буквой одновременно) - появлялась ошибка... т.е. нужно сделать, чтобы корректность ввода была правильной.

Программа:

var
r, x1, y1, x2, y2, d, p, s:real;
begin
write ('Радиус окружностей R=');
read ®;
Writeln ('Введите координаты центра первой окружности:');
read (x1,y1);
writeln ('Введите координаты центра второй окружности:');
read (x2,y2);
d:=sqrt(sqr(x1-x2)+sqr(y1-y2)); {расстояние между центрами}
if d>2*r
then
write ('Окружности не пересекаются')
else
if d=2*r
then
write ('Окружности касаются')
else
if (x1=x2) and (y1=y2)
then
write ('Окружности совпадают')
else
Begin
writeln ('Окружности пересекаются'); {Получается ромб = 2 треугольника}
p:=(2*r+d)/2; {Полупериметр}
s:=2*sqrt(p*(p-r)*(p-r)*(p-d)); {Площадь по Герону}
write ('Площадь четырехугольника=',s:0:2);
end;
end.

1 | Автор: clope | 2011-03-29, 16:26 | Изменено: clope - Вт, 2011-03-29, 16:26   |  Репутация: [ + 0 ]
Пример ввода при котором ошибка возникает скинь?:)

Нужна помощь? Сюда: vkontakte.ru/berestovskiy
2 | Автор: Berestovskiy | 2011-03-29, 18:23   |  Репутация: [ + 211 ]
мне надо добавить в эту программу что-то, чтобы выводилась ошибка при вводе буквы (вместо цифры) в графу, где надо задать радиус окружностей.!... Чтобы ввод был корректен.

P.S. (с) Препода - проверь корректность ввода, при вводе БУКВЫ в графу, где надо задать радиус...

Добавлено (30.03.11, 16:59)
---------------------------------------------
Допустим, какой-то дурачок запустил данную программу, и заместо радиуса вписал какой-то набор букв...
Так вот... Надо? чтобы программа в таком случае вывела надпись "Ошибка ввода"!

3 | Автор: clope | 2011-03-30, 16:59   |  Репутация: [ + 0 ]
3 | Автор: clope | 2011-03-30, 16:59   |  Репутация: [ + 0 ]
мм...ну у меня есть код, готовый, только там для одного символа:)
т.е. если ввести цифру и букву - будет считать что это число))
а полная проверка - это громадный такой код будет..))
ну я над алгоритмом определения подумаю и выложу код коль что:)


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
4 | Автор: Berestovskiy | 2011-03-31, 17:11   |  Репутация: [ + 211 ]
да особо громадного не будет - самое примитивное это читать не число а строку а потом поэлементно проверять число это или нет:
Code
flag:=false;
readln(s);
for i:=1 to length(s) do
if (s(i) in digits) then
flag:=true
else
begin
flag:=false;
break;
end;
if (flag=true)
then
{введено число, считаем дальше}
else
{ошибка ввода}

где digits это константа массив:
Code
const digits : array [0..9] of char = '0123456789';


If you can't make it GOOD make it LOOK GOOD. B.Gates
5 | Автор: DoVe | 2011-03-31, 20:39   |  Репутация: [ + 48 ]
спасибо за помощь )
6 | Автор: clope | 2011-03-31, 21:23   |  Репутация: [ + 0 ]
работает? для большей корректности можно добавить возмжность ввода "-" на первом месте

If you can't make it GOOD make it LOOK GOOD. B.Gates
7 | Автор: DoVe | 2011-03-31, 21:31 | Изменено: DoVe - Чт, 2011-03-31, 21:31   |  Репутация: [ + 48 ]
А если вводить "1,5" и прочее, мол не целые числа...что выдавать будет?

Quote (DoVe)
да особо громадного не будет

ну тут идёт пять считываний, плюс там где x1,y1 и x2,y2 нужно ставить проверку на каждое из вводимых, т.е. перед каждым считыванием должна стоять твоя схема...вот по этому он и будет громадным:)


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
8 | Автор: Berestovskiy | 2011-03-31, 23:12   |  Репутация: [ + 211 ]


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
8 | Автор: Berestovskiy | 2011-03-31, 23:12   |  Репутация: [ + 211 ]
да оформить эту схему процедурой и вызывать где надо и всё.
ну а знаки типа -, десятичного разделителя можно дописать для большей корректности


If you can't make it GOOD make it LOOK GOOD. B.Gates
9 | Автор: DoVe | 2011-04-01, 09:36   |  Репутация: [ + 48 ]
  • Страница 1 из 1
  • 1
Поиск: