C++在void函数中填充空数组
C++ Filling empty arrays in void function
对于课堂,我必须编写一个程序来计算12个不同的"等级"。我使用了两个不同的数组——"分子[]"answers"分母[]",每个数组的大小都是12(12个不同的整数)。对于这项任务,我必须将分母中的3的值设为0,这表明这些分母对应的分子等于"加分"(例如,5/0级等于5个加分)。然而,现在我必须创建一个"数据清理"函数,它获取所有具有非零分母的分数,并将它们移动到一个新的空数组中(只剩下"真实"分数,我将其作为newNumerator[]和newDenominator[],以及每个数组的新大小"newSize"。数据清理函数需要有这些参数-
dataClean(int numerator[], int denominator[], int size, int newNumerator[], int newDenominator[], int &newSize)
我需要填充新的数组,并在cleanData函数中定义这些数组的newSize,并通过参数将它们的新值返回到main()。然而,我在这个问题上已经坚持了很长一段时间。我不确定我是否需要使用指针,即使如此,我也不清楚如何使用它们。如果不清楚的话,很抱歉,这项任务让我很困惑。如果有任何帮助,我们将不胜感激。如果你需要任何进一步的澄清,请告诉我。
分子和分母的数据文件(data.txt)
72 49 23 5 9 10 6 16 26 54 4 55//numerator[]
75 50 25 0 10 0 0 20 30 55 5 60//denominator[]
程序-
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cmath>
#include <iomanip>
using namespace std;
typedef int arrayType[];
void readData(int numerator[], int denominator[], int size);
void reportData(arrayType, arrayType, int);
void reportOverall(int numerator[], int denominator[], int size);
void cleanData(int numerator[], int denominator[], int size, int newNumerator[], int newDenominator[], int &newSize);
int main()
{
const int size = 12;
int numerator[size];
int denominator[size];
int newSize = 12;
int newNumerator[newSize];
int newDenominator[newSize];
cout << fixed << showpoint << setprecision(1);
readData(numerator, denominator, size);
reportData(numerator, denominator, size);
reportOverall(numerator, denominator, size);
cout << "n******************************n";
cleanData(numerator, denominator, size, newNumerator, newDenominator, &newSize);
reportData(newNumerator, newDenominator, newSize);
system("pause");
return 0;
}
void readData(int numerator[], int denominator[], int size)
{
ifstream dataIn;
dataIn.open("data.txt");
if(!dataIn)
{
cout << "File not foundn";
system("pause");
exit(1);
}
int count;
for(count = 0; count < size; count++)
{
dataIn >> numerator[count];
}
for (count = 0; count < size; count++)
{
dataIn >> denominator[count];
}
dataIn.close();
}
void reportData(arrayType numerator, arrayType denominator, int size)
{
int count;
for (count = 0; count < size; count++)
{
if (denominator[count] == 0)
{
cout << "Score " << (count + 1) << " is " << numerator[count] << "/" << denominator[count] << " = " << "Bonus points!n";
}
else
{
double percent = 100.0 * static_cast<double>(numerator[count]) / denominator[count];
cout << "Score " << (count + 1) << " is " << numerator[count] << "/" << denominator[count] << " = " << (percent) << "%n";
}
}
}
void reportOverall(int numerator[], int denominator[], int size)
{
int count;
int totalNumerator = 0.0;
int totalDenominator = 0.0;
for (count = 0; count < size; count++)
{
totalNumerator += numerator[count];
}
for (count = 0; count < size; count++)
{
totalDenominator += denominator[count];
}
double overallPercent = 100.0 * static_cast<double>(totalNumerator) / (totalDenominator);
cout << "Total Points Earned (numerators): " << totalNumerator << endl;
cout << "Total Points Possible (denominators): " << totalDenominator << endl;
cout << "Overall Grade: " << overallPercent << "%n";
}
void cleanData(int numerator[], int denominator[], int size, int *newNumerator[], int *newDenominator[], int &newSize)
{
int count;
for(count = 0; count < size; count++)
{
int count2 = 0;
if(denominator[count] != 0)
{
*newNumerator[count2] = numerator[count];
*newDenominator[count2] = denominator[count];
newSize--;
count2++;
}
}
}
您需要通过正确引用参数来修复函数调用和cleanData定义
within main:
cleanData(numerator, denominator, size, newNumerator, newDenominator, newSize);
void cleanData(int* numerator, int* denominator, const int size, int *newNumerator, int *newDenominator, int newSize)
{
int count;
for(count = 0; count < size; count++)
{
int count2 = 0;
if(denominator[count] != 0)
{
newNumerator[count2] = numerator[count];
newDenominator[count2] = denominator[count];
newSize--;
count2++;
}
}
}
相关文章:
- C++ 填充数组时遇到问题
- 如何使用同时设置计数和填充数组的函数
- 如何使填充数组的函数发送到函数?而不是其参数中的数组
- 如何使用文件填充数组并将其与用户输入C 进行比较
- 使用 memset 填充数组会显示垃圾
- Visual Studio从文件中填充数组时中断
- 分段 填充数组时出错
- 用不同的值填充数组/矢量的边缘和中心
- 使用相同的数据填充数组对象或使用指针
- 是否可以使用三元运算符"?"在 C/C++ 中填充数组列表?
- 填充数组(写入位置0x00000000的访问冲突)
- 从文件中读取输入并填充数组以存储数据供以后使用
- c++当循环在填充数组时没有正确终止时,希望能帮助退出此循环
- 填充数组会导致数组周围的堆栈损坏
- Cuda有效地将数据插入到未排序的填充数组中
- 填充数组的 C++ 函数
- 访问部分填充数组上的第一个打开元素
- 将一个字节数组从C#传递到C++填充数组的C++com对象中
- 如何使用向量中的信息填充数组并从数组中选择随机项
- C,填充数组使用dec2bin转换器