我遇到了一个问题,其中已经提供了主要功能,我需要创建一个能够计算任何问题的函数。我试图弄清楚如何用我从我创建的函数中获得的新值来覆盖main函数中的数组,我遇到了问题。到目前为止,最终结果是它只打印出原始数组中的任何内容。
#include "stdafx.h"
//Windows Visual studio seems to want me to add this in order for it to work
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void change_price(float price[], float percent_change){
for (int j = 0; j < 8; j++){
(price[j] * (100 + percent_change)) / 100 ;
}
}
/*
This program inputs an array of item prices on sale
There is a 25% discount and the NY sales tax 8.875 is computed on the reduced price
It then prints the resulting prices
*/
int main(){
float prices[] = { 10, 27, 83, 15, 39, 120, 87, 20 };
change_price(prices, -25.0);
change_price(prices, 8.875);
cout << "final prices\n";
for (int i = 0; i < 8; i++)
cout << prices[i] << endl;
}
答案 0 :(得分:2)
您认为没有变化的原因是,因为您没有在您的函数中为您的数组分配任何新值。尝试类似:
price[j]=(price[j] * (100 + percent_change)) / 100 ;
在你的循环中。
编辑:
我的一些建议:如果您必须自己编写这样的代码(在主函数中),请使用std::vector
或std::array
。不幸的是,幸运的是,它们不是c风格阵列的替代品,但除了一些其他优点外,它们还可以消除任何关于传递引用或传值的混淆