Я просто изучаю C++ и имею назначение, где вещи должны выводиться как фракции. Я никогда не работал на C++, поэтому я не совсем уверен, правильно ли я это делаю. Моя программа позволяет мне вводить первые 2 фракции, затем она падает (что я предполагаю, имеет какое-то отношение к моим функциям и как я их реализовал в int main). Я обычно бывал у репетитора, но, к сожалению, в школу я иду не предлагает преподавателей по этой теме, и я перешел из школы, которая преподавала C, поэтому я действительно борется! Любая помощь очень ценится (:Новичок в C++ (вычисление и вывод данных)
#include<iostream>
using namespace std;
class gcd
{
public:
void finder();
void rename();
void add();
void subtract();
void multiply();
void divide();
void print();
private:
int n, d, n1, d1, temp1, temp2;
} g1;
void gcd::finder()
{
temp1 = n;
temp2 = d;
while (n != d)
{
if (n > d)
n = n - d;
else
d = d - n;
}
n1 = temp1/n;
d1 = temp2/d;
}
void gcd::rename()
{
n1 = n;
d1 = d;
}
void gcd::add()
{
n1 = (n1 * d) + (n * d1);
d1 = (d1 * d);
g1.finder();
}
void gcd::subtract()
{
n1 = (n1 * d) - (n * d1);
d1 = (d1 * d);
g1.finder();
}
void gcd::multiply()
{
n1 = n * n1;
d1 = d * d1;
g1.finder();
}
void gcd::divide()
{
n1 = n1 * d;
d1 = d1 * n;
g1.finder();
}
void gcd::print()
{
cout << n1 << "/" << d1 << endl;
}
int main()
{
int n, d;
cout << "Please enter 5 fractions with a space between the numerator and denominator" << endl;
cout << "For example, input 2/3 as 2 3" << endl;
cout << "Enter 1st fraction: ";
cin >> n >> d;
g1.rename();
cout << "Enter 2nd fraction: ";
cin >> n >> d;
g1.divide();
cout << "Enter 3rd fraction: ";
cin >> n >> d;
g1.multiply();
cout << "Enter 4th fraction: ";
cin >> n >> d;
g1.add();
cout << "Enter 5th fraction: " << endl << endl;
cin >> n >> d;
g1.subtract();
g1.print();
return 0;
}
Вы должны вывести «вещи» в виде фракций или написать класс, представляющий фракции? – molbdnilo
'int n, d', перечисленные в' main', не будут теми же переменными, что и члены данных 'n' и' d' в 'g1', поэтому' cin >> n >> d' не влияет на ' g1' и 'g1.rename()' работает с неинициализированными данными членов (это неопределенное поведение). Вероятно, вы должны создать 'g1' внутри' main' - после того, как вы прочитали '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'и передали их как аргументы в * конструктор * для' класса gcd', соответствующие элементы данных. –
@TonyD Bear со мной, (поскольку я только начал C++ на этой неделе, так что я не уверен, что это правильно), но я бы просто добавил «void fraction (int n, int d)»; к классу gcd, затем поставьте «g1.fraction()»; в основном для этого? – Celeste