Прежде всего, я хотел бы извиниться за мой плохой английский и заранее поблагодарить вас за чтение и помощь.Передача данных структуры переменной C++?
В принципе у меня есть два структур, которые держат 3 Интса: номера fractionAnswers
Я тогда есть класс с именем addSubFractions, которая принимает два числа типа структуры в качестве параметров и возвращает тип fractionAnswers структуры. Моя цель - присвоить доход от addSubFractions класс номера тип struct variable под названием ответы.
Я довольно новичок в C++, и я думал, что смогу сделать это логически, я мог бы как можно глубже, без какой-либо хорошей информации.
Heres часть кода, который не работает для меня:
int main() {
numbers first, second, answer ;
cout << "Enter fraction" ;
cin >> first.wholeNumber ;
cin >> first.numerator ;
cin >> first.denominator ;
cout << "Enter second fraction" ;
cin >> second.wholeNumber ;
cin >> second.numerator ;
cin >> second.denominator ;
answer = addSubFractions(first, second) ;
cout << "Your answer is:" << answer.numerator << "/" << answer.denominator ;
return 0 ;}
Вот другой класс я говорил о
fractionAnswers addSubFractions(numbers firstFraction, numbers secondFraction) {
numbers answerFraction, holdFraction1, holdFraction2 ;
fractionAnswers someAnswers ;
//Multiply to get same denominator
holdFraction1.denominator = firstFraction.denominator * secondFraction.denominator ;
holdFraction2.denominator = firstFraction.denominator * secondFraction.denominator ;
//Numerator multiplication to match new denominator
holdFraction1.numerator = firstFraction.numerator * secondFraction.denominator ;
holdFraction2.numerator = secondFraction.numerator * firstFraction.denominator ;
//Reduce fractions first
while (true) {
if(!reduceFractions(holdFraction1))
break;
}
//Reduce fractions second
while (true) {
if(!reduceFractions(holdFraction2))
break;
}
someAnswers.numeratorAns = holdFraction1.numerator + holdFraction2.numerator ;
someAnswers.denominatorAns = holdFraction2.denominator ;
return someAnswers ;
}
это reduceFractions
bool reduceFractions(numbers Fractions) {
bool answer ;
for (int i = Fractions.numerator ; i >= 2 ; i--) { //This will keep running until i = the GFC for both numerator & denominator
if ((((Fractions.numerator % i) == 0) && (Fractions.denominator % i) == 0)) {
Fractions.numerator /= i ;
Fractions.denominator /= i ;
answer = true ;
}
}
answer = false ;
return answer ;
}
Это структуры
struct numbers {
int numerator ;
int denominator ;
int wholeNumber ;
};
struct fractionAnswers {
int numeratorAns ;
int denominatorAns ;
int wholeNumberAns ;
};
Вы возвращающее значение типа 'fractionAnswers' от вашей функции и пытаетесь присвоить его значение типа' 'numbers' в основном()'. Вероятно, это не то, что вы намеревались сделать. – dhavenith
Каково определение 'reduceFractions'? Кроме того, может возникнуть смысл называть его «someAnswers» после того, как вы заполнили его значениями, а 'someAnswers', вероятно, должен быть« числом », а не его собственным типом (и функция должна вернуть соответствующий тип). – IllusiveBrian
вы также можете просто 'while (reduceFactions (....)) {}', не нужно внутреннее 'if' +' break'. – aruisdante