Помощь - Поиск - Пользователи - Календарь
Полная версия: Проблема с процедурой сору
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Игорь
Создал простенькую програму для сложения двух обыкновенных дробей. При сложении дробей где числитель и знаменатель однозначные числа проблем нет, но если ,скажем, знаменатель число двузначное, то используется только последняя его цифра.
Код
program p_2;

     var
     half1,half2,buf:string;
     a1,a2:integer;
     b1,b2:integer;
     t1,t2,code:integer;

     begin
     write('Введите первую дробь:');
     readln(half1);
     write('Введите вторую дробь:');
     readln(half2);

     t1:=length(half1);
     t2:=pos('/',half1);
     buf:=copy(half1,1,(t2-1));
     val(buf,a1,code);
     buf:=copy(half1,t2,t1);
     val(buf,a2,code);

     t1:=length(half2);
     t2:=pos('/',half2);
     buf:=copy(half2,1,(t2-1));
     val(buf,b1,code);
     buf:=copy(half2,t2,t1);
     val(buf,b2,code);

     t2:=a2*b2;
     a1:=a1*b2;
     b1:=b1*a2;
     t1:=a1+b1;

     writeln('Дробь: ',t1/,'/',t2);
     end.
volvo
Цитата
При сложении дробей где числитель и знаменатель однозначные числа проблем нет
Неправда, у тебя всегда будет знаменатель считаться нулем, потому что символ '/', который ты запихиваешь в преобразуемую строку, запрещает корректно преобразовать строку в число.
         buf:=copy(half1,t2+1,t1); { <--- Вот так слеш не будет включаться в строку... }
... и все работает.
Игорь
Теперь и правда работает. От радости заставил програму ещё и сокращать полученную дробь.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.