Ввести структуру для описания понятия рациональная дробь - C (СИ)
Формулировка задачи:
Ввести структуру для описания понятия рациональная дробь. Составить и протестировать функции:
• eqw(a, b), которая проверяет на равенство рациональные дроби a и b.
• max(a), которая возвращает наибольшую рациональную дробь из массива структур a. Предусмотреть операцию сокращения результирующей дроби.
Решение задачи: «Ввести структуру для описания понятия рациональная дробь»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <assert.h> struct ratio { int numerator; size_t denominator; }; struct ratio ratio(int numerator, size_t denominator) { struct ratio result; assert(denominator != 0); result.numerator = numerator; result.denominator = denominator; return result; } size_t gcd(size_t a, size_t b) { if(a == 0) return b; while(b != 0) if(a > b) a -= b; else b -= a; return a; } int equal(struct ratio r1, struct ratio r2) { return r1.numerator * r2.denominator == r2.numerator * r1.denominator; } void cancel(struct ratio* ratio) { size_t d = gcd(abs(ratio->numerator), ratio->denominator); ratio->numerator /= d; ratio->denominator /= d; } struct ratio max(struct ratio* ratios, size_t size) { size_t i, idx_max; assert(size != 0); for(idx_max = 0, i = 1; i < size; ++i) { if(ratios[i].numerator * ratios[idx_max].denominator > ratios[idx_max].numerator * ratios[i].denominator) idx_max = i; } cancel(&ratios[idx_max]); return ratios[idx_max]; }
Объяснение кода листинга программы
- Введенная структура для описания понятия рациональная дробь:
- struct ratio { int numerator; size_t denominator; }
- Создана функция для ввода данных и возвращения структуры рациональной дроби:
- struct ratio ratio(int numerator, size_t denominator)
- Реализована функция вычисления наибольшего общего делителя (НОД):
- size_t gcd(size_t a, size_t b)
- Реализована функция сравнения двух структур рациональных дробей на равенство:
- int equal(struct ratio r1, struct ratio r2)
- Реализована функция для сокращения дробей:
- void cancel(struct ratio* ratio)
- Реализована функция для поиска максимальной дроби в массиве:
- struct ratio max(struct ratio* ratios, size_t size)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д