如何处理大量数据 - 周期表和元素

时间:2015-01-13 19:43:17

标签: javascript c++

我想使用大量数据进行操作 - 包含元素和周期表。 首先让程序返回给定元素的原子量。你会怎么做?

通过手动创建包含118个元素的表并在tab1[element][]中搜索给定元素,然后通过迭代最多118次传递tab1[][atomic_weight]

或者也许不是在程序表中创建一个带有数据的文件?语言是C ++和JS(在浏览器-JS中,您可以处理本地文件,但只能使用例如AJAX的服务器,是吗?)。

稍后它将不得不执行更高级的计算。当然数据库会有用,但不使用它?

2 个答案:

答案 0 :(得分:2)

以下是实现此目标的步骤:

  1. 确定您希望运行应用程序的目标(网络,本地计算机......)
  2. 根据#1 (买书)
  3. 学习C ++或Javascript
  4. 回到Stack Overflow上的这个问题
  5. 意识到这对Stack Overflow来说不是一个好问题
  6. 提示您可以回答自己的问题的提示:

    对您设计的对象使用单维数组。这就是面向对象编程如此之大的一个原因。它可以在以后轻松扩展。

    为什么是单维数组?

    1. 118即使您经历过每个元素,元素也会对计算机产生影响。无论如何你必须触及每一个,所以为什么要比单维数组更复杂。
    2. 您知道数据结构有多大,而且不会发生变化
    3. 您可以根据原子序数
    4. 在O(1)时间内访问表格中任何位置的元素
    5. 组和句点可以通过简单的数学推导出来,因此也可以在恒定的时间内推断出来。
    6. jist:
      你不是在愚弄我。你还有很长的路要走。学习先编程。

答案 1 :(得分:0)

我建议将所有元素信息放入结构中 例如:

struct Element_Attributes
{
  const char * symbol;
  unsigned int weight;
};

包含元素的数据结构会有所不同,具体取决于您希望如何访问它们。

由于元素周期表上有列和行,因此矩阵是合适的。矩阵中有空白区域,因此您的程序必须处理矩阵中的{wasted}空白区域。

另一个想法是拥有行和列链接。行链接将指向行中的下一个元素。列链接将指向列中的下一个元素。这将比矩阵具有更慢的访问时间,但不会有空槽(链接)。

此外,除非有人(用户)说它太慢,否则不要担心你的节目的表现。其他实体通常比执行循环慢。其中一些实体是文件I / O和用户I / O.

编辑1 - 实施
该表有33列,有7行:

#define MAX_ROWS 7
#define MAX_COLUMNS 33
Element_Attributes Periodic_Table[MAX_ROWS][MAX_COLUMNS];

手动,可以创建一个元素并将其添加到表中:

Element_Attributes hydrogen = {"H", 1};
Periodic_Table[0][0] = hydrogen;

该表也可以静态定义(声明时)。这留给读者练习。

搜索:

  bool element_found = false;
  for (unsigned int row = 0; row < MAX_ROWS; ++row)
  {
    for (unsigned int column = 0; column < MAX_COLUMNS; ++column)
    {
      const std::string element_symbol = Periodic_Table[row][column].symbol;
      if (element_symbol == "K") // Search for Potassium
      {
        element_found = true;
        break;
      }
    }
    if (element_found)
    {
       break;
    }
  }