Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Подпрограммы

Автор: Гость 22.12.2006 22:56

Дорогие форумчане, помогите пожалуйста с выполнением данной задачи!!!программер из меня никудышный,поэтому не получилось сделать данную задачу!!!Заранее спасибо всем,кто сможет помочь!!!

Реализовать набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида p/q (p – целое, q – натуральное): а) сложение; б) вычитание; в) умножение; г) деление; д) сокращение дроби; е) возведение дроби в степень n (n – натуральное); ж) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
1) Дан, массив A – массив обыкновенных дробей. Найти сумму всех дробей и вычислить их среднее арифметическое, результаты представить в виде несократимых дробей.
2) Дан массив A – массив обыкновенных дробей. Отсортировать его в порядке возрастания.


Автор: мисс_граффити 23.12.2006 0:26

покажи, как пробовал.
что именно не получилось тоже бы хорошо написать

Автор: Гость 23.12.2006 0:39

моя проблема заключается в том,что с++ я не знаю (тока какие-то мелочи)!!поэтому я даже не знаю как оформлять и вызывать процедуры!!помогите хотя бы с частью операций над дробями,с массивами я уж как-нибудь помучаюсь!!

Автор: мисс_граффити 23.12.2006 0:45

давай разбираться.
но писать тебе придется самому.
во-первых, надо определится, речь про класс - "дробь", с методами сложение, вычитание и т.д., или про набор независимых подпрограмм?

Автор: Гость 23.12.2006 0:52

набор независимых подпрограмм,которые помогут реализовать 2 данных задачи

Автор: мисс_граффити 23.12.2006 1:03

замечательно.
итак, дробь задается двумя числами - p и q (числитель и знаменатель).
допустим, у тебя есть 2 дроби p1/q1 и p2/q2
тебе надо их сложить.
напиши по пунктам, как будешь это делать (не заморачиваясь по поводу языка - на русском. просто пошагово, четко разбив на отдельные действия. а если сможешь - сразу на с++)

Автор: Гость 23.12.2006 1:51

это я все понимаю,мне надо как писать процедуры,где прописывать глобальные переменные и как вызывать процедуры относительно их,просто из мануалов это я немного не до понял.

Автор: мисс_граффити 23.12.2006 2:09

процедур в с++ нет, только функции.
общий вид:
тип_результата имя (параметры)
{тело функции}
например:

int adding(int a,int b)
{
int c=a+b;
return c;
}

int - возвращаемый результат (целое число)
adding - имя
int a, int b - параметры (два целых числа)
int c - локальная переменная (действует в рамках функции adding), которой сразу присваиваем значение a+b
return c - делаем так, чтобы функция вернула с (в паскале это было бы adding:=c)

чтобы вызвать эту процедуру, нам понадобится три переменных: две суммируемые и одна для суммы.
int a=1,b=5,c;
c=adding(a,b);

или сразу:
int a=1,b=5,c=adding(a,b);

Автор: Гость 23.12.2006 2:18

Спасибо,ща че-нибудь попробую сделать )

Автор: Гость 23.12.2006 2:55

че то я непомерно туп-у меня не получается!!!
напиши,если можешь, хотя бы 1 функцию по суммированию с ее вызовом в основной программе.БУДУ ПРОСТО НЕПОМЕРНО БЛАГОДАРЕН!!!!

Автор: мисс_граффити 23.12.2006 3:23

ну как-то так (дробь может получиться не сокращенная - типа 10/5. для решения этой проблемы у тебя будет отдельная функция)
нам надо возвращать сразу 2 числа (числитель и знаменатель суммы), а функция умеет только одно.
будем работать с этой подпрограммкой в стиле процедуры.

например:

void slog (int p1,int q1, int p2, int q2, int* psumm, int* qsumm)
{
*qsumm=q1*q2;
*psumm=q1*p2+q2*p1;
}

разумеется, по-хорошему знаменатель результата - не произведение знаменателей, а наименьшее общее кратное.
захочешь - можешь переделать.
вызов:
int p1=1,p2=2,q1=2,q2=3,psumm,qsumm;
slog(p1,q1,p2,q2,&psumm,&qsumm);

Автор: Гость 23.12.2006 15:05

Спасибо!!!