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 18:16
Сообщение #2


Гость






Цитата
не подскажите, в чем проблема?
Деление ВСЕГДА возвращает результат вещественного типа. Если тебе нужно делить нацело - используй Div, или приводи частное к целому типу через Trunc.

Кстати, у тебя нарушена структура программы (одного End-а не хватает). А не видно этого - потому что исходник не отформатирован как положено.
 К началу страницы 
+ Ответить 
marwell
сообщение 3.01.2010 18:22
Сообщение #3


Бывалый
***

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

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


Цитата(volvo @ 3.01.2010 18:16) *

Деление ВСЕГДА возвращает результат вещественного типа. Если тебе нужно делить нацело - используй Div, или приводи частное к целому типу через Trunc.

ааа, вот оно что! спасибо

Добавлено через 2 мин.
Цитата(volvo @ 3.01.2010 18:16) *

Деление ВСЕГДА возвращает результат вещественного типа. Если тебе нужно делить нацело - используй Div, или приводи частное к целому типу через Trunc.

блин, опять ошибка((

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 div NOD(a, b);
q:=b div NOD(a, b);
end;
begin
Writeln('введите числитель');
Readln(a);
Writeln('введите знаменатель');
Readln(b);
Socr(a,b); {тут ошибка [Error] Project2.dpr(36): Not enough actual parameters}
Writeln(p,'/',q);
readln;
end.


что неправильно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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