将问题传递给函数后,我遇到了从数组中获取垃圾的问题。这是将它传递给只打印出来的函数的正确方法吗?
while(infile){
infile >> batch;
infile >> amount;
cout << batch << " " << amount<< endl;
totalChocolates[batch-1]+=amount;
chocolateBatches[batch-1]++;
}
//header();
print(totalChocolates,chocolateBatches);
system("pause");
return 0;
void print(int *total,int *batch)
{
for(int i = 0;i<size;i++)
{
cout << i+1 << " " << batch[i] << " " << total[i] << endl;
}
}
好的,我退出了这个功能,我还在垃圾。
while(infile>> batch >> amount){
//infile >> batch;
//infile >> amount;
cout << batch << " " << amount<< endl;
totalChocolates[batch-1]+=amount;
chocolateBatches[batch-1]++;
}
for(int i = 0;i<size;i++)
{
cout << i+1 << " " << chocolateBatches[i] << " " << totalChocolates[i] << endl;
}
返回
1 64 8 907 18 1133 9 636 3 1134 16 1101 6 313 7 791 7 1130 1 1221 20 332 22 697 6 807 2 36 2 747 16 1219 3 859 18 639 18 312 7 1079 10 1074 5 678 18 59 1 -858993418 -858960818 2 -858993429 -858971910 3 -858993421 -858963346 4 -858993431 -858970692 5 -858993427 -858963901 6 -858993416 -858961011 7 -858993417 -858960812 8 -858993421 -858961874 9 -858993417 -858960079 10 -858993418 -858960161 11 -858993422 -858963562 12 -858993428 -858970812 13 -858993460 -858993460 14 -858993427 -858967859 15 -858993422 -858964267 16 -858993418 -858954549 17 -858993423 -858966453 18 -858993423 -858964725 19 -858993460 -858993460 20 -858993433 -858973375 21 -858993419 -858963644 22 -858993426 -858968664 23 -858993456 -858993060 24 -858993460 -858993460 25 -858993455 -858990222 Press any key to continue . . .
答案 0 :(得分:3)
差不多,是的。问题是,你没有正确使用数组的大小,所以你可能只是在最后运行到未初始化的空间。同时将大小传递给print
函数,这样就不会跑到最后。
编辑:虽然在你的问题评论中注意到了Kerrek的警告。