C/C++

Пожалуйста помогите написать программу на С++

Напишите программу на C ++,которая:

1)
Считывает с клавиатуры два положительных целых числа, представляющих числитель и знаменатель дроби.
Максимально упрощает дробь.
Распечатывает полученную фракцию в формате num / den.

Предложение: дробь можно минимизировать, разделив числитель и знаменатель на их наибольший общий делитель. Реализуйте функцию для поиска такого значения: функция должна иметь прототип int gcd (int n1, int n2);, то есть она получает два числа, которые мы хотим проанализировать, как параметры, и в качестве результата возвращать их наибольший общий делитель.

Пример: Ниже приведен возможный пример выполнения (подчеркнутый текст вводится пользователем):

Числитель ввода: 12

Знаменатель входных данных: 18

Результат: 12/18 = 2/3

2)

прочитает n количество значений в массиве
отобразит его в обратном порядке.
Пример:

Введите количество элементов для хранения в массиве: 3
Введите 3 числа элементов в массиве:
элемент - 0: 2
элемент - 1: 5
элемент - 2: 7
Ожидаемый результат:
В массиве хранятся следующие значения:
2 5 7
Значения, сохраняемые в массиве в обратном порядке:
7 5 2
// ООП-версия
#include <iostream>
using namespace std;
class Fraction {
public:
Fraction(const int num, const int den) : num(num), den(den) {
normalize();
}
pair<int, int> value()const {
return { num, den };
}
private:
int num;
int den;
void normalize() {
auto x = gcd(num, den);
num /= x;
den /= x;
if (den < 0) {
num *= -1;
den *= -1;
}
}
int gcd(int a, int b) {
a = abs(a);
b = abs(b);
while (a != b) {
if (a > b) swap(a, b);
b = b - a;
}
return a;
}
};
int main() {
system("chcp 1251 > nul");
cout << "Введите числитель: ";
int num;
cin >> num;
cout << "Введите знаменатель: ";
int den;
cin >> den;
Fraction frac(num, den);
auto [n, d] = frac.value();
cout << "Результат: " << num << '/' << den << " = " << n << '/' << d << '\n';
system("pause > nul");
}
DZ
David Zak
79 608
Лучший ответ
#include <iostream>
using namespace std;
int gcd(int n1, int n2) {
 return n2? gcd(n2, n1 % n2) : n1;
}
int main(){
 setlocale(LC_ALL, "Russian");
 int a, b;
 cout << "Числитель ввода: ", cin >> a, cout << "Знаменатель входных данных: ", cin >> b;
 cout << "Результат: " << a << '/' << b << " = " << a / gcd(a, b) << '/' << b / gcd(a, b) << endl;
}

#include <iostream>
using namespace std;
int main(){
 setlocale(LC_ALL, "Russian");
 int n;
 cout << "Введите количество элементов для хранения в массиве: ", cin >> n;
 int *a = new int[n];
 cout << "Введите 3 числа элементов в массиве:" << endl;
 for(int i = 0; i < n; cout << "элемент - " << i << ": ", cin >> a[i++]);
 cout << "В массиве хранятся следующие значения:" << endl;
 for(int i = 0; i < n || !(cout << endl); cout << a[i++] << ' ');
 cout << "Значения, сохраняемые в массиве в обратном порядке:" << endl;
 for(int i = n; i-- || !(cout << endl); cout << a[i] << ' ');
 delete[] a;
}