gpt4 book ai didi

c++ - 排序数组/文件 I/O C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:53 25 4
gpt4 key购买 nike

我想知道是否有人可以帮助我对这个数组进行排序,我对如何在这个项目中准确地实现它有点迷茫。因为它是 HW 不要透露整个答案,而是将我推向正确的方向。项目如下:编写一个程序,读取一行文本并输出文本中出现的所有字母的列表以及每个字母在该行中出现的次数。以用作标记值的句点结束该行。字母应按以下顺序使用:从最高到最低。假设输入全部使用小写字母。几个问题。1. 我对数组进行排序的方式是否正确?2. 在将排序数组放入我的代码之前,当代码编译时出现空白屏幕。有什么办法可以解决这个问题?

如果写得不好,我们深表歉意,在此先感谢您的帮助!

inlcude <iostream>
#inlcude <fstream>
using namespace std;
void initialize(int list[]);
void Sort(int list[],int& num);
void characterCount(char ch, int list[]);
void readText(ifstream& intext, char& ch, int list[]);
void totalCount(int list[]);
int main()
{
int index,letterCount[26];
char ch;
ifstream inFile;

infile.open("C:/temp/Data_Chapter_7_8.txt");

if (!inFile)
{
cout << " Cannot open file." <<endl;
}
initialize(letterCount);
infile.get(ch);

while (inFile)
{
int index;
readText(inFile,ch,letterCount)
index++;
inFile.get(ch);
}
totalCount(index, letterCount);

inFile.close();

system("PAUSE");
return 0;
}
//initializes array letterCount to 0
void initialize(int list[])
{
for(int x = 0;x<26;x++)
list[x] = 0
}
//increments the letter count. Makes sure counting letters.
void characterCount (char ch, int list[])
{
int index;
ch = tolower(ch);
if(static_cast<int>(ch)>=97&&(static_cast<int>(ch)<=122))
letterCount[static_cast<int>(ch)-97]++;
}
void readText(ifstream& intext, char& ch, int list[])
{
while (ch != '.')
{
characterCount (ch,list);
intext.get(ch);
}
}
//displays data
void totalCount(int list[])
{
for(int x=0;x<26;x++)
if(letterCount[x]>0)
cout<<static_cast<char>(x+97)<<" "<<letterCount[x]<<endl;
}
void Sort(int list[],int& num)
{
int i,j,flag = 1;
int temp;
int numLength = num.length();
for (i=1;(i<=numLength)&&flag; i++)
{
flag = 0;
for (j=o; j<(numLength-1);j++0
{
if(num[j+1]>num[j])
{
temp = num[j];
num[j] = num[j+1];
num[j+1]=temp;
flag = 1;
}
}
}
return;
}

最佳答案

我们可以简单地跟踪每个字母出现的次数,而不是使用困惑的冒泡排序和其他有趣的东西,因为只有 26 种可能性。这应该会产生更简洁(并且更快)的代码:

int numOccur[26];
...
for (int i = 0; i < numCh; i ++)
numOccur[letters[i] - 'a'] ++;
for (i = 25; i >= 0; i --)
if (i > 0)
cout<<static_cast<char>(i+97)<<" "<<numOccur[i]<<endl;

当然,您应该用适当的文件读取循环替换 for 循环。

关于c++ - 排序数组/文件 I/O C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13427168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com