解释频率[到上(new_letter) - 'A']++;
Explaining frequency[toupper(new_letter) - 'A']++;
所以我一直在寻找一个问题的解决方案,这个问题的一个步骤是计算每个唯一字母的频率。我所到之处都有相同的数组增量器。我还没有看到这个表单,也不完全理解它。我试图找到该格式的支持文档,但不知道它到底做了什么。我可以让它工作;然而,我不确定每一个peice代表什么。
Peice我对括号内的内容理解有问题。
frequency[toupper(new_letter) - 'A']++;
其中频率是阵列
例如:计算一个字符在数组中出现的次数?
算法:
- 打开文件/读一封信
- 搜索新字母的字母数组
- 如果存在新字母:增加的频率槽那个字母:frequency[toupper(new_letter(-'A']++;如果新缺少字母,请将其添加到数组中,并将频率设置为1
处理完所有字母后,打印出频率阵列:`
cout<lt;'A+索引<lt;":"<lt;frequency[index]<lt;endl;
任何有帮助的理解都会非常感激。
这只是一个数组。也许让你困惑的是toupper(new_letter) - 'A'
,我们在这里所做的是——我们将字母转换为大写,然后从结果的ASCII码中减去'A'
的ASCII码。因此,结果是范围[0-25]
中的数字。然后,通过将其添加到'A'
中,我们得到原始大写字符。至于算法的其余部分,这只是计数排序。
不幸的是,这个解决方案不是完全可移植的。它假设在执行字符集中,大写字母A-Z具有连续值。也就是说,它假设'A' + 1
等于'B'
,'B' + 1
等于'C'
,依此类推。这不一定是真的,但通常是。
toupper
只是将传递给它的任何字符转换为大写。在给定上述假设的情况下,从中减去'A'
,将计算出从'A'
到给定字母的"距离"。也就是说,如果new_letter
是'A'
,则结果将为0。如果是'b'
,则结果为1。正如您所看到的,使用toupper
的原因是使其独立于new_letter
是大写还是小写。
这个结果(本质上是字母在字母表中的位置(然后用于访问数组。如果frequency
是一个由26个int
组成的数组(每个字母一个(,您将访问相应的int
。然后该int
被递增。
如果它是array
(例如int frequency[26];
(,那么我们不添加到数组中——它已经存在,但值为零。
++
操作员是add one to the thing
的短手操作员,因此
frequency[toupper(new_letter) - 'A']++;
与相同
frequency[toupper(new_letter) - 'A'] = frequency[toupper(new_letter) - 'A'] + 1;
显然,短手版本更容易阅读,因为需要仔细检查两侧是否相同的重复次数要少得多,等等。
索引是toupper(new_letter) - 'A'
——这是通过首先将任何字母变成大写字母来实现的——所以我们不在乎它是a
还是A
、"c"还是C
等,然后减去字母表中第一个字母的值'A'
。这意味着,如果new_letter
是'A'
,则索引为零。如果new_letter
是'G'
,我们使用索引7等。[这假设所有字母都是顺序的,这不是绝对确定的,当然,如果我们谈论英语以外的语言,例如ä、ǹ、宋体或ê等作为语言的一部分,那么这些肯定不会跟随A-Z]
如果你要手工计算一段文字中的字母数量,你可以沿着纸的边缘列出所有字母a-Z,然后在阅读文字时在每个字母旁边放一个点,然后计算点的数量。这做了同样的事情,只是在你进行的过程中保持每个计数。
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 在指针的帮助下,文本文件中单词的频率
- 函数计算用户按下按钮的频率
- 在条件变量中触发错误信号的频率是多少
- 如何在 c++ 中循环中使用频率变化的声音?
- 查找给定范围内最长连续 1 的频率
- 字母 字母频率
- WM_PAINT消息频率:C#(.Net Framework 4.7.2 WinForms)与C++
- C++ "Same Letter"代码无法正常工作
- 创建一个函数,返回给定单词在C++中的频率
- 如何期望通过使用Google Test(Mock)以特定频率调用函数
- 跟踪多个文件中一系列字符的频率
- 用于检测特定频率的直接显示滤波器
- 这句话是什么意思?半 += 字符串(频率[i] / 2, i + 'a');
- 如何使用C++中的频率表计算模式
- 如何计算数字 x 的频率
- 除了使用 clock() 函数之外,有没有更好的方法来以给定的频率生成/发布数据
- 如何在 c++ 中使用 FFT 从 32 位浮点数组中提取频率
- 打印频率和重复的字符串
- 以 mp3 为单位的频率