Помощь - Поиск - Пользователи - Календарь
Полная версия: Подпрограммы
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Гость
Дорогие форумчане, помогите пожалуйста с выполнением данной задачи!!!программер из меня никудышный,поэтому не получилось сделать данную задачу!!!Заранее спасибо всем,кто сможет помочь!!!

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

мисс_граффити
покажи, как пробовал.
что именно не получилось тоже бы хорошо написать
Гость
моя проблема заключается в том,что с++ я не знаю (тока какие-то мелочи)!!поэтому я даже не знаю как оформлять и вызывать процедуры!!помогите хотя бы с частью операций над дробями,с массивами я уж как-нибудь помучаюсь!!
мисс_граффити
давай разбираться.
но писать тебе придется самому.
во-первых, надо определится, речь про класс - "дробь", с методами сложение, вычитание и т.д., или про набор независимых подпрограмм?
Гость
набор независимых подпрограмм,которые помогут реализовать 2 данных задачи
мисс_граффити
замечательно.
итак, дробь задается двумя числами - p и q (числитель и знаменатель).
допустим, у тебя есть 2 дроби p1/q1 и p2/q2
тебе надо их сложить.
напиши по пунктам, как будешь это делать (не заморачиваясь по поводу языка - на русском. просто пошагово, четко разбив на отдельные действия. а если сможешь - сразу на с++)
Гость
это я все понимаю,мне надо как писать процедуры,где прописывать глобальные переменные и как вызывать процедуры относительно их,просто из мануалов это я немного не до понял.
мисс_граффити
процедур в с++ нет, только функции.
общий вид:
тип_результата имя (параметры)
{тело функции}
например:
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);
Гость
Спасибо,ща че-нибудь попробую сделать )
Гость
че то я непомерно туп-у меня не получается!!!
напиши,если можешь, хотя бы 1 функцию по суммированию с ее вызовом в основной программе.БУДУ ПРОСТО НЕПОМЕРНО БЛАГОДАРЕН!!!!
мисс_граффити
ну как-то так (дробь может получиться не сокращенная - типа 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);
Гость
Спасибо!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.