C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了排序数组/文件I / O C.大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否有人可以帮助我排除这个数组,我对如何在这项目中完全实现它感到很遗憾.因为它是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 @R_379_10586@lCount(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);
  }
  @R_379_10586@lCount(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,int list[])
  { 
  while (ch != '.')
  {
  characterCount (ch,list);
  intext.get(ch);
  }
  }
  //displays data
  void @R_379_10586@lCount(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循环.

大佬总结

以上是大佬教程为你收集整理的排序数组/文件I / O C.全部内容,希望文章能够帮你解决排序数组/文件I / O C.所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。