我试图能够调用vendingmachine函数并让它给我一个表格,我从文件中得到的东西,但它给了我疯狂的数字,如-858993460。我必须能够在调用函数之前更改单个金额和价格,以便它可以给我不同的数字。
可乐 0.75 20 Ruby Red Blast 1.00 10 柠檬嘶嘶声 0.75 8 葡萄苏打水 0.90 5 柑橘翻转 0.85 0 哈瓦内罗惊喜 0.80 11 ^^这是使用
的文本文件#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
struct soda{
string name;
double price;
int amount;
};
void vendingmachine(struct soda[6]);
int main(){
ifstream inFile;
soda soda[6];
inFile.open ("machine.txt");
if ( inFile.fail() )
{
cout << "Error: Data file could not be opened" << endl;
exit (EXIT_FAILURE);
}
for(int i=0; i < 6; i++){
getline(inFile, soda[i].name);
inFile >> soda[i].price;
inFile >> soda[i].amount;
inFile.ignore(100,'\n');
}
cout << "Welcome to the vending machine!" << endl;
cout << endl;
vendingmachine(soda);
return 0;
}
void vendingmachine(struct soda soda[6]){
cout << "***************************************************************" << endl;
cout << " " << "Drink Name" << " " << "Price Per Can" << " " << "Number in Machine" << endl;
for( int i=0; i < 6; i++){
cout << setw(17) << soda[i].name << setw(16) << soda[i].price << setw(20) << soda[i].amount << endl;
}
cout << "***************************************************************" << endl;
}
谢谢大家,我把它改成了应该如何。
答案 0 :(得分:3)
您正在声明一个局部变量soda
并在函数
void vendingmachine(struct soda[6]){
soda soda[6];
您需要操作调用者的数组
void vendingmachine(struct soda soda[6]){
//soda soda[6];
答案 1 :(得分:0)
将您的功能更改为:
void vendingmachine(struct soda soda[6]){
cout << "***************************************************************" << endl;
cout << " " << "Drink Name" << " " << "Price Per Can" << " " << "Number in Machine" << endl;
for( int i=0; i < 6; i++){
cout << setw(17) << soda[i].name << setw(16) << soda[i].price << setw(20) << soda[i].amount << endl;
}
cout << "***************************************************************" << endl;
}
THEN!
转到您从文本文件接收数据的循环,然后输入:
cout << soda[i].name << endl;
(现在运行程序)
您会注意到整条第一行归于可乐,然后有5条空白行被打印出来。
现在您需要做的就是确保文本文件中的变量正确地放入您的结构中,您很快就会完成。