基于另一个数组的内容将三个数组输出到文件

时间:2011-02-24 09:21:56

标签: c++ arrays file

我有一个数组跟踪搜索三个并行数组的结果。并行数组是名称,id#s和余额。名称与id和balance相关联,因为它们都具有相同的索引。用户搜索名称,程序应该将搜索结果输出到具有名称,ID和余额的文本文件。所以现在每次搜索成功(名称都在数组中找到),我将该名称的索引添加到名为resultsAr的数组中,如下所示:

while(searchTerm != "done")
{
    searchResult = SearchArray(searchTerm, AR_SIZE, namesAr);

    if(searchResult == -1)
    {
        cout << searchTerm << " was not found.\n";
    }
    else
    {
        cout << "Found.\n";
        resultsAr[index] = searchResult;
        index++;
    }

    cout << "\nWho do you want to search for (enter done to exit)? ";
    getline (cin,searchTerm);

} // End while loop

我无法弄清楚如何输出这个,所以它只输出找到的名字。现在我只是这样做:

outFile << fixed << setprecision(2) << left;
outFile << setw (12) << "Id#" << setw(22) << "Name" << "Balance Due"
        << endl << endl;

for(index = 0; index < sizes; index++)
{
    outFile << left << setw (10) << idsAr[index] << setw(22) << namesAr[index] 
            << setw(3) << "$";
    outFile << right << setw(10) << balancesAr[index] << endl;
}

但显然这只是输出整个数组。我已经尝试了一些东西,但我无法弄清楚我会做什么,所以它只会输出resultsAr中的那些。

谢谢,这是家庭作业,所以没有确切的答案,那将是非常可怕的。

编辑:资本化问题并不是一个真正的问题,我只是在我在这里发帖时意外地做到了这一点我猜对不起。 resultsAr部分正在工作,因为在搜索数组的内容之后是我搜索的名称的索引。 SearchArray()函数如下所示:

int SearchArray(string searchTerm,
             int size,
             string namesAr[])  
{  
// Variables  
int index;  
bool found;  

// Initialize
index = 0;
found = false;

while(index < size && !found)
{
    if(namesAr[index] == searchTerm)
    {
        found = true;
    }
    else
    {
        index++;
    }
}

if(found)
{
    return index;
}
else
{
    return -1;
}
}

2 个答案:

答案 0 :(得分:1)

你的SearchArray()函数是否返回在指向字符串的指针数组中找到匹配字符串的第一个索引?然后将它存储在一个只有一个条目的数组中?即使如此,您存储的元素也是“SearchResult”(大写),从未定义过。

- &GT;请发布完整的源代码(包括SearchArray())。

编辑:

好的,感谢发布SearchArray(),但是我们仍然需要更多,在你写的第一个框中:

resultsAr[index] = searchResult;

......但没有给我们一个循环。此外,如果要查找与“searchTerm”匹配的多个名称,则必须编写SearchArray(),或者返回索引数组或者接受start-index,否则它将返回第一个 - 多次找到名字。

答案 1 :(得分:1)

我很高兴。现在我明白你在做什么。你要做的是使用另一个间接。您希望仅为存储在resultsAr中的那些索引输出结果 将你的for循环改为类似的东西:

int numFound = index;
for(index = 0; index < numFound; index++) {
    cout << left << "   "<<idsAr[resultsAr[index]];
}

这意味着,首先将您找到的索引数(在此上面的while循环中)存储到“numFound”中。然后只迭代0 ... numFound-1,并在访问元素时使用双间接;这意味着查看resultsAr,其中包含index-found,然后使用该索引查找实际数据。