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

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

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

> приведение дроби к несократимому виду
marwell
сообщение 3.01.2010 18:04
Сообщение #1


Бывалый
***

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

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


нужно написать программу приведения дроби к несократимому виду.

var i,a,b,p,q:integer;
function NOD(a:integer; b:integer):integer;
begin
while(a<>0) and (b<>0) do
if a>=b then a:=a mod b
else b:=b mod a;
NOD:=a+b;
end;
function NOK (A: integer; B: integer): integer;
begin
NOK := a * b div NOD (a, b);
end;
procedure Socr(a,b:integer; var p,q:integer);
begin
if a=b then begin
p:=1;
q:=1;
end
else if NOD (a, b)<>1 then
begin
NOD (a, b);
p:=a/NOD(a, b); {вот в этой строчке выдает ошибку}
q:=b/NOD(a, b);
end;
begin
Writeln('введите числитель');
Readln(a);
Writeln('введите знаменатель');
Readln(b);
Socr(a,b);
Writeln(p,'/',q);
readln;
end.


признаюсь, в процедурах и функциях я разбираюсь не очень хорошо((((
при прогоне выдает ошибку [Error] Project2.dpr(28): Incompatible types: 'Integer' and 'Extended'
не подскажите, в чем проблема?

Сообщение отредактировано: marwell - 3.01.2010 18:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 3.01.2010 19:20
Сообщение #2


Гость






Написать (или найти на форуме) процедуру сложения дробей, и привести к несократимому виду результат...
 К началу страницы 
+ Ответить 
marwell
сообщение 3.01.2010 21:26
Сообщение #3


Бывалый
***

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

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


Цитата(volvo @ 3.01.2010 19:20) *

Написать (или найти на форуме) процедуру сложения дробей, и привести к несократимому виду результат...

посмотри пожалуйста, так правильно?

var a_1,a_2,b_1,b_2,p,q:integer;
function NOD(a:integer; b:integer):integer;
begin
while(a<>0) and (b<>0) do
if a>=b then a:=a mod b
else b:=b mod a;
NOD:=a+b;
end;
function NOK (A: integer; B: integer): integer;
begin
NOK := a * b div NOD (a, b);
end;
procedure Socr(a,b:integer; var p,q:integer);
begin
if a=b then begin
p:=1;
q:=1;
end
else if NOD (a, b)<>1 then
begin
p:=a div NOD(a, b);
q:=b div NOD(a, b);
end
else Writeln ('введенная дробь несократима');
end;
begin
a_1:=1;
a_2:=1;
b_1:=1;
for b_2:=2 to 20 do
begin
a_1:=(NOK(b_1, b_2) div b_1)*a_1;
a_1:=a_1+((NOK(b_1, b_2) div b_2)*a_2);
b_1:=NOK(b_1, b_2);
end;
writeln (a_1,'/',b_1);
Socr(a_1,b_1,p,q);
Writeln (p,'/',q);
readln;
end.



Сообщение отредактировано: marwell - 3.01.2010 21:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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