Вопрос Структуры на языке с++ скажите пожалуйста, почему не работает программа ,и как её исправить?

Регистрация
12 Ноя 2013
Сообщения
92
Репутация
1
Спасибо
0
Монет
0
Задание:

Описать тип Price - с полями целого типа rub (рубли), cop (копейки) и

функцию incPrice(p, t), с параметром p типа Price и целочисленным t, которая вычисляет произведение цены на положительное целое число t. Аргумент p является входным и выходным параметром. Применить функцию incPrice к пяти данным ценам.

Текст программы:

#include<iostream>

#include<cmath>

struct Price {

int rub;

int cop;

};

Price incPrice(Price p, int t) {



p.rub=p.rub * t;

p.cop=p.cop * t;

return p;

}

int main() {

using namespace std;

int t=0;

Price c;

cin >> c.rub;

cin>>c.cop;

cout << c.rub << "." << c.cop << endl;

cin >> t;

incPrice(c, t);

cout << c.rub<<"."<<c.cop;

return 0;

}

Тест:
289587034_a9ac43f1bc75a7fc7f0ec23e7ab64160_800.png

 
#include

using namespace std;

struct Price {
unsigned rub;
unsigned cop;
Price() : rub(0), cop(0) {}
Price(const unsigned rub, const unsigned cop) : rub(rub), cop(cop) {
cast();
}
private:
void cast() {
static const auto ten = 100U;
while (cop >= ten) {
++rub;
cop -= ten;
}
}
friend Price operator*(const Price& p, const unsigned t) {
return Price{ p.rub * t, p.cop * t };
}
friend Price operator*(const unsigned t, const Price& p) {
return Price{ p.rub * t, p.cop * t };
}
friend ostream& operator p.cop;
p.cast();
return inp;

}
};

template
T input(const char* msg) {
cout > value;
return value;
}

Price incPrice(const Price& p, const unsigned t) {
return p * t;
}

int main() {
const auto p = input("rub cop: ");
const auto t = input("t: ");
const auto total = incPrice(p, t);
cout
 
можно так изменить
c = incPrice(c, t);
 
Выходной (выходной и входной) параметр должен передаваться по ссылке или указателю. Price incPrice(Price& p, int t) А так же нужно обрабатывать после умножения копейки, чтобы не было больше 99
 
Вы в функцию incPrice() передаёте не структуру которую объявили в main, а значения этой структуры. В самой функции incPrice() создаётся копия структуры, производятся вычисления и потом после завершения incPrice() структура в incPrice() исчезает. А в main не подверглась изменению
.
Чтобы заставить функцию incPrice() работать со структурой объявленной в main делайте как первый ответ. Либо верните значения структуры которые есть в incPrice() как говорит второй ответ
 
Назад
Сверху