我知道您应该创建一个结构。但这是一个让人大口大笑的地方。...
问题:
”我们已经得到一个化学式文件,特别是碳氢化合物。碳氢化合物仅包含氢和碳原子。
文件的每一行均包含化学物质的名称,后跟其分子式,其形式为: C#H# 其中两个#分别代表碳(C)和氢(H)原子数。 (文件中没有名称包含空格。)
因为具有相同分子式的氢碳化合物可以多种结构形式出现,并且每种形式都具有不同的名称,所以同一分子式在文件中可能会多次出现,且每次具有不同的名称。 (例如:丁烷和2-甲基丙烷的分子式均为C4H10。)
我们的目标是为每个独特的分子式以及该分子式的所有名称保留一个条目。阅读完所有内容后,我们将根据碳和氢对向量进行排序,最后显示排序后的向量中的所有条目。
每个分子式将保留在具有三个字段的结构中:
公式的名称。请注意,这是名称的集合 碳原子数 氢原子数 我们将所有这些结构存储在向量中。
一个例子
假设这是文件: 正丁烷C4H10 丙炔C3H3 1,3-丁二炔C4H2 己烷C6H14 丁烷C4H10 异丁烷C4H10 戊烷C5H12
您的程序应存储这五个条目,然后显示:
C3H3丙炔 C4H2 1,3-丁二炔 C4H10正丁烷丁烷异丁烷 C5H12戊烷 C6H14己烷
该集合已按碳数排序,然后按氢数排序。我假设您从数据结构中知道如何编写一些简单的排序算法,例如冒泡排序,选择排序或插入排序。 (是的,这些通常以二次时间运行,但是我们不希望您花费大量时间来实现更有效的排序。)编写一个将传递给您的集合并对其进行修改以便对其进行排序的函数。>
一如既往,编写良好的干净代码。是什么意思?
充分利用函数使代码更具可读性。 一切都好命名。 没有长线。多久?超过80个字符。 现在,您已经知道了函数原型(如果您的讲义部分没有介绍,请在笔记中查找或在实验室中询问),每个函数除main之外应首先有一个,然后是main的定义,然后是这些功能的定义。
为了鼓励良好的设计(如果发现编写不佳的程序,您不必重写程序),让我概述一下主要功能:
定义流和向量的变量。不,不要在这里打开视频流。 调用一个函数以打开流。它将要求用户输入文件名。如果文件名失败,请重复请求新的文件名,直到成功。如果打开流对象失败,则需要在尝试再次打开流之前在流上调用clear()方法。到此功能完成时,流应该已打开。它不需要返回任何东西。 调用一个函数以填充流中的向量。传递矢量和流。不要返回任何东西。 调用一个函数对向量进行排序。 调用一个函数来显示向量。 除了main直接调用的功能外,它还有其他一些功能将使整体代码更易于阅读
用于将名称,碳数和氢数信息插入向量的功能。 查找与新条目的氢和碳数匹配的公式对象的位置的函数。如果向量中还没有这样的甲醛输入,它将必须返回一个合适的值。显然,该功能将由上一个项目符号中的一个调用。”
答案 0 :(得分:0)
您似乎对编程有点陌生,所以我只想确保您了解术语函数,方法和过程之间确实没有区别。它们都是大型程序中的一个可调用子程序。
A function to insert the information for a name
在问题描述中说,您应该使用函数插入目标信息,因此,是的,您将使用设计的插入方法。