显示结构C++成员的相同值

Display same values of a member of structure C++

本文关键字:成员 结构 C++ 显示      更新时间:2023-10-16

我有一个几何图形列表,其中包含:图形和体积的代码。例如:

001 213.1

002 414.7

003 718.3

004 414.7

005 718.3

006 114.5

我需要

找到重复的音量值并显示它,所以在出口处我需要得到:

002 414.7

004 414.7

003 718.3

005 718.3

请帮助我

struct Sfere
    {
      char codsf[5];
      float volum;
    } sf[100];

让我们再试一次:

static const unsigned int ID_CAPACITY = 256;
static const unsigned int MAX_UNIQUE_VOLUMES = 512;
struct Record
{
    double volume;
    int    ids[ID_CAPACITY];
    unsigned int ids_size;
};
Record database[MAX_UNIQUE_VOLUMES];
int main()
{
    double       volume;
    int          id;
    static const double epsilon = 1e-06;
    unsigned int database_size = 0U;
    std::ifstream input_file("data.txt");
    while (input_file >> id >> volume)
    {
       bool volume_is_duplicate(false);
       // Find a duplicate volume
       for (unsigned int i = 0U; i < database_size; ++i)
       {
           const double volume_from_database = database[i].volume;
           const double diff = std::abs(volume - volume_from_database);
           if (diff < epsilon)
           {
               unsigned int id_index = database[i].ids_size;
               database[i].ids[id_index] = id;
               ++(database[i].ids_size);
               duplicate_volume = true;
               break;
           }
       }
       if (!duplicate_volume)
       {
           Record r;
           r.volume = volume;
           r.ids[0] = id;
           r.ids_size = 1;
           database[database_size] = r;
           ++database;
        }
    }
    std::cout << "nnPaused. Press ENTER to continue.n";
    std::cin.ignore(100000, 'n');
    return 0;
}  

在上面的程序中,记录作为两个单独的变量读入。 在数据库中搜索等效卷。 如果存在等效卷,则新值将追加到 ID 容器。 如果卷是唯一的,则记录将追加到数据库中。

数据库的打印留作OP的练习(以及边界/范围检查(。

这里的诀窍是按卷而不是按 ID 组织数据库。 每个数据库记录将包含等效卷的 ID:

  vol.    IDs  
+-------+-----+  
| 213.1 | 001 |
+-------+-----+-----+  
| 414.7 | 002 | 004 |  
+-------+-----+-----+  
| 718.3 | 003 | 005 |  
+-------+-----+-----+  
| 114.5 | 006 |  
+-------+-----+