Программа на Паскале. Помогите найти ошибку.

интернет программирование pascal паскаль

Суть программы. Ввожу 2 дроби. Программа должна вычислить результат их произведения и деления. Числитель и знаменатель дробей - строго натуральные числа.
Программа считает правильно, но в области определения ошибки она выдает ошибку(простите за тавтологию). Ввожу дроби 1/6 и 3/4 - все рассчитывает. Ввожу неправильные данные, т.е. 1f/6 и 3/4 , то чертовщина выходит.Код ниже.
----
program drobi;
var num1,num2,num3,num4:word; i,j:integer; numx,numd:real;st,st1,st2:string;
procedure find(st:string; var num1,num2:word; i,j:integer);
var p,code:integer;
begin
p:=pos('/',st);
if j=0 then
val(copy(st,1,p-1),num1,code)
else exit;
if code=0 then else begin j:=1; exit; end;
val(copy(st,p+1,length(st)-p),num2,code);
if code=0 then else begin j:=2; exit; end;
end;
begin
i:=0;j:=0;
writeln('Vvedite pervuyu drob');
readln(st1);
writeln('Vvedite vtoruyu drob');
readln(st2);
st:=st1;i:=1;
find(st,num1,num2,i,j);
st:=st2;i:=2;
find(st,num3,num4,i,j);
if (j=0) and (i=2) then begin writeln(num1,num2,num3,num4);{для проверки}
numx:=(num1*num3)/(num2*num4);
numd:=(num1*num4)/(num2*num3);
writeln('Proizvedenie=',numx:3:4);
writeln('Delenie=',numd:3:4);
end
else begin
writeln('Oshibka!');
writeln('Nomer drobi:',i:1);
writeln('Chislo:',j);
writeln('Stroka:',st);
end;
end.
------------------------


Примечание:
j указывает на ошибку в числителе(1) или знаменателе(2)
Ответы:
ППЦ вы накрутили. Почему так сложно?
"Суть программы. Ввожу 2 дроби. Программа должна вычислить результат их произведения и деления. Числитель и знаменатель дробей - строго натуральные числа."
Каким боком в числах оказался word?
Выкиньте программу в корзину. Очистите корзину. Почитайте газетку, посмотрите кино.
ЗАПОМНИТЕ НА ВСЮ ЖИЗНЬ - программа должна быть простой. МАКСИМАЛЬНО простой.
"Числитель и знаменатель дробей - строго натуральные числа."
Так и проверяйте числа. Зачем вы полезли в буквы?
uses crt;
const digit=['0'..'9'];

var
 inputstr:String;
 i:Integer;
BEGIN
readln(inputstr);
for i:=1 to length(inputstr) do
if inputstr[i] in digit then Writeln('Integer')
  else Writeln('Not integer');
END.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.