Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 13:46   #1
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию проблема с функцией IsNumber

в задаче для проверки строка-число используется функция val, никак не могу заменить её на функцию IsNumber.
вот задача:

program Point_2;
uses crt;

var Centre_x: string; {введенная координата X центра окружности}
Centre_y: string; {введенная координата Y центра окружности}
Radius: string; {введенный радиус окружности}
X_str: string; {введенная произвольная координата X}
Y_str: string; {введенная произвольная координата Y}
Next_: string; {переменная для определения продолжения работы программы}
CX: real; {координата центра окружности X}
CY: real; {координата центра окружности Y}
Rad: real; {радиус}
z: integer; {переменная для проверки возможности преобразования введенной строки в число}
X: real; {координата X произвольной точки}
Y: real; {координата Y произвольной точки}
Eqution: real;
i:real;
begin

repeat
clrscr; {Очистка экрана}
{Ввод данных пользователем}
repeat {Обработка введения координаты X}
writeln ( 'Введите координату Х центра окружности');
readln (Centre_x); {ввод координаты X центра окружности}
val(Centre_x,CX,z); {преобразование введенных строковых данных в число}
if z<>0 then {проверка возможности преобразования введенного в число}
begin
writeln ('Вы ввели некорректные данные!'); {вывод сообщения о неверно введенных данных}
end;
until z=0;

repeat {Обработка введения координаты Y}
writeln ('Введите координату Y центра окружности');
readln (Centre_y); {ввод координаты y центра окружности}
val(Centre_y,CY,z); {преобразование введенных строковых данных в число}
if z<>0 then {проверка возможности преобразования введенного в число}
begin
writeln ('Вы ввели некорректные данные!'); {вывод сообщения о неверно введенных данных}
end;
until z=0;

repeat {Обработка введения величины радиуса окружности}
writeln ('Введите радиус окружности');
readln (Radius); {ввод радиуса}
val(Radius,Rad,z); {преобразование введенных строковых данных в число}
if Rad <= 0 then {проверка корректности введенного радиуса}
begin
writeln ('Вы ввели некорректные данные!'); {вывод сообщения о неверно введенных данных}
end;
until Rad>0;

repeat {Обработка введения координаты X произвольной точки}
writeln ('Введите любую координату X');
readln (X_Str); {ввод координаты X}
val(X_Str,X,z); {преобразование введенных строковых данных в число}
if z<>0 then {проверка возможности преобразования введенного в число}
begin
writeln ('Вы ввели некорректные данные!'); {вывод сообщения о неверно введенных данных}
end;
until z=0;

repeat {Обработка введения координаты Y произвольной точки}
writeln ('Введите любую координату Y');
readln (Y_Str); {ввод координаты Y}
val(Y_Str,Y,z); {преобразование введенных строковых данных в число}
if z<>0 then {проверка возможности преобразования введенного в число}
begin
writeln ('Вы ввели некорректные данные!'); {вывод сообщения о неверно введенных данных}
end;
until z=0;

{Определение принадлежности точки с введенными произвольными координатами введенной окружности}
{уравнение окружности (X-CX)^2+(Y-CY)^2=Rad^2}
clrscr; {Очистка экрана}
Eqution:= (sqr(X-CX)+sqr(Y-CY));
if sqr(Rad)= Eqution then
begin
write (' и радиусом ', CX, ',',' CY, ' , Rad);
writeln ();
write ('Точка с введенными Вами координатами: ', X, ',', Y);
writeln ();
writeln ('Принадлежит введенной Вами окружности');
end;

if sqr(Rad) < Eqution then
writeln ('Точка с введенными координатами находится за пределами данной окружности');

if sqr(Rad) > Eqution then
writeln ('Точка с введенными координатами находится внутри данной окружности');

{Запрос - продолжать или нет}
Writeln();
Writeln('=> прекратить? 1 - да, 2 нет');
readln (i);
if i=1 then writeln('До свидания!');
until i=1;
end.
Paulsan вне форума Ответить с цитированием
Старый 18.10.2010, 15:33   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Код:
Function IsNumber(S:String):Boolean;//функция проверяет, является ли строка числом
Var
     X,Err:Integer;
Begin
        Val(S,X,Err);
        If Err = 0 Then IsNumber:=True Else IsNumber:=False;
End;
_-Re@l-_ вне форума Ответить с цитированием
Старый 19.10.2010, 01:05   #3
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию

Могли бы Вы показать на примере, а то я всё равно не могу понять как, что и куда. Спасибо.
Paulsan вне форума Ответить с цитированием
Старый 19.10.2010, 02:43   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Paulsan Посмотреть сообщение
Могли бы Вы показать на примере, а то я всё равно не могу понять как, что и куда. Спасибо.
Код:
Function IsNumber(Var Number:integer; S:String):Boolean;//функция проверяет, является ли строка числом
Var
     Err:Integer;
Begin
        Val(S,Number,Err);
        If Err = 0 Then IsNumber:=True Else IsNumber:=False;
End;
Код:
repeat {Обработка введения координаты Y произвольной точки}
writeln ('Введите любую координату Y');
readln (Y_Str); {ввод координаты Y}
if IsNumber(Y_Str,Y) then
writeln ('Вы ввели некорректные данные!'); {вывод сообщения о неверно введенных данных}
until z=0;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 19.10.2010, 08:40   #5
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
Печаль

Не работает в паскале, может такое быть, что паскаль не знает такой функции?
Paulsan вне форума Ответить с цитированием
Старый 19.10.2010, 08:45   #6
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Paulsan Посмотреть сообщение
Не работает в паскале, может такое быть, что паскаль не знает такой функции?
описание функции IsNumber пишите до начала программы (до слова Begin)
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 19.10.2010, 10:00   #7
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию

При подстановке выдает, что тип фактического параметра-переменной string отличается от типа формального параметра integer
Paulsan вне форума Ответить с цитированием
Старый 19.10.2010, 10:09   #8
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Paulsan Посмотреть сообщение
При подстановке выдает, что тип фактического параметра-переменной string отличается от типа формального параметра integer
у меня все без ошибок отрабатывает
Код:
function IsNumber(Var Number:integer; S:String):Boolean;
var err:integer;
begin
     val(s,number,err);
     if err=0 then isnumber:=true else isnumber:=false;
end;

var x:string;
    a:integer;
begin
     writeln('enter x');
     readln(x);
     if isnumber(a,x) then writeln('yeah') else
     writeln('shit');
     readln;
end.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 19.10.2010, 10:27   #9
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию

Спасибо огромное!!!Всё получилось
Paulsan вне форума Ответить с цитированием
Старый 19.10.2010, 12:18   #10
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию

рано обрадовался, теперь все переменные стали типа string и я не могу подставить их в формулу. Паскаль ругается, что операция не применима к операндам этого типа. Как мне быть?
Paulsan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с самопальной функцией.. Lexus-3141 Общие вопросы C/C++ 4 30.04.2010 14:16
Проблема с функцией SUM Sneginka87 БД в Delphi 8 27.02.2010 02:34
Проблема с функцией Replace... Oooleg Microsoft Office Excel 7 02.09.2009 05:22
проблема с рекурсивной функцией world12_tk Помощь студентам 2 04.03.2009 20:57