在字符串中计数字母出现数量
issue counting number of letter occurrences in string
当我输入以字母'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;
相关文章:
- 生成随机长度的数字字符串
- 如何在c ++中将大数字字符串转换为整数?
- 将非数字字符串存储为二进制整数
- Flex 词法分析器规则,对包含连字符和斜杠的字母数字字符串具有积极的前瞻断言
- 如何在C++中将数字字符串拆分为数组
- 总结数字字符串输入的最佳方法
- 如何将输入的数字字符串转换为 int 数组
- 如何获得两个数字字符串的总和-C
- 使用 C++ 替换 txt 文件中的文本数字字符串
- 如何有效地将数字字符串值分配给整数
- String Stream in C++ 解析单词和数字字符串
- c++将大型数字字符串映射到数字字符串范围
- 获取用数字字符串表示的树中的所有直接父级/子级
- 如何从 char 数组中提取数字字符串成员
- 比较两个字母数字字符串
- 有没有一种方法可以设置浮点变量=某个数字*字符串中的变量
- 使用矢量对字母数字字符串进行排序
- 正在分析未知类型的数字字符串
- 如何在c++中从一个科学数字字符串中修剪后面的零
- 无法将字符串数组中的数字字符串转换为浮点值