c - 让一个字符在数组中重复出现多次并计算得分。

标签 c arrays

**这是家庭作业

我有一个项目正在进行(拼字游戏),我有几个问题。在拼字游戏中,某些字母只能出现一定次数。例如:E 出现了 12 次,A 出现了 9 次,等等。我的第一个问题是如何在不创建巨大数组的情况下实现这一点。所以而不是

 char arr['A' , 'A' , 'A'.....]

我该如何输入

char arr['A' , 'B' , 'C'] 

(将每个字母键入一次,然后以某种方式为每个字母设置一个频率。

我的第二个问题是如何为该程序创建一个分数计数器。在拼字游戏中,有些字母具有分数值。我认为一种方法是循环大量 switch 语句,但我想知道是否有更有效的方法来做到这一点。

我不需要为我编写任何代码,因为这会影响学习编程的整体意义,但我会感激示例,甚至是创建字母频率和分数计算器的更有效方法的解释。我认为,如果我尽早弄清楚如何有效地完成这些事情,这会对我将来有所帮助。

感谢您的帮助!

此代码必须用 C 编写

最佳答案

好吧,如果您考虑使用 ascii 值,第一个答案似乎很简单。

如果我说使用 ASCII 值作为数组的索引怎么办?有什么想法吗?

等等,我会再提示一下。 A = 65...这意味着您可以使用数组中的索引值 65 轻松映射到 A

现在你可能想知道为此你需要一个大数组吗?没有。只需适当使用偏移即可。所以现在你认为 65->A->0 然后 66->B->1

<小时/>

第二个问题:

是的,你也可以在这里使用数组以同样的方式。如果您需要存储更多数据而不仅仅是分数,则可以使用结构数组。这将使您可以将其他数据与分数一起存储。

<小时/>

有什么可以帮助你的吗?

您只需在正确位置增加频率数组即可存储字符出现的频率。

设计代码,以便您了解分数的存储位置以及处理方式。尝试将分数保存在一个数组和/或结构数组中,并在需要时对其进行操作。

要获得良好的设计理念,您可以挑战自己,将游戏逻辑和游戏玩法存储在不同的模块中,并相应地与它们进行交互。

澄清

假设这是一个字符数组。

char s[] = "ABCD";
for(int i = 0; i<4;i++)
  Frequency[s[i]-'A']++;

这样我们基本上将 ascii 值转换为数组的索引。在这里,我没有直接使用 65,而是减去了该值,以便每个频率都从索引位置 0 开始存储。

关于c - 让一个字符在数组中重复出现多次并计算得分。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823832/

相关文章:

c++ - 我无法使枚举正常工作

c++ - 无限的 typedef 函数指针继承可能吗?

javascript - 使用原型(prototype)时如何引用父对象?

c++ - 关于失去/重新获得焦点的 GTKMM/C++ 窗口事件?

c - 主要在 input.h 中看不到我的函数

c - C 中的左值、右值和数组初始化

c++ - 下标值不是数组、指针或 vector ,C++

javascript - ref 未引用数组中的正确项目

c - 油嘴滑舌:g_ascii_dtostr 不精确?

ios - 使用 Generic 检查是否存在 Swift Array 项目