标题:新手 急急急啊!!! 请大家帮忙看看万分感谢膜拜大佬
只看楼主
一个小罗斯
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-10-11
结帖率:100%
 问题点数:0 回复次数:1 
新手 急急急啊!!! 请大家帮忙看看万分感谢膜拜大佬
新建文件夹 (2).rar (254.48 KB)
大家帮帮忙   新手刚开始学习 这道题做了好几天了弄不出来
实验要求:

1、读取2进制文件billion.bin,形成一个vector<billion>的容器内容。

2、使用for_each遍历vector容器内所有元素,调用find_billion(“China”, 60,70 ),打印出满足要求的所有富翁。

3、上述find_billion是一个函数对象。

实验内容:

billion.bin是struct billion的2进制存储,billion的定义为:
struct billion {   
          int no;
         char name[20];
         char account[6];         
            int age;
         char company[20];
         char country[20];
 };

按照要求做就可以了

[此贴子已经被作者于2019-10-17 18:45编辑过]

搜索更多相关主题的帖子: 要求 struct int int char 要求 struct 内容 char 内容 
2019-10-17 17:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
首先出题者的专业水平不行,存储文件中 struct billion 使用 int 类型,而 int 在标准中只要求其不小于2字节,在已知的编译器中,它可能是2字节、4字节、8字节;除此之外,结构体还有字节对齐问题,不同的编译器包括同一个编译器的不同编译选项都可能影响到它。
其次,出题者在专业知识之外也是个稀里糊涂的混混儿。“调用find_billion(“China”, 38, 45),打印出满足要求的所有富翁。”请问是什么条件,是它小姨子的腰围胸围必须是38和45吗?

程序代码:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;

struct billion
{
    int no;
    char name[20];
    char account[6];
    int age;
    char company[20];
    char country[20];
};

int main( void )
{
    vector<billion> bs;
    {
        ifstream file( "billion.bin" );
        if( !file )
        {
            cerr << "the file open failed.\n";
            return 1;
        }

        for( billion b; file.read((char*)&b,sizeof(b)) && file.gcount()==sizeof(b); )
            bs.push_back( b );
    }

    class find_billion
    {
    public:
        find_billion( const char* country, int minval, int maxval ) : minval_(minval), maxval_(maxval)
        {
            strcpy( country_, country );
        }
        void operator()( const billion& b ) const
        {
            if( b.age>=minval_ && b.age<=maxval_ && strcmp(b.country,country_)==0 ) // 你得问到出题者的意图后,然后修改此句的条件
                cout << b.no << ", " << b.name << ", " << b.account << ", " << b.age << ", " <<  << ", " << b.country << '\n';
        }
    private:
        char country_[20];
        int minval_, maxval_;
    };
    for_each( bs.begin(), bs.end(), find_billion("China",60,70) );

    return 0;
}

2019-10-18 08:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497321-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.880213 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved