在字符串中计数字母出现数量

issue counting number of letter occurrences in string

本文关键字:数字 字符串      更新时间:2023-10-16

当我输入以字母'a'开头的字符串时,程序无法检查该字母并将其排除。如果我输入一个" A"的字符串只是在字符串中,它将检查。

这是一个完整的问题:

编写一个程序,该程序将读取文本行并输出文本中所有字母的列表以及每个字母在行中发生的次数。结束线条,并用作前哨值或划界字符的时期。

该字母应按以下顺序列出:最常见的字母,下一个最常见的字母等等。

使用两个阵列,一个持有字母,一个握住整数。您可以假设输入使用所有小写字母。例如,输入do bo 。应该产生类似于以下的输出:

发生的字母数字o 3b 2D 1E 1

注意:您可以修改书籍中选择排序算法的实现,以按降序对数组进行排序。您可以在程序中使用字符串类型或C-string类型。

代码:

 #include<iostream>
 #include<string>
 using namespace std;
 void sort(char letters[],int letter_count[])
  {
     for(int i=0; i<26; i++)
      {
        int max = i;
        for(int j=i; j<26; j++)
        {
           if(letter_count[j] > letter_count[max]) max = j;
        }
        int temp = letter_count[i];
        letter_count[i] = letter_count[max];
        letter_count[max] = temp;
         char local = letters[i];
         letters[i] = letters[max];
         letters[max] = letters[i];
         }
  }
 int main()
 { 
   string str;
   char letters[26];
   int letter_count[26] = {0 };
   cout <<"Enter a line of text :";
   getline(cin,str);
   for(int i=0; i<str.length(); i++)
   letter_count[str[i]-'a']++;
   for(int i=0; i<26; i++)
   letters[i] = static_cast<char> ('a'+i);
   sort(letters, letter_count);

   cout <<"Letter Numbers of Occurrence" << endl;
   for(int i=0; i<26; i++) {
          if(letter_count[i]!=0)
          cout << letters[i] << "        " << letter_count[i]<<endl;
          }
    return 0;
} 

在第20行中发现的问题,您尝试将letters[i]letters[max]交换。那条线应该是

letters[max] = local;