IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Нерекурсивные процедуры и функции, по теме подпрограммы
MiH@N
сообщение 13.01.2008 21:47
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


помогите решить с кратким объяснением(если можно).(пробовал сам но не удаётся 'Реузультат должен быть несократимой дробью"-выполнить это условие wacko.gif .)
14. Даны две дроби A/B и C/D (A,B,C,D-натуральные числа). Составить программу для вычитания из первой дроби второй. Реузультат должен быть несократимой дробью.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 13.01.2008 21:53
Сообщение #2


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


дублировать темы это не хорошо Задачи по теме «Подпрограммы»
тем более Оzzя тебе уже все решил...

Сообщение отредактировано: compiler - 13.01.2008 21:57


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MiH@N
сообщение 13.01.2008 22:00
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


не совсем понял как решил...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 13.01.2008 22:03
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(MiH@N @ 13.01.2008 21:00) *
не совсем понял как решил...
на каком этапе остановился?
1)читаешь две дроби(четыре целых числа)
2)считаешь числитель и знаменатель для результирующей дроби
3)сокращаешь дробь
3а) поиск НОД-а
3б) деление числителя и знаменателя на НОД
4)вывод результата

Сообщение отредактировано: compiler - 13.01.2008 22:04


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MiH@N
сообщение 13.01.2008 22:06
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


так прафильно будет?
undefinedprogram program zadanie 3;
uses crt;
function nod(a,b:integer):integer;
begin
while a<>b do if a>b then a:=a-b else b:=b-a;
nod:=a;
end;

function nok(a,b:integer):integer;
begin
nok:=round((a*b)/nod(a,b));
end;

procedure minus(a,b,c,d:integer;var x,y:integer);
var m:integer;
begin
x:=a*(nok(b,d) div b)-c*(nok(b,d) div d);
y:=nok(b,d);
m:=nod(abs(x),y);
x:=x div m;
y:=y div m;
end;

var n1,n2,m1,m2,x,y:integer;
begin
clrscr;
write('Введите числитель первой дроби: ');readln(n1);
repeat
write('Введите знаменатель первой дроби: ');readln(n2);
until n2>0;
write('Введите числитель второй дроби: ');readln(m1);
repeat
write('Введите знаменатель второй дроби: ');readln(m2);
until m2>0;
minus(n1,n2,m1,m2,x,y);
clrscr;
if m1>=0 then writeln(n1,'/',n2,'-',m1,'/',m2,'=',x,'/',y) else
writeln(n1,'/',n2,'-(',m1,'/',m2,')=',x,'/',y);
readkey;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 13.01.2008 22:30
Сообщение #6


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


замечательно!
только следует добавить одно условие
        if x<>0 then begin
m:=nod(abs(x),y);
x:=x div m;
y:=y div m; end;


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MiH@N
сообщение 13.01.2008 22:52
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


а такое условие не нужно :
If b<0 or d<0 then...


Добавлено через 10 мин.
Цитата(compiler @ 13.01.2008 21:30) *
замечательно!
только следует добавить одно условие
а можно поточнее-куда добавить??

Сообщение отредактировано: volvo - 27.11.2009 17:03
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 13.01.2008 23:06
Сообщение #8


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(MiH@N @ 13.01.2008 21:52) *
а такое условие не нужно
ты ж вроде это при чтении проверяешь
Цитата(MiH@N @ 13.01.2008 21:52) *
а можно поточнее-куда добавить??
в процедуру minus, противном случае если отнять два равных числа получим глюк)


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MiH@N
сообщение 13.01.2008 23:13
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


а в блок-схеме как это намалевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 13.01.2008 23:26
Сообщение #10


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(MiH@N @ 13.01.2008 22:13) *
а в блок-схеме как это намалевать?
по поиску можешь найти программы которые это сделают...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MiH@N
сообщение 14.01.2008 20:37
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


Цитата(compiler @ 13.01.2008 22:26) *

по поиску можешь найти программы которые это сделают...

а пару ссылок на наиболее грамотные подкинуть не можешь?.. ато скачал несколько...одна с треском и шумом но всёж коряво работает а другая вообще pas.-ы не грузит(хотя должна).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 10:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"